{"action":"created","issue":{"url":"https://api.github.com/repos/atom/atom-shell-starter/issues/53","labels_url":"https://api.github.com/repos/atom/atom-shell-starter/issues/53/labels{/name}","comments_url":"https://api.github.com/repos/atom/atom-shell-starter/issues/53/comments","events_url":"https://api.github.com/repos/atom/atom-shell-starter/issues/53/events","html_url":"https://github.com/atom/atom-shell-starter/pull/53","id":58691537,"number":53,"title":"Add ability to use atom-shell-starter as a dependency","user":{"login":"benogle","id":69169,"avatar_url":"https://avatars.githubusercontent.com/u/69169?v=3","gravatar_id":"","url":"https://api.github.com/users/benogle","html_url":"https://github.com/benogle","followers_url":"https://api.github.com/users/benogle/followers","following_url":"https://api.github.com/users/benogle/following{/other_user}","gists_url":"https://api.github.com/users/benogle/gists{/gist_id}","starred_url":"https://api.github.com/users/benogle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benogle/subscriptions","organizations_url":"https://api.github.com/users/benogle/orgs","repos_url":"https://api.github.com/users/benogle/repos","events_url":"https://api.github.com/users/benogle/events{/privacy}","received_events_url":"https://api.github.com/users/benogle/received_events","type":"User","site_admin":true},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-02-24T04:17:23Z","updated_at":"2015-03-05T23:40:21Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/atom/atom-shell-starter/pulls/53","html_url":"https://github.com/atom/atom-shell-starter/pull/53","diff_url":"https://github.com/atom/atom-shell-starter/pull/53.diff","patch_url":"https://github.com/atom/atom-shell-starter/pull/53.patch"},"body":"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. \r\n\r\nI 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. \r\n\r\n* https://github.com/atom/husk-sample contains the source\r\n* https://github.com/atom/husk-cli runs the `script/*` commands with the correct command line parameters\r\n\r\n![screen shot 2015-02-23 at 7 57 08 pm](https://cloud.githubusercontent.com/assets/69169/6343004/2c6e7fee-bb96-11e4-94ac-13b1400edd18.png)\r\n\r\nFirst link this behemoth\r\n\r\n```\r\ncd atom-shell-starter\r\ngit checkout bo-experiment\r\nnpm link\r\n```\r\n\r\nThen you can run the sample\r\n\r\n```\r\ncd ..\r\ngit clone git@github.com:atom/husk-sample.git\r\ncd husk-sample\r\nnpm link atom-shell-starter\r\nnpm install\r\nhusk build\r\nhusk run -d\r\n```\r\n\r\nOr run the tests\r\n\r\n```\r\nhusk run -t\r\n```\r\n\r\n### TODO\r\n\r\n* [x] Load source code from external app\r\n* [x] Build app with external app code\r\n* [x] Make sure dev mode works\r\n* [x] Make specs work\r\n* [ ] Get coffee caching working with external source\r\n* [ ] Get menus loading from sample\r\n* [ ] Come up with some kind of stylesheet loader, and load in an app's `styles/` folder\r\n\r\nThat 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.\r\n\r\n* Write `husk install` to pass the correct headers to npm/gyp, and remove the apm dependency\r\n* Remove the ability to fork and build without an external app. This would clean up the build process, and initial run process quite a bit\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/atom/atom-shell-starter/issues/comments/77476966","html_url":"https://github.com/atom/atom-shell-starter/pull/53#issuecomment-77476966","issue_url":"https://api.github.com/repos/atom/atom-shell-starter/issues/53","id":77476966,"user":{"login":"zcbenz","id":639601,"avatar_url":"https://avatars.githubusercontent.com/u/639601?v=3","gravatar_id":"","url":"https://api.github.com/users/zcbenz","html_url":"https://github.com/zcbenz","followers_url":"https://api.github.com/users/zcbenz/followers","following_url":"https://api.github.com/users/zcbenz/following{/other_user}","gists_url":"https://api.github.com/users/zcbenz/gists{/gist_id}","starred_url":"https://api.github.com/users/zcbenz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zcbenz/subscriptions","organizations_url":"https://api.github.com/users/zcbenz/orgs","repos_url":"https://api.github.com/users/zcbenz/repos","events_url":"https://api.github.com/users/zcbenz/events{/privacy}","received_events_url":"https://api.github.com/users/zcbenz/received_events","type":"User","site_admin":true},"created_at":"2015-03-05T23:40:21Z","updated_at":"2015-03-05T23:40:21Z","body":"We are very likely going to write a command line tool for developing Atom Shell apps during the Google Summer of Code (https://github.com/github/gsoc/issues/15), and atom-shell-starter would be an important template/framework when creating apps.\r\n\r\nThe 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.\r\n\r\n"}}