nwutils / nw-builder

Build NW.js applications for Linux, MacOS and Windows
MIT License
1.68k stars 302 forks source link

Call for new maintainers #327

Closed adam-lynch closed 7 years ago

adam-lynch commented 8 years ago

Would you like to become a maintainer and help out on this project? We'd really appreciate it.

Puppy dog eyes


I'm going to spend a bit of time this week on getting the project back on track, specifically getting newer versions working again.

I thought the biggest issue was that alpha/beta versions weren't supported (#275) but I had been too crazy busy lately to fix it. I've realised today that it's much worse than that.

Also, what do you think are the biggest issues preventing it to work with the latest versions?


Pinging people who have been contributing through issues & PRs lately; @evshiron @joshterrill @craigbloodworth @atlantidezign @piysingh @vankasteelj @cgallarno @sqwk @colinbes @tomlandia @Sytten @zergius-eggstream @YacheLee @ARH-Digital @jgknott @AzazelN28 @freakinside @mathzol @y-lohse @gabepaez @bastimeyer @technicallyjosh @trevorah

vankasteelj commented 8 years ago

Not sure I'll have time, but I'm 100% behind the idea, I held back upgrading nwjs on my personnal project because of nw-builder not being able to understand > 12.3

evshiron commented 8 years ago

@adam-lynch Greetings Adam :)

Glad to have you back to nwjs/nw-builder. When I was using nw-builder, I found it didn't work with any later versions, so I forked and hacked the nw-builder to work in my situation. Later I found my hacks were somewhat ugly and as there was a need for a working nw-builder, I created another nwjs-builder (along with nwjs-download).

There are points why I stop hacking over nw-builder:

I am afraid there will be a lot of work to do, but it would be nice if nw-builder is able to back on track. I am glad to help if there is a plan (but I am busy with final exams ATM).

bastimeyer commented 8 years ago

Thanks for bringing this project back to life! Also thanks for asking, but I don't want to be a maintainer. If there's anything to fix and I have the time, I will send a PR, like I have done a couple of times before in the past.


This is what I think needs to be done to resolve all critical issues:

  1. Use the NWjs versions manifest at http://nwjs.io/versions.json instead of parsing http://dl.nwjs.io/ This fixes the issues of new versions (>=0.13.0) and dropped platforms (osx32).
  2. Add support for stable, beta and lts channels and normal and sdk build flavors.
    • Set the default channel to stable and default flavor to sdk.
    • build and run should be able to have different channel/flavor selections (e.g. normal for build and sdk for run).
  3. Include the whole archive content instead of defining a list of files to be used for building. When the file contents changed after the v0.9.2 update, I submitted a PR for a selection of multiple semver ranges... But is this still necessary? We know the archive content and it should be safe to assume that all files are needed. This fixes issues for new releases in the future. Maybe implement an exclude list.
  4. Upgrade dependencies, remove unneeded dependencies. Fixes node>=6 issues.

This is what I don't like about the current versions manifest and should be changed by the NWjs devs:

There are also a few other issues, like file permissions on Linux and OSX, but these are rather optional...

Sytten commented 8 years ago

I currently dont have time to put on nw-builder since I'm the official maintainer of Facebook Messenger For Desktop. But I would very much like to see the official version work again. I currently use the work of @evshiron in MFD.

joshterrill commented 8 years ago

@evshiron @bastimeyer I couldn't have said it better myself. If there's anything I can do to help, just let me know what you want me to work on. Maybe we should get a priority list going on what should be done first?

hanetzer commented 8 years ago

I'm rather new to nw.js and so on, but I've ran into and hopefully properly figured some fixes between nw-builder and nw.js's newer versions, so I'd be willing to put in some work on it :)

adam-lynch commented 8 years ago

Thanks for the feedback! I'm going to make a proper (broken down) list of tasks. Not sure which to use:

I've also created a Gitter room for this project just in case.

evshiron commented 8 years ago

Just a suggestion. GFM Task List should be enough for a task list, it's public and developer-friendly.

adam-lynch commented 8 years ago

@evshiron yeah. I'd be ok with that. All of the other options are public / have a public option and every one but Trello actually maps issues to tasks, so if you complete a task or close the issue (or add a tag, etc.) it gets synced to the other side.

