HNHacker News
TopNewBestAskShowJobs

KennedyRichard

12 karma · joined November 8, 2024

Creator and maintainer of open-source projects. Love people, tech and art.

https://github.com/KennedyRichard https://github.com/IndiePython

submissionscomments
KennedyRichard··on Nodezator is a generalist Python node editor
Creator/maintainer here.

While I'm always glad to take inspiration from other projects and did research a few of them before creating mine, ComfyUI wasn't among the ones I researched.

In fact, I'm not sure it even existed at the time. I started making Nodezator at the beginning of 2019 and released it on June 2022, whereas the first tagged version of ComfyUI seems to be from May 2023, according to their repo.

I took a lot of inspiration from Blender though, and in fact reproduced many of its features/behaviours.

KennedyRichard··on Nodezator is a generalist Python node editor
Creator/maintainer here!

December last year a user managed to run an instance on browser, as can be seen here: https://sefgit.github.io/nodezator/build/web/ (you must wait a few seconds for it to load, them again after the black screen, at least for me, but it works)

Corresponding repo: https://github.com/sefgit/nodezator/tree/nodezator-pygbag-de...

There are no official plans to bring and support Nodezator on the web for now, given how much Nodezator still has to evolve and implement. However, initiatives like that are very interesting and may indeed inspire and motivate us to pursue the possibility in the future.

KennedyRichard··on Nodezator is a generalist Python node editor
DearPyGUI with its imnodes extension seems to be a good candidate as well.

Also, not a node editor, but NetworkX also has ways to represent and operate on graph data.

KennedyRichard··on Nodezator is a generalist Python node editor
Creator/maintainer here. Thank you for the feedback, it is much, genuinely appreciated.

Nodezator has a long way to go. I only picked Python seriously back in 2017. At the time, type safety was in its infancy and in my experience most Python learning resources didn't even mention type hints, much less static typing.

Then I started making Nodezator in 2019, but only managed to launch it in 2022 due to a health-related hiatus.

Even so, I already have plans to greatly improve type safety in the future, with a related announcement to be made in a week or so.

Nodezator is a serious project, but since its development depends mostly on one person (me), its progress is relatively slow. Despite that, I manage to publish a couple big releases every year. Slowly but surely, though, Nodezator is evolving, mainly due to continued feedback from the community and userbase. So again, I thank you for the feedback.

KennedyRichard··on Nodezator is a generalist Python node editor
Thank you! Creator/maintainer here! My favorite is the ball toss one!

I'm happy I also included the more serious one (the one which is just an assisting line), so people can switch to it when they need to focus more on the work, though.

After I announced the feature, back when it was just on a dev branch, a lot of people either implemented the feature on their apps or requested the feature from the devs of their favorite projects.

That's the nice thing about open-source projects, that is, that we can all share knowledge/solutions.

I even wanted to submit an addon to Blender 3D, one of my favorite OSS projects, but unfortunately its more recent versions don't even launch on my 4Gb RAM machine (which is understandable considering how the scope of the project grew in the past years).

Socket proximity detection, regardless of the graphics used, should be available in every node interface, cause moving the mouse precisely between sockets to connect them in a single motion can be annoying, specially considering the countless time we must repeat such action in a single node editing session. Increasing the size of the sockets to help this isn't a good solution either, because it would take precious space from the nodes, which is better left for widgets and other useful controls.

KennedyRichard··on Nodezator is a generalist Python node editor
Creator/maintainer of Nodezator here!

You are completely right. This very week someone on Discord presented a relatively simple script he came up (with help from AI) that could do the job relatively well.

As the creator/maintainer of the app, I always appreciate this kind of feedback.

In this specific case, as I said to the person that presented the script, I did think about the possibility in the past, but didn't put time into it because at the time there were a few corner cases that came to mind.

Also, as someone with insight into the many different parts that comprise Nodezator, it is not enough that a existing/pointed solution works, I must also think about ways in which these solutions integrate with the rest of the app, in order for everything to play well together.

For instance, that is not the only improvement I'm planning for the node definitions. I have several ideas, both mine or shared by other users, for improving the node definitions. So I have to plan everything carefully before deciding on anything to avoid redoing things.

Again, thank you for pointing that out though!

KennedyRichard··on Nodezator is a generalist Python node editor
Hello, creator/maintainer of Nodezator here. Nodezator is not a framework, but an application where you can load, connect and execute your Python functions as a graph. You can also export your graphs back as Python code. Even so, it seems it is not what you are looking for.

Unfortunately I don't have much experience with other similar projects. I did research many of them before deciding to make my own in case one existed that already met my needs. Didn't find what I wanted, which is why I made Nodezator.

