Kudos #103
Replies: 3 comments 2 replies
-
A further critique: I will never visit a discord server again, if I can possibly avoid it. Making discord your first source of live help is a terrible thing to do. Discord is invasive of the system where it is installed, and of the privacy of the user using it. Some users may be fine with that, but I never will. Your first and highest quality level of support should always speak to the lowest common denominator. Not to put too fine a point on it, but if you can code python, you can probably read, ergo, documentation is best read. All other forms of documentation are supportive or complimentary of that most basic form. Moving on Your documentation includes many fine examples, all of which present an interface to permit the copying of source code and/or configurations directly from the documentation. Unfortunately, these do not work; they appear to be images pasted into the manual, interface and all and do not, in fact, allow one to copy the text. This leads to frustration and a need to seek help beyond the first-level documentation, and in the very first element of the turtorial. I managed to work it out; I simply typed it in. Short story: after trying it out a bit, I seriously hope your code does not follow the pattern of your documentation. Finally The user's manual seems to go the distance with respect to clearly explaining how to create a custom node. But the last detail or two are replaced by a bit of hand-wavyness and an exhortation to 'visit the discord server' if you need further help. I do not spend time and energy on discord, and do not wish to depend on the social generosity of a project's users in order to support the product. If the product is well produced, and it's documentation well edited and composed, then I should have no difficulty in supporting operation of the software myself, in isolation from any developer or user community, as I do with most of the software I use, which includes several distributions of linux, linux toolchains, and the python ecosystem, with which I have generated considerable income over the last decade or so. In summary: I'm not really in need of a project like this. I do see how it can be very useful, however, and I have been keeping an eye out for such a project since I've been using python. If I find one I think looks good, I wouldn't mind contributing; indeed I'd love to contribute to such a project, but I don't have time to spend chasing it down like a rabbit to do so. I don't expect to get much traction here; I'll probably uninstall it from my system and continue to keep watching for a similar project with a more professional footing. I don't expect there is a way I'll get through my first node without some help from somewhere, and as I've mentioned, I'll not be getting on discord. |
Beta Was this translation helpful? Give feedback.
-
Mr. Stallings, First of all, thank you for your opening kind words as well as the honest detailed analysis that followed. I'll certainly take a lot of this into account in future planning and development work. Allow me to address a few of your concerns.
I'm actually not a fan of Discord either, but use it for the benefit of people from the userbase of my projects. As an open source maintainer, I try to listen to my userbase as much as possible. This sometimes means being present where they are, rather than having them come to where I'd like us to meet online. This is why people can reach me through many different channels/networks, including email, social media and GitHub. It doesn't mean that each one of these channels are best suited (or even suitable at all) for the task/communication at hand. Discord in particular is a chat service, which makes communication in it inherently ineffective for dealing with long term issues and sharing long lasting knowledge. It is ephemeral and fast-paced which is particularly bad suited for coordinating efforts and communication in open-source projects. However, as a sort of "help desk", it is kinda useful, and I did manage to successfully help people via Discord several times in the past. Again, I'm not a fan of Discord, but it is popular these days, people seem to expect projects to have one and although reluctantly, I must admit it is handy for troubleshooting quick problems that require some quick back-and-forth. That's actually the only usage for which I recommend Discord. Any other kind of communication I pretty much prefer carried here on GitHub discussions/issues/PRs. A forum format is much better suited for ongoing conversations, deep discussions, sharing, documenting and referencing knowledge. Even so, I never set any rules regarding that in this community. I rather just ask people to repost something here on GitHub if I think the content is not suited for Discord or any other channel.
First of all, I apologize for the inconvenience. This is not a limitation on my end, but rather on the underlying library used for the app, pygame-ce. It is a Python binding to the multimedia library SDL2, which is made for games and such projects. On top of that, pygame-ce has yet to write APIs to many of the services already available in SDL2. This is why clipboard support is still primitive. It actually works fine on my end, but other systems may experience bugs or unresponsiveness. I also don't have access to all systems/configurations, so I mostly rely on feedback from users when platform-specific is employed. It was actually the first time someone reported to me those didn't work. Even so, it is not my intention to use any of that as an excuse. So again, I apologize. Although I didn't make any official announcements yet, in the future I intend to also publish a version of Nodezator based on an actual GUI framework (I should make an announcement in a week or so), in order to provide users with all services expected from a full-fledged desktop application. For now, I intend to submit another patch to Nodezator to offer at least the option to save that code on disk, so people without access to the clipboard functionality don't have to type everything by hand. I'll also improve feedback on clicking the button, since as you aptly pointed out it does behave like an static image.
You are right. A project should be self-documented and provide enough material for users to be able to progress in its usage and troubleshoot their own problems. That is actually my goal, one towards which I strive constantly. The project itself has evolved much in that direction since its launch back in 2022. However, there are a few challenges this project faces that prevents it from reaching that status immediately. Of course, I intend to tackle each of these challenges over time until I reach the desired destination. The first challenge is that node editors don't have established, well-known designs or standards to be followed. You see, unlike word processors or text editors and other more established software, each node editor kind of does its own thing. There isn't many conventions like you find in other kinds of software. It means I'm always dependent on user-feedback, a lot of research (for which there is almost no written material) and even a bit of trial and error. In other words, like all node editors, Nodezator is a moving, ever-evolving design. The challenge for Nodezator is even greater than for most other node editor projects, cause whereas they often target specific domains/problems, Nodezator aims to be a visual representation of a programming language. Nodezator even has the very rare feature among node editors (and maybe even other visual tools) of allowing the node layouts to be exported as plain source code. Maybe I shouldn't put a Discord link as the first channel by which to reach me for help on the manual, as you pointed out, but use GitHub discussions, etc., instead. Regardless of the channel used though, the message is there so that people know that they can count on my for help if they need, not as an excuse for not doing my job of guaranteeing people have all the learning resources needed to operate the software without problems. I'll try to make that more clear the next time I review the wording used. The other challenge is that despite having created and published a complex project, I'm self-taught and relatively new to programming. I only picked Python seriously back in 2017 (7 years ago), then started making this node editor in 2019, but could only launch it in 2022, due to a health-related hiatus. Prior to that I only did a bit of Javascript and PHP, and even so 100% of my usage was for web (for personal websites/blogs) and 95% of my coding practice consisted in pasting code found in the internet and only changing values/connecting loose ends, much like a spreadsheet. I'm not belittling my skills, though. Nor using the little time I have as a programmer as an excuse to underperform or for my shortcomings. I studied and practiced a lot since I picked Python seriously in 2017. It is just that as an open source maintainer that publishes software that many people use it is my duty to be transparent and upfront about my abilities so people can set their expectations appropriately. I did manage to create, publish and maintain a node editor with a couple big releases every year after all, so I'm confident about my skills. It is just that on top of node editors being difficult to design due to lack of standards/expectations, difficult to research due to lack of written material, documentation, etc., I'm also evolving along with the project. Finally, another challenge is that the precious funds I get from this project, for which I'm much grateful to my wonderful patrons, are still not enough to support my full-time work on my open-source projects. Additionally, Nodezator is just one of my open-source projects. I have to split my time between other projects as well.
Again, thank you for your honest and detailed feedback (and for acknowledging its usefulness despite it not being suited to you). As I said, I'll take it all into account. It is not only appreciated, but very, very useful as well, as it is the kind of thing that helps the project evolve. I regret that you had such bad first experience. I hope some time in the future you find the time and will to check it again. Hopefully, by then, it will be much improved, with help from this feedback of yours at that. Just to give you a glimpse of the importance of this project IMHO: even with its shortcomings, it already has a small but ever-growing userbase, better download stats than its competitors (you can search public databases for pypi.org download stats and compare the download numbers of other Python node editor projects, or if you wish, I can provide you with a link) and immeasurable potential and value for the Python community in general (it not only uses Python, it is a visual representation of the language and outputs Python as well). In addition to that, it is a free tool dedicated to the public domain, which means even though I created it, I'm not even its owner anymore, but rather all people are. With all due respect to businesses in general and free market practices, if such tool had been created by a big corporation, it would be sold to people as a service with a multi-tiered subscription model and the customer service would probably be outsourced from a third-party, rather than having the creator talk to you. Again, thank you for your attention and feedback. Also, please, if you have even more feedback, positive or negative, I'd genuinely love to hear more. It is both my duty and pleasure as an open source maintainer. Have a great weekend! Peace |
Beta Was this translation helpful? Give feedback.
-
Thanks, Kennedy! Again, an excellent and energetic response :D
Your concerns about the clock app are noted; though I have implemented the
algorithm in other languages, including one lua script used in an
interpreter embedded in a unity app. Perhaps I was getting ahead of myself
anyway, as it is quite true I have no experience with particularly
nodezator.
I will take you up on the suggestion to learn the basic root/container node
structure and usage, as I'm certain that doing anything at all with it
would be impossible otherwise.
Thanks for reaching out to me with an entry point into the documentation, I
still have some other things ongoing that will prevent me from attending it
immediately, but it is in the stack, so to speak.
No doubt I will be in touch.
Now it is my turn to offer you best wishes for the weekend!
Cheers,
James
…On Thu, Jan 9, 2025 at 1:33 PM Kennedy Richard ***@***.***> wrote:
I have some experience with very large opensource projects, and some of
that experience very much informs what might seem to be my low expectations
and poor attitude.
I don't think your attitude was poor though, so don't worry.
Your first experience with Nodezator was bad and you expressed it clearly
and conveyed the reasons, keeping the discussion civil throughout your
whole reply. Many maintainers might not have liked your evaluation if it
were directed to their tool, but I don't usually take things personally,
specially in your case where you conveyed all the reasons for your
disappointment/frustration.
My reply was long because it was needed to answer to your frustrations and
set the right expectations about this project. I also like software
development and being an open-source maintainer a lot, so if you check
other discussions in this project you'll realized my replies are usually
long.
It's just that I've learned to not expect much in terms of support from
such projects, and it is refreshing to see you respond as you have.
Unfortunately, that's a fair expectation. A lot of projects are abandoned
or poorly maintained and have maintainers with poor attitudes. I myself had
problems in the past with maintainers of other projects I use, so I know
the feeling.
As a maintainer, no one has ever complained about my attitude, but like
anyone else I do have other shortcomings, like the fact that I cannot tend
to all the issues that pop up in a timely manner, given my limited
resources. Even so I try as best as I can.
And by the way, sorry for taking so long to reply to this last reply of
yours. I was very busy for most of December and also took a preplanned
15-days break at the turn of the year (I take a break like that once every
06 months). Now I'm back and well rested.
I went to school for what was then called Computer Science, on some of the
first microcomputers, at a technical college that didn't have a formal
program. I learnt BASIC on the TRS-80, Commodore 64 and Apple IIe,
assembler on the Z80 and 6502/6510, and a bunch of forgotten mainframe
languages like COBOL, RPG and FORTRAN via dialup link to a mainframe
frontend at TUCC (Triangle University Computational Center) at Research
Triangle Park at (was it Duke University?) in Raleigh, North Carolina. This
was sometime around 1980 or 1981, long before t he internet :)
This is awesome! Here in Brazil we do have some regional centers for high
technology and innovation, but most technology and infrastructure
available/sold to users are usually from previous generations. For
instance, I still used dial up internet back in 2008 (although broadband
was already available), despite the fact that by 2010 it was used only by a
small percentage of Americans. Back in 2008 I was 18 (I'm 34 now) and was
gifted my first PC (previous to that I only had access to them when I
visited friends or at my mother's work, which had one with a CRT monitor!).
After getting my first PC (thankfully it had a LCD monitor, although CRTs
are charming) I became more and more involved with technology, first by
installing all kinds of virus-ridden junk on it, then some light HTML/CSS
for blogging, then I switched to Linux (Ubuntu) and finally, in 2010, my
first steps in Python and PHP. As I said, only in 2017 I became serious
about programming though.
Even so, I think only in 2018/2019 I truly got the mentality of a
programmer, if that makes sense. That was after reading "Code Simplicity"
by Kanat-Alexander. Before that book, I had the ability to tell the
computer what to do, but lacked the insight on how to put all that together
in a coherently designed and easy to maintain system.
Like you, all of that I taught myself via books, online posts/articles and
helpful people on online forums.
All that I know about modern computers, the programming, networking, and
systems administration -- I have taught myself, and learned under fire. You
name it, I've probably done at least a couple projects with it, except
maybe django, and some of the newer things like Rust and Go. Not that I
couldn't; I just haven't had a pressing need. yet. ;)
I do some things because I enjoy them, even if I don't have a pressing
need for them (Ham Radio, but that's another story LMAO). Plus, it's how I
learn about new things, and that's how I learn about new things that turn
out to be useful.
Congrats, honestly! Nowadays not many people can say that. Despite many
people being "digital natives", it doesn't make them proficient at using
more advanced tools like programming. It is something that can only be
learned with passion and perseverance.
Anyway, if you're willing to help me without my logging in to discord, or
point me in the direction of someone who will, I'll go the distance.
I tell you what I would be willing to do: If you will help me to just get
started with a couple of custom nodes, persuant to a favorite self teaching
project of mine, a graphical analog clock... I'll not only clone your repo
and update your documentation for a PR, I will also document the creation
of the clock, write it up in a tutorial, and provide the source code/nodes
as an example for Nodezator. I can't promise it will go quickly, as I too
have a lot of irons in the fire, but I will do it, if you're into it. BTW I
already have the clock in pyQT, so it would be very interesting to get it
put together and look at it in Nodezator.
That would be wonderful! But you see, an analog clock is probably not the
best kind of project for a node editor.
Node-based programming is not a replacement for text-based programming. It
is neither superior nor inferior either. It just has different usages. It
is great or good for some kinds of problems and bad or horrible for others.
Some problems can benefit from both approaches and some problems are
better employing neither of them (for instance, if you wanted to paint or
draw an image, you could use a node editor or just Python code using the
Pillow library, but instead I'd advise you to use a raster graphics editor
like Krita or Photoshop).
In other words, different problems require different tools.
Unfortunately, many people heading node editor projects shove them down
people's throats as silver bullets that'll solve all kinds of problems and
even replace text-based programming. With Nodezator, I recommend a much
more moderate approach: use it for problems that benefit from node editing.
What kind of problems benefit from node editing? I don't have a complete
answer for that, but at least a few pointers. First of all, node editors
seem to be best for pipelines. That is, whenever you have a set of
independent tools that benefit from different combinations of their usage,
node editors help a lot. That's why it is used so much in media editing,
including compositing, image editing and 3D workflows.
I myself use Nodezator to create 2D images for video production. I create
the images in Nodezator and import them into a separate video editing
desktop app (called Flowblade). I also used Nodezator to create 2D position
data for 2D animations that I use in a game. Here's an old brief thread on
X explaining it a bit:
https://x.com/KennedyRichard/status/1594712537685188608
IMHO, That problem of node editor developers shoving their tools down
people's throats unfortunately also harmed the reputation of node editors
and prevented a more wide usage of them for other kinds of problems.
Because of that, much experimentation is yet to be done in order to study
and assess their suitability for various kinds of problems.
As the creator and maintainer of one, I'm still doing experimentation when
I can, but there's still much to be done, as I spend most of my time
developing and maintaining Nodezator, rather than research/experimenting
with its applications, something that I want to do more in the future.
Here's a bigger thread on Bluesky on my latest experiments (they are from
the end of 2023, as I couldn't do any experimentation last year):
https://bsky.app/profile/kennedyrichard.com/post/3ldlfantczc2d
If you wish to make a first project with Nodezator, I suggest creating a
small set of independent Python functions for a specific purpose (maybe
text editing, or image editing, etc.). Any set of operations that you think
would be useful in a pipeline, through which you'd like to pass some kind
of data and retrieve it transformed at the end.
If you wish to do that (and when you have the time), just reach out to me
here on GitHub discussions and it will be my pleasure to help you
throughout your project.
I couldn't do all the improvements to the manual I mentioned in my last
reply to you, but at least I managed to add a button to the code blocks
that allows you to save the code in your disk, so at least you don't have
to type the code in the manual anymore. This means you should be able to
follow the first chapter of the manual and create your first node without
having to type the code yourself. Just make sure to update your version to
1.5.3 (pip install --upgrade nodezator).
The first chapter shows how to create a simple node and put all your nodes
together in a pack. The next few chapters teach more ways to create nodes.
After creating your first node pack in chapter 1, you can already jump to
chapter 5 (Loading your nodes
<https://manual.nodezator.com/ch-loading-nodes.html>) to learn how to
load it in Nodezator. You just need one node inside the node pack to be
able to load it, that's why after creating it in the first chapter you
should already be able to go to chapter 5 and load it.
I intend to create a small video tutorial soon (I'll try to do it this
month) to help users with that. The process of creating a node pack and
loading it into Nodezator should take only a couple of minutes.
Unfortunately, since there's so much stuff I need to explain in the manual,
it ends up looking like it is a long protracted process, when in fact, as I
just said, it is not.
Great response, 110%
Thank you for your kinds words. It is my duty as an open-source
maintainer, but thankfully also my passion.
Have a nice weekend, Mr. Stallings!
Peace
—
Reply to this email directly, view it on GitHub
<#103 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAA3PVW5DN47GOMJNX3YI7T2J3FIVAVCNFSM6AAAAABSYTENLWVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTCNZZGA2DCNY>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
You are shouldering quite a project, and doing quite well with it, it would seem by every indication. I've not personally used it (yet, gimme a few minutes to finish this note), but if it's half as good as the documentation, I'm in for a real treat.
Cheers! Keep up the good work :D
Beta Was this translation helpful? Give feedback.
All reactions