-
Notifications
You must be signed in to change notification settings - Fork 66
Add ability to use atom-shell-starter as a dependency #53
Conversation
Hm - while I definitely like your Vision Of The Future, I think it's somewhat premature at the moment. This effectively turns atom-shell-starter / Husk from a template into a Framework, which is both Good (people get the benefits of upstream changes), but also comes at a pretty significant cost - people are now discouraged from changing any of the code in this repo because now they'll be Off The Reservation and into the custom npm module game / private registries / etc etc. One of the goals of atom-shell-starter is to be Production Ready - i.e. it's not an example, you should be able to build Full Apps with it. Right now, the likelihood that I can build a Full App without modifying the code in atom-shell-starter in any way seems Low; there's too much going on in both the Atom Shell world and in this repo. In the future though, once Atom Shell itself as well as the code in here settles down, that will be way more of a tenable proposition in my mind. Something in the middle?Another approach we could try to do that is in-between the two, is build a really full-featured Yeoman generator for this repo. Yeoman is good at the concept of generating projects, but also allowing you to rerun the generator on an existing repo and it'll update all the files that don't have custom code in them, as well as getting us some of the features that Thoughts? |
I think turning it into a framework encourages a behavior thats much more beneficial to everyone in the long-term. Right now, we're encouraging ad-hoc additions to your local fork.
As a framework or a forkable thing this has the exact same capabilities. And if it's not ready for prime time, then having it as a framework will encourage people to add the things necessary to make it so, benefitting everyone past and future, rather than hacking in some garbage that they need right now. Having this as a framework may encourage a little more thought and dicipline into what goes in. That's a good thing, though. But I dont see any PRs that have been submitted recently that should have been different if this were a framework. Contributions are already coming in to make this more production ready. If anything, making it a framework will make it more accessible and accelerate them.
I disagree. The impact is the same. This repo is for general bits useful for everyone. People are already discouraged from adding their domain specific junk, and are encouraged to add the general stuff that was useful for them.
I think this is really the wrong approach. This still encourages quick hacks to add your sorta-general behavior, diverging you from master. Contributing is harder as you need to edit the generator, and generate to test, when you can just I'm honestly not seeing any downside to making this a framework. But the upside is great:
The one upside of leaving it they way it is:
But that upside will quickly diminish with contributions. |
IMO the dream of the future should be to just add 'atom-shell' to your package.json and npm install it, and run I'd be much more comfortable starting with getting atom-shell to work as a dependency and slowly adding elements that support typical feature development than putting this entire repo into a generator. I don't think we should hand people a big opinionated scaffold and tell them to hack it up whether it's a fork of this repo or a yeoman generator, especially given how much atom-shell development's best practices and atom-shell itself are likely to be a moving target. |
Along the lines of 'atom-shell' in npm, @maxogden and @mafintosh have done some work on this. Curious to hear about how that's been going for them. |
We wrote it so we could not only use it via For example, if you do The main issue we have is we don't know when atom-shell releases happen. We like to sync our npm version number with atom-shell's version number so you can do e.g. It would be super cool if someone involved with the atom-shell release process wanted to become a commiter on our atom-shell module and at least ping us when releases need to happen, or just push the releases themselves. The release process is really simple, you just make a commit like this and then |
I'm sure we can work with you somehow -- for maximum lazy points we could set up a webhook on the github repo that just pings you when a Release is created 😎 |
excellent. if there's a specific person who wants to take responsibility on On Tuesday, February 24, 2015, Daniel Hengeveld notifications@github.com
Sent from my phone |
We are very likely going to write a command line tool for developing Atom Shell apps during the Google Summer of Code (github/mentorships#15), and atom-shell-starter would be an important template/framework when creating apps. The command line tool will not only be used for generating apps, it will also include the ability of installing native modules, creating distributions/installers, code signing, etc. So I think we should avoid putting the responsibility of generating apps in atom-shell-starter. And we may use husk (#52) for the command line tool instead of renaming atom-shell-starter. |
@paulcbetts @maxogden and co have done a great job splitting this stuff out in the last few months. Closing this as no longer relevant. I've updated husk-cli to work with the current state of things. See electron-archive/husk-cli#1 for more info |
Forking this project and mixing in your app-specific code in is a pretty unfortunate way to make an atom-shell app. There are consistent improvements to this project, which these forked apps cannot take advantage of without pain.
I envision a world where an app author only need to specify the domain specific bits of code. A world where the window maintaining, menu handling, building, packaging, compiling, caching, deduping, installing, etc are taken care of by an app container. And a world where apm is not necessary for non-atom apps. My vision is a utility like
rails
. This utility takes your minimal, domain-specific source code, and makes an atom-shell app.script/*
commands with the correct command line parametersFirst link this behemoth
Then you can run the sample
Or run the tests
TODO
styles/
folderThat should be sufficient to get this to useful mergeability, or MMP (minimum mergeable product). There are several other things we could do, but they can be done in other PRs.
husk install
to pass the correct headers to npm/gyp, and remove the apm dependency