adam-lynch commented 8 years ago

OK so the top priority should be to get the existing functionality back in working order. So just patch version bumps to begin with before we add any additional feature/behaviour.

Note: All help is appreciated here; code, managing issues, helpful replies, anything. Feel free to chip in if you never have, you're more than welcome :+1:


2.2.1 - Phoenix

I've created a phoenix branch and a milestone for these.

2.2.2 - Editing executable information.

I've created a milestone for these.

2.3.0 - Alpha/beta builds, etc. Included in 2.2.1

Milestone.

2.4.0 - Flavours

Milestone.


Beyond this, we all have ideas but let's leave it at that for now.

gpetrov commented 8 years ago

may I add to @adam-lynch list:

2.2.2 - Editing executable information.

2.5 Sign executables

bastimeyer commented 8 years ago

allow executable to be renamed on the Mac and chmod +x it

It's not just the OSX executable(s) having wrong permissions (700 instead of 755), but also all of the Linux files. In the old releases <=0.12.3, all of them are 755 instead of just the executable itself. In the new releases, all of them are 700 (executable) or 600 (rest). This is more of a NWjs issue rather than nw-builder, because the downloaded archives contain these permissions. This could still be fixed here in the nw-builder though, since there may be situations where the builder cache dir was manipulated after a download. But let's not discuss it in this thread, #289 is already opened...

Allow all nwjs files to be signed

If we're already signing the executables, then we could also implement packaging support for a later milestone, maybe by using fpm... And also add support for creating an installer for the files on Windows by using something like nsis.

All of this is ofc highly optional...

evshiron commented 8 years ago

If we're already signing the executables, then we could also implement packaging support for a later milestone, maybe by using fpm... And also add support for creating an installer for the files on Windows by using something like nsis.

I will refuse this proposition if it's in evshiron/nwjs-builder. We can provide some tutorials about how to do them in the Wiki but should not make it a feature which we will have to maintain in the future. Adding features like this will increase project complexity. If there is further issue, will we need to dive into the manual of those tools we have never used before? Just leave it to users. Task runners are extremely suitable for these jobs.

adam-lynch commented 8 years ago

@gpetrov thanks for the suggestions. Any issues related to editing executable information / icons were added to the 2.2.2 milestone.

I think the permissions, zipping, and packaging/signing stuff could be worried about after the versions I've outlined are done.

Since @evshiron mentioned complexity... I think eventually this project should be a bit simpler and we could have other projects alongside it which may or may not use it. For example, the CLI could be a separate project which uses this one. I'm sure we all have interesting ideas for features and additional modules but let's get this stuff sorted first 👍

malko commented 8 years ago

as the @evshiron nwjs-builder is working why not restart the project from its fork as many of us seems to already use it

adam-lynch commented 8 years ago

@malko the forker agrees this is the way to go 👍


@evshiron @ntzrmtthihu777 @joshterrill @Sytten @vankasteelj could you test #333 and let me know if I've broken anything?

Sytten commented 8 years ago

I will release my beta version and then I will try it :)

Bartozzz commented 8 years ago

I did my own version of nw-builder some time ago. Right now it is a quite big project with a user-interface and a simple-to-use binary. It allows users to compile their project for desktop platforms (using nw.js), some mobile platforms (only Android right now) and browsers. I am planning to add some support for others mobile os and platforms like Nintendo devices, Xbox, PS4, etc.

I did some "plugins" (idk. exactly how to call it - for example native notifications with an unified API for all the platforms), and a global configuration (including icons/splasharts/application informations). There's is also an offline documentation that I did quickly.

I wonder if you might want to use it for the new nw-builder release as it also adds supports for others compilers like Cordova and Electron, so it is not only nw.js based. If not, I will publish it on my portfolio anyway with an option to buy it/make an optional donation.

I did put a lot of work and effort into this application. My builder is written from scratch and has nothing in common with yours. I think you might give it a chance and fully focus on developping nw.js instead of those builders.

Here are some screenshots:

Terminal:

zrzut ekranu 2016-06-29 o 01 39 46

Application:

