Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nodezator pygbag demo #76

Closed
wants to merge 8 commits into from
Closed

Conversation

sefgit
Copy link
Contributor

@sefgit sefgit commented Dec 2, 2023

My first attempt to run Nodezator in browser using pygbag.
Visit here for demonstration.

Patches

  • use callbacks to work-around wasm limitation
  • are not fully tested yet, some known issues including multi modal dialog, file saving and extra nodes packages loading failed

Feel free to improve and contribute.

Enjoy.

git attributes for auto crlf conversion
unix line ending
early release to enable Nodezator on browser using pygbag-0.8.4
Known issues:
- loading nodes failed
- multi level modal dialogs failed
- saving files not functioning, browserfs integration incomplete
for testing purposes, not fully tested yet
build with pygbag-0.8.4 and patched nodezator-1.4.5 to support python wasm.

known issues:
- multi modal dialogs failed
- loading external nodes packages failed
- saving files failed due to incomplete browserfs integration

enjoy

Please refer to pygbag documentation for detail about python wasm to package this kind of demo.
github page to demonstrate Nodezator runs in browser build using pygbag-0.8.4
@KennedyRichard
Copy link
Collaborator

Mr. @sefgit,

First of all, thank you for donating a bit of your time and effort to this open-source public domain project. As I always say, every help is appreciated.

However, there is a number of limitations and uncertain points that prevent me from embracing the web as a possible environment for Nodezator at the moment.

Enabling its usage in the web is fully desirable and I'm 99.99% sure that any discussion with any number of people would point to such desirability near unanimously. However, when it comes to the work needed to make it happen and mostly, when it comes to the extra required work to make sure new features added are fully web-compatible, the work would no doubt multiply.

People drastically underestimate the efforts and time needed to develop and maintain an app. The prospect of launching it in a different platform (web) and being able to properly maintain it is even more dire.

Nodezator is an unfinished desktop app. It can already do much, but there's still tons of features missing, even basic stuff like group nodes. Despite its slow but constant growth over time, its community is still very tiny and like any open-source project it is also underfunded (not that I'm complaining, we have a couple of generous patrons and I learn a lot with the project and also see it as a way to give back to the Python ecosystem, since I receive so much from it for free).

That is the reality of the project. And I don't think it is a harsh reality. All of this just means that we have to proceed carefully in order to ensure our operations are scaled healthily and the project can progress. There's a reason most node editor projects, inside and outside the Python ecosystem, usually die or live in a nearly dead state: it is because their managers/maintainers don't plan and scale their operations suitably to take into account the complexity of the project.

Fortunately, despite our small size, I've been able to keep curating the discussions, researching, answering and solving issues/fixing bugs, producing content, updating the websites/social networks/channels, promoting the project online and many other tasks. Sometimes stuff takes a week, sometimes a month or so, but I've been able to take care of all pending stuff one by one, slowly, but surely.

Because of that, as the maintainer of the project, I must consider carefully feature requests/propositions/pull requests. And my conclusion is that, although making Nodezator web-ready is very desirable in the future, at the present moment it would be considered scope creep.

In other words, despite my appreciation for your work and proactive attitude, the project still doesn't have the structure/resources to include the web in its scope. It is not a matter of desirability. I do want to see Nodezator on the web, and I think it will shine there, but letting a project that is unfinished, still in its early days, understaffed and underfunded, embark in such endeavor would be irresponsible.

To add even more context to this discussion, check out this conversation between me and Mr. Peny that took place last year when he first approached me about the prospect of making Nodezator compatible with pygbag: #21 (comment) (this discussion doesn't reflect my current views accurately anymore, due to how much insight I've been gathering from my daily work in Nodezator since then, but it offers good insight regarding my worries and approach regarding making Nodezator web-ready)

I hope I could convey my honest intentions clearly to you in this reply. I appreciate your effort, I desire to bring Nodezator to the web, but the reality is that Nodezator has many pending features, many requirements that are yet to be defined (I still don't know exactly how much and in which directions Nodezator will grow), so I have no choice but to focus my limited time and energy in other more crucial needs of the project, like developing the missing features, defining the missing design points.

The project simply isn't in a state in which it can worry about spreading its wings and taking flight in other directions. We are still an egg that will break if launched outside its nest.

We must focus on the foundations before aiming for more ambitious goals. Lest we risk leading Nodezator towards the fate of so many other awesome node editor projects that ended up not lasting.

I'm always here to answer any questions and help in any way I can.

@sefgit
Copy link
Contributor Author

sefgit commented Dec 3, 2023

Thank you for your prompt response, I appreciate that.
I share your view and I understand the amount of challenges and limitations running python in browser.
Nevertheless, I share the patches with the spirit of open source, in case there might be people out there who wish to try and pick up the challenges.
Keep up the good works, Mr. @KennedyRichard and thanks again for sharing your amazing Nodezator.

so far almost all features as of nodezator-1.4.5 are working now
- nodes import
- code export
- load and save
- multi modal dialog workaround
- htsl browser
@KennedyRichard
Copy link
Collaborator

I'm glad you understand my perspective, even though it would still be fine if you didn't, because despite being the maintainer of the project, I don't have the authority to judge the effort and aspirations of others, much less to shut them down.

Quite the contrary, I'm happy that you not only had a clear vision for the feature, but was able to translate it into a working implementation.

Since your work can be considered parallel work, not related to the main direction the app is taking, in order to avoid confusing people, I'll be closing this pull request ❌ .

However, your contribution consists of relevant and invaluable work 💎 that is worth a noticeable spot in Nodezator's content.

So, if it is okay with you, are there any problems if I mention it in some of our prominent communication channels, like the Nodezator's README? If you OK this, I'll mention your fork and link to it in such channels and other relevant communities.

Additionally, in case you allow it, may I also ask whether do you have any plans for it in the future? Just asking so I can give more info/context to people when I link to your work. Was it a one time thing? Or is it something which you intend to develop further?

Just so you know, I'm not possessive/jealous/overprotective over Nodezator or whichever direction/forks people want to pursue. On the contrary, I purposely dedicated it to the public domain so that, including me, no one even has ownership over it, much less exclusive control of its future.

If anyone wants to take Nodezator to a divergent direction from my plans/vision for it, I'm quite glad to support such directions/forks by mentioning it. Of course, if you don't plan to take your work any further (or at least not at the moment), it is also fine.

I would like to know just so I can accurately convey to people what to expect of this work whenever I mention it. Of course, I am also curious, since it is interesting. I myself intend to follow it and potentially use some of it in Nodezator in the future when Nodezator is at a more complete state and I think it is time to take it to the web.

I apologize for not being able to take a closer look at it at the moment either, specially when it seems you put much effort and care into it. On top of many other small tasks related to the entire Indie Python project, I'm currently working on the game subproject (in the "improvs" branch) and from next week onward I should be diving into scheduled work for the next Nodezator features until February (hopefully), with a short 2-week vacation beginning close to Christmas Eve.

Regardless of all that, let me know if you need anything else or have any questions. Always glad to help whenever I can. Oh, and thank you for your kind words.

Peace

@sefgit
Copy link
Contributor Author

sefgit commented Dec 5, 2023

Have a nice holiday Mr. @KennedyRichard, we will keep in touch soon.
I'll close this pull request.

@sefgit sefgit closed this Dec 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants