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

Attract maintainers #36

Open
2 of 4 tasks
romgrk opened this issue Jul 5, 2018 · 38 comments
Open
2 of 4 tasks

Attract maintainers #36

romgrk opened this issue Jul 5, 2018 · 38 comments

Comments

@romgrk
Copy link
Owner

romgrk commented Jul 5, 2018

In order to have higher quality bindings, we need to put more work into this. More maintainers means more work. Therefore, we need to find more maintainers. (also, our bus factor is very bad)
The general strategy will be to generate noise about the project in order to get more popularity. More people seeing the project means more potential maintainers.

  • Find which kind of people are interested in having Gtk NodeJS bindings (besides me)
  • Add pre-built binaries for easy installation
  • Blog entries about the project (Medium?)
  • Short release cycle on NPM, to show there is activity
@WebReflection
Copy link
Contributor

they might be interested: https://github.com/Place1/react-native-gtk

@romgrk
Copy link
Owner Author

romgrk commented Jul 5, 2018

They're using their fork of node-gir, and I've been having interesting conversations with them (Place1/node-gir#43) but it looks like they might continue developping their bindings.
However, https://github.com/codejamninja/react-gtk might be interested, maybe (ping @codejamninja).

I think the best way to create some interest would be to showcase nice applications, putting an emphasis on how much simpler it is to write a Gtk application with NodeJS. Tutorials to teach how to link everything together (objects, signal, etc) would be ideal.

@WebReflection
Copy link
Contributor

WebReflection commented Jul 5, 2018

I've already tried with both GJS and jsgtk and after cgjs and everyone told me basically Node or GTFO but when this original project was born from Jasper initial repo no-bloody-body was interested.

Obvious issues about this projects:

  • IIRC it doesn't compile in macOS (so most of MBP users are out of the equation)
  • it doesn't come with pre-built binaries and Gtk
  • Gtk setup in macOS is super wonky (if you use X instead of Quartz), and on WSL is a joke. Gtk itself should probably make a distributable binary like node that works x-platform, but they just don't
  • as soon as somebody will try to use WebKitGTK, the only, or best, web view available for Gtk, macOS will be cut out.

If you compare all these issues VS Electron, since Node.js people are still mostly Web related, you realize it's easier for everyone to just deploy for electron.

Me ? I can drive node.js right away from WebKitGTK through GJS and Workway so I can drive Node.js, real Node.js, through the browser, without even needing Electron.

That covers my ARMv11/6/7/8 needs, any Kiosk app I'd like to do, but it leaves a hole when it comes to native Node.js Desktop apps, where this project would partially shine (all doc about Gtk is in Python and JS chaps are usually reluctant to sneak_case).

Anyway, if this was installable via npm install node-gtk without compiling needs and all the extra dependencies (aka: pre-bundled/built) I am sure there would be way more interest from everyone to make it happen/improve it.

@romgrk
Copy link
Owner Author

romgrk commented Jul 5, 2018

IIRC it doesn't compile in macOS (so most of MBP users are out of the equation)

I think it works: #19 (comment)

it doesn't come with pre-built binaries and Gtk

This is in the todo list for the 1.0 release. Easy installation is a crucial part for this.

as soon as somebody will try to use WebKitGTK, the only, or best, web view available for Gtk, macOS will be cut out.

There seem to be people working around this, I'm pretty sure we could create a brew formula for this. Not sure why it was removed from there though.

If you compare all these issues VS Electron, since Node.js people are still mostly Web related, you realize it's easier for everyone to just deploy for electron.

Electron is easier, but people are also noticing the down sides: huge binaries (100MB min), high resource consumption. It think it's possible for us to fix our down sides. Cross-platform-ness will obviously be the hardest point :/

(Thanks for the feedback, really good points!)

@WebReflection
Copy link
Contributor

I think it works: #19 (comment)

tried on my MBP and it doesn't work, maybe I am missing something in here but it's not an out-of-the-box experience (it is on my ArchLinux machine though)

There seem to be people working around this

We are at WebKitGTK 2.20 ... that is a jurassic one that goes nowhere.

The reason brew doesn't host it anymore is because it takes forever to build and it used to fail after 1 hour of 100% CPU due always some missing patch or thing.

WebKit repo ain't easy to follow for builds, and you need super fast hardware to create distributable binaries / libraries.

Everything else is, more or less, available in brew and for quartz, way better experience than X version, IMO, but also limited if there's not web view.

Electron is easier, and already (mostly) cross platform (IIRC it misses ARMv8 though, which is a bummer), so it's unfortunately very hard to compete, but we can try.

@WebReflection
Copy link
Contributor

tried on my MBP and it doesn't work

actually, tried again and it just worked.

screen shot 2018-07-05 at 23 42 32

@benwaffle
Copy link
Contributor

Is MacOS really a priority?

@WebReflection
Copy link
Contributor

that's what's most developers use (at least in the US) so it's good to have Mac devs onboard, and capable to distribute apps.

Actually, Mac is more important than Linux here, since on Linux we all know how to develop some Desktop GUI in a way or another, we have many choices in general.

@benwaffle
Copy link
Contributor

benwaffle commented Jul 6, 2018

that's what's most developers use

Maybe all developers, not most Linux developers or most GTK developers.

@WebReflection
Copy link
Contributor

WebReflection commented Jul 6, 2018

sorry @benwaffle but your point is, exactly?

@romgrk
Copy link
Owner Author

romgrk commented Jul 6, 2018

I think the point is, node bindings fo GTK would be mostly used by linux folks. Mac folks usually use native mac stuff rather than external toolkits.
I agree that having Mac devs onboard is essential, but the priority IMO is linux. Anyway, I don't own a Mac so for the moment no testing/development is made on Mac :)
But if we succed at this issue (attracting maintainers, which is the whoe point of the discussion here), we definitely want to put some effort into making this coss-platform for at least linux and macOS.

@WebReflection
Copy link
Contributor

WebReflection commented Jul 6, 2018

Mac folks usually use native mac stuff rather than external toolkits.

I do GJS and Gtk on Mac, homebrew is a great developer companion, and it's easy to use for everyone, nothing different from node and npm.

I don't own a Mac so for the moment no testing/development is made on Mac :)

I do, the company gave me one, but my own laptop is ArchLinux and GNOME, so I can test on both (natively) with ease.

we definitely want to put some effort into making this coss-platform for at least linux and macOS

so far this seems to work so there's no point in not keep doing that.

@k0d
Copy link
Contributor

k0d commented Oct 21, 2018

Cross platform developer here with a need for high quality JS bindings to GLib and time to dedicate to this. I mostly want to interact with Gstreamer, on Linux and MacOS. My initial tests are positive, though I need to get issue #74 fixed before I can progress further in my testing. I will look into fixing that tomorrow.

@romgrk
Copy link
Owner Author

romgrk commented Oct 22, 2018

Awesome :)

