Closed adam-lynch closed 7 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
@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
:
semver
and a list of files to determine which files should be copied (yes I am talking about lib/platforms.js
). The list changes from version to version and if a new version comes out, it might refuse to work before contributors update the list (also the semver
). And the list will keep growing as time goes.
nwjs-builder
, I decide to use excluding instead of including.http://nwjs.io/versions.json
, which you have asked for. And talking about sharing caches, the nw-download
is out of maintaining as well.
nwjs-download
.nw-builder
builds for it in default, which brings some complaints from the new users.
nwjs-download
, target platforms are parsed from versions.json
, which solves the issue in another way.nw-builder
doesn't provide editing Windows executable information. nw-builder
should be using winresourcer
to edit the icon, but not the information.
node-rcedit
to edit the icon and most of the information.Info.plist
will not change the display name as long as they are here.
nwjs-builder
.nwjs-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).
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:
stable
, beta
and lts
channels and normal
and sdk
build flavors.
build
and run
should be able to have different channel/flavor selections (e.g. normal for build and sdk for run).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...
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.
@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?
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 :)
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.
Just a suggestion. GFM Task List should be enough for a task list, it's public and developer-friendly.
@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.
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:
bug
, enhancement
, needinfo
, etc.I've created a phoenix
branch and a milestone for these.
versions.json
instead of hitting dl.nwjs.io. Ignore versions with pre-release/build metadata in the version to begin with (i.e. -rc1
, -alpha2
, etc). Since we want to make this backwards compatible, we should still use dl.nwjs.io, etc. for legacy versions. (#275) 0.12.3
are deprecated if one is used to build.I've created a milestone for these.
-beta2
).versions.json
to give us direct URLs but it was decided not to do that I guess.Beyond this, we all have ideas but let's leave it at that for now.
may I add to @adam-lynch list:
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...
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.
@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 👍
as the @evshiron nwjs-builder is working why not restart the project from its fork as many of us seems to already use it
@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?
I will release my beta version and then I will try it :)
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:
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).
Dam this looks good!
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
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.
Then I didn't say a thing :p keep up the good work!
@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.
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.
Do we have any new maintainer now? When will this repo enter the unmaintained state if no one is found?
CC @ghostoy
@Bartozzz that looks so good!
@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).
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.
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.
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.
@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.
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
. 👏
@Bartozzz Your idea is great! How is it going for now? I can't open https://github.com/VulcanusProject
@Bartozzz Did you ever end up release your version of nw-builder
?
@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.
Okay thanks for letting me know.
Would you like to become a maintainer and help out on this project? We'd really appreciate it.
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