However, this doesn't mean what I found was bad. Quite the contrary. There are a few interesting node editor projects in the Python ecosystem, each awesome in their own particular way. Unfortunately, as I said, I can't say much about them, and some of them don't seem to be maintained often. Even so, I'll mention them here in case you want to take a look.

Ryven - always come up in node editor discussions PyFlow - another one that is mentioned often DearPyGui - python GUI framework built on top of imgui, includes facilities for node editing interfaces (I find their nodes very charming) NetworkX - not a node editor framework, but a lib with lots of utilities for representing and operating on graphs

KennedyRichard··on Nodezator is a generalist Python node editor
Hello, everyone! Creator and maintainer of Nodezator here!

Oh, so this post is the reason why the traffic for Nodezator's GitHub repo has been spiking today. I already replied to a few questions here, but I won't be able to do many more today. I'll try to answer all of them over the time though, so ask as much as you'd like. Thank you for taking a look at my tool and for all the feedback provided, it is much, genuinely appreciated.

KennedyRichard··on Nodezator is a generalist Python node editor
Hello, creator and maintainer of Nodezator here.

> seems like there’s also a general feeling that this is easier than learning how to code, and I guess my question is… is it?

IMHO, node-based programming will never and should never replace text-based programming. Neither is in fact a replacement for the other. There are problems that benefit more from one approach and other problems that benefit more from the other one. There are also many problems that benefit from the cooperation between both approaches. There's even problems for which we should use neither, for instance, when a spreadsheet would suffice.

Unfortunately, many node editor projects sell/promote their tools as silver bullets that will solve all people's problems and replace all their tooling. I think this attitude prevented a more wide adoption of node editors and harmed their reputation a lot. It also prevented a lot of experimentation with them that could have led to more established and efficient workflows.

In the Nodezator project, it is quite the contrary. I only recommend the usage of a node editor, including my own, for specific problems for which node editors are better suited.

Which kind of problems are that? Well, since node editors are still not used much as tools for general computing, we only know about specific domains, like media compositing, for instance. There's much to be researched and experimented still.

I myself use Nodezator for generating position animation data for a 2D game as well as images that I use in video editing workflows in other apps. This year I've been very busy with development work so I didn't do much research, but since last year I've been experimenting with a lot of different tasks and documented my findings a bit. I'm only scratching the surface though. Experimented with SVG image generation and even parametric generation of 3D models. If you want to know more, you can check this thread on twitter/x: https://x.com/KennedyRichard/status/1747605744361300126

I'd also like to experiment more with workflows for non-programmers in the future (for instance, where someone designs a set of nodes and only teaches a non-programmer how to combine them for various tasks), although I already expect node editors to succeed in various domains regarding this (but as I said before, never replace text-based programming). The reason is that it already is used like that with success in other software. For instance, in Blender 3D, where non-programmers use their node editor for many different 3D-related workflows.

KennedyRichard··on Nodezator is a generalist Python node editor
Hello, creator and maintainer of Nodezator here. I love Blender. Used it a lot until 2013. The only reason I haven't used it in the past few years is because I'm not involved with anything that requires me to work with 3D design. In addition to that, I found out recently that Blender doesn't launch anymore on my 4Gb RAM machine.

Blender is the reason why I created Nodezator, that is, because I wanted to use Blender's node editor for general computing as well, not only for 3D related workflows. I even bought Bartek Skorupa's DVD course on compositing with Blender, remember that?

Certainly there must be possible in theory to fork Blender's node-related internals into a standalone app. However, I very much doubt that'd be a trivial task, much less for someone in my situation at the time. When I started making Nodezator I had only been using Python for 2 years and knew nothing of C/C++.

According to Blender's developer website, Python is used for "interface layout, simple tools, key-maps, presets and add-ons", while GLSL is used for shaders and all the rest of the code is C++ (and a bit of C). There's also the size of Blender's repo (1GB + 979MB of LFS storage). With 1GB of source, even with someone skilled enough to disentangle the node editor bits from Blender's source, I believe it would still take a lot of time and probably not an endeavour for a single person. I think that is the reason why no one did it before.

That'd be awesome though!

KennedyRichard··on Diagram as Code
Not a diagram tool, but can be used like one, since it converts Python functions into nodes that you can connect to each other and export the resulting layout as images (PNG, SVG, SVG inside an HTML page) or as plain Python code: https://github.com/IndiePython/nodezator

full disclosure: I'm the creator and maintainer of the tool (but this is no advertising, as I released it to the public domain since day 1)