@itsfarseen
Copy link

I'm also interested in developing cross platform gui.
How good is the windows support?
I had used Gtk with PyGobject, it took a lot of work to get it working with windows.

@romgrk
Copy link
Owner Author

romgrk commented Nov 12, 2018

Support for Windows is described here. Basically, it's bad and mostly untested, but if PyGObject can do it then we can do it. Also, we have the advantage of being able to distribute pre-built binaries if someone has the time to set everything up correctly. However, we would also need to distribute the dependencies, or to make them easily installable. Not sure how much effort will be needed here.

@WebReflection
Copy link
Contributor

Windows is tricky here ... even in Bash for Windows (WSL), because they don't really like Linux things reaching their GPU stack.

I once wrote how it could work in there, and it did, at that time.
https://medium.com/@WebReflection/testing-safari-via-bash-for-windows-js-2b7b9098d9c0

@clayrisser
Copy link
Contributor

Hey ya'll, after much research, I have decided to use node-gtk as the official backend for react-gtk. I'd love to partner with ya'll to make this happen.

@clayrisser
Copy link
Contributor

I will mainly focus on react-gtk, but would like a nice tight feedback loop. I think these two projects will complement each other. Obviously, react-gtk needs good bindings, but node-gtk needs a solid project to test the features in the wild and gain interest in the project.

@clayrisser
Copy link
Contributor

I just finished replacing the node-gir engine in react-gtk with node-gtk.

https://github.com/codejamninja/react-gtk

If ya'll don't mind, I think I'm going to copy your installation instructions for gtk.

@romgrk
Copy link
Owner Author

romgrk commented Mar 4, 2019

@codejamninja sure, this is awesome, we're lacking good projects that use node-gtk. Development is somewhat slow but I'm on a project that uses node-gtk and fix bugs as I uncover them. Rest assured that I'll provide as much support as I can with any bug.