zrzut ekranu 2016-06-29 o 01 37 51 zrzut ekranu 2016-06-29 o 01 38 18 zrzut ekranu 2016-06-29 o 01 38 32 zrzut ekranu 2016-06-29 o 01 38 48 zrzut ekranu 2016-06-29 o 01 40 35 zrzut ekranu 2016-06-29 o 01 39 19

It's still a work-in-progress. I am planning to add a configuration section for the app (with a form to specify system architectures and nw.js versions should be used to compile).

Sytten commented 8 years ago

Dam this looks good!

vankasteelj commented 8 years ago

that's good for ppl wanting instructions, but what about projects using a server to auto build their app? We need programmable builds in one command line, to embed in gulp and that can then be used hooked when the main repo is updated

Bartozzz commented 8 years ago

It also provides a simple way to do it without the command line binary/dedicated application, very similar to nw-builder:

import Build from "...";

const Builder = new Build( options );

Builder.on( "end",   archive => console.log( `Compiled! Output: ${archive}` ) );
Builder.on( "error", message => console.log( `Error! ${message}` ) );
Builder.build();

I could write a gulp/grunt/whatever plugin or even make some modifications to grunt-nw-builder plugin and it should work fine. As I said, this is a work in progress and I focused more on the application, mobile platforms and custom plugins.

vankasteelj commented 8 years ago

Then I didn't say a thing :p keep up the good work!

adam-lynch commented 8 years ago

@Bartozzz that looks good! You should definitely put it up online somewhere (and even open-source it 😄). I'd like to give it a try. But we're focusing right now on getting this project back to working (for newer versions) like it used to for older versions. We don't need to re-do a lot of the code. I think we're really close if you see #333. Thanks anyway though.

adam-lynch commented 8 years ago

OK, 2.2.1 is released which supports newer versions, alpha/beta builds, and fixes a few other little things. See #337 and #333.

The only flavour supported right now is the SDK one (because it's most like older versions). We have a pull-request (#336) which adds the ability to choose flavours.

rogerwang commented 8 years ago

Do we have any new maintainer now? When will this repo enter the unmaintained state if no one is found?

CC @ghostoy

joshterrill commented 8 years ago

@Bartozzz that looks so good!

Bartozzz commented 8 years ago

@joshterrill Thanks a lot! There's a demo video of this project: https://www.youtube.com/watch?v=Ol9x73k48c4 - I will publish it as soon as possible here (I don't have much time right now).

adam-lynch commented 8 years ago

I've spoken to Roger directly in case as anyone is wondering 😄. I'm going to maintain this still but I can't do it on my own.

matthew-dean commented 8 years ago

What about a Patreon for nw-builder (or nw.js in general) for a dedicated maintainer like Vue.js did? https://www.patreon.com/evanyou

There's no reason it has to be entirely voluntary, and that might allow some room to get some end-user tools developed like actual distributables, since both nw.js and nw-builder fall just shy of installable packages. Or things like file associations. Or an integrated self-updater. I'd definitely kick in for someone's monthly salary.

matthew-dean commented 8 years ago

From Vue's Patreon: "If you run a business and is using Vue in a revenue-generating product, it would make business sense to sponsor Vue development: it ensures the project that your product relies on stays healthy and actively maintained. It can also help your exposure in the Vue community and makes it easier to attract Vue developers."

There are definitely a lot of businesses using NW.js and nw-builder. I was just hired to a place partly because of my NW.js experience. Let businesses invest in NW.js's success.

adam-lynch commented 8 years ago

@matthew-dean interesting. The main NW.js project used to use https://www.bountysource.com/ or something similar. @rogerwang would the right person to weigh in here.

adam-lynch commented 8 years ago

Big shoutout to @DblK and @langco. Between the two of them, we now (3.1.0) have support for selecting NW.js flavors other than sdk. 👏

kongyuan commented 7 years ago

@Bartozzz Your idea is great! How is it going for now? I can't open https://github.com/VulcanusProject

ayushmanchhabra commented 1 year ago

@Bartozzz Did you ever end up release your version of nw-builder?

Bartozzz commented 1 year ago

@tharatau unfortunately not – I was not satisfied with the code-quality (I was just learning React at the time) and the performance, so I decided to postpone the release and it never happened. This project of mine is discontinued.

ayushmanchhabra commented 1 year ago

Okay thanks for letting me know.