@harisvsulaiman
Copy link

@romgrk I'm working on porting my app to node gtk at the moment. It's slow , but I'll get it done.

@romgrk
Copy link
Owner Author

romgrk commented Mar 5, 2019

@harisvsulaiman awesome, if you need assistance don't hesitate to open an issue in this repo.

@harisvsulaiman
Copy link

@romgrk there seems to be some issue with bindings some methods are not visible.

I cant seem to get libgranite working see #97 .

I am working around these problems and after i finish porting the app, i'll take a stab at it.

@romgrk
Copy link
Owner Author

romgrk commented Mar 5, 2019

Some methods are not exposed to the bindings, so it might be that. If you believe they should be present, open an issue with an example :)

@binyamin
Copy link
Collaborator

@romgrk I feel like a vital step in attracting contributors is making it easy to contribute. Eg, writing a contributing.md.

@romgrk
Copy link
Owner Author

romgrk commented Feb 12, 2020

Good point, do you have any suggestions of what could go in there? What would help would-be maintainers to be interested? Some effort has already been made in /doc to document how to work on the project but the C++ side is missing.

@binyamin
Copy link
Collaborator

binyamin commented Feb 13, 2020

Here are a few items which come to mind:

  • add a section in the readme introducing new contributors to the development workflow, and/or directing them to a separate document.
  • Dev.To has a huge collection of labels for issues, making it very simple to pick an issue which you think is easy for you.
  • define the process of contributing (eg, issue before PR, one issue per branch/PR)
  • add a readme section outlining what help is needed where. For example, typedefs or C++ bindings, or even a landing page or articles about the project.
  • Imo, creating a set of contributing guidelines would instill confidence as well as order. By this, I mean rules like
    • "PR's must be preceded by issues"
    • "name your branch feature/[xxx] or bugfix/[xxx]"
    • "Here's a link to a guide on the Open Source Contribution process" (like freecodecamp's)

I would also take a look at other successful repositories such as Gatsby, Dev.To and FreeCodeCamp, and see how they do contribution stuff.

@baybal
Copy link

baybal commented Mar 7, 2021

I've already tried with both GJS and jsgtk and after cgjs and everyone told me basically Node or GTFO but when this original project was born from Jasper initial repo no-bloody-body was interested.

Node is definitely more alive than any other JS platform. GNOME staked everything on spidermonkey-GJS, and it is not going anywhere.

Even if the project get to the point of proper, and more viable GJS alternative, it will be already tremendous.

@romgrk
Copy link
Owner Author

romgrk commented Mar 7, 2021

Indeed. IMHO the problem here is to make this into a viable alternative to, eg electron, we need to fix the major issues, but only when we will be a viable alternative will we see interest and more contributors 😆 But yes nodejs is a better bet than GJS.

Just to recap missing features to be viable:

  • Cross-platform (windows support)
  • Promises/GC/event-loop issues (all related)
  • Virtual functions
  • Easy install (no need for users to compile anything)

If we have that and a few nice example projects, it would be enough to turn this into a production-usable project.

@binyamin
Copy link
Collaborator

binyamin commented Mar 7, 2021

@romgrk I'm working on a nice tutorial. Maybe a boilerplate as well.

@romgrk
Copy link
Owner Author

romgrk commented Mar 7, 2021

Cool! Send a link when you're done, we can link to it. Yes a boilerplate repository would be great. Ideally I would have liked to make react-gtk the recommended way to do a node-gtk project but I don't know what's the state of the project and haven't had enough time to investigate more.

@clayrisser
Copy link
Contributor

@romgrk we're getting close to having react-gtk ready (Gtk 4.0 support).

@clayrisser
Copy link
Contributor

One part that seems to not work (that makes react-gtk more challenging) is support for virtual functions.

@romgrk
Copy link
Owner Author

romgrk commented Dec 21, 2023

Supposed to, I'll take a look later today.

@clayrisser
Copy link
Contributor

#354

@clayrisser
Copy link
Contributor

clayrisser commented Dec 21, 2023

Also, meant to ask if you're on discord? I think I sent you a request. You can join the following discord server if you want to be able to track progress on react-gtk.

https://discord.gg/UBrXPfFnF3

@romgrk
Copy link
Owner Author

romgrk commented Dec 21, 2023

I don't open discord regularly enough for it to be worth it. I'm now watching the react-gtk project, if you have important PRs or releases there I'll get the notification through github.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

9 participants