{"action":"created","issue":{"url":"https://api.github.com/repos/atom/electron/issues/673","labels_url":"https://api.github.com/repos/atom/electron/issues/673/labels{/name}","comments_url":"https://api.github.com/repos/atom/electron/issues/673/comments","events_url":"https://api.github.com/repos/atom/electron/issues/673/events","html_url":"https://github.com/atom/electron/issues/673","id":44580957,"number":673,"title":"Idea of runtime mode","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},"labels":[{"url":"https://api.github.com/repos/atom/electron/labels/discussion","name":"discussion","color":"009800"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":27,"created_at":"2014-10-01T15:56:04Z","updated_at":"2015-09-01T14:04:51Z","closed_at":null,"body":"Currently developers using atom-shell have to ship the whole atom-shell binaries when distributing their apps, but since now we have [asar](https://github.com/atom/asar) as atom-shell's app format, we may add runtime mode to atom-shell like [Adobe Air](http://www.adobe.com/products/air.html) or [Chrome Hosted Apps](https://developers.google.com/chrome/apps/docs/developers_guide) that developers only need to distribute packaged app in `asar` format as long as end users have the runtime mode of atom-shell installed.\r\n\r\nThe runtime mode can just be another app based on atom-shell (let's call it `atom-runtime` for now), and has deep platform integrations:\r\n\r\n* On Windows, we can provide installer and auto updater for atom-runtime, and register the `.asar` file type to be opened with it.\r\n* On Linux, we provide official software sources of atom-runtime for some popular distributions, and also register atom-runtime as handler of `.asar` files.\r\n* On Mac, we need to provide a tool to help users package their apps into Mac bundles. We can reference how Steam created bundles for downloaded games, or how Parallel created bundles for applications in hosted OS.\r\n\r\nWe can even provide a tool or service to help generating installers for developers' apps which can automatically download atom-runtime if it is not installed on user's machine, just like many .NET applications."},"comment":{"url":"https://api.github.com/repos/atom/electron/issues/comments/136732824","html_url":"https://github.com/atom/electron/issues/673#issuecomment-136732824","issue_url":"https://api.github.com/repos/atom/electron/issues/673","id":136732824,"user":{"login":"hokein","id":2557445,"avatar_url":"https://avatars.githubusercontent.com/u/2557445?v=3","gravatar_id":"","url":"https://api.github.com/users/hokein","html_url":"https://github.com/hokein","followers_url":"https://api.github.com/users/hokein/followers","following_url":"https://api.github.com/users/hokein/following{/other_user}","gists_url":"https://api.github.com/users/hokein/gists{/gist_id}","starred_url":"https://api.github.com/users/hokein/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hokein/subscriptions","organizations_url":"https://api.github.com/users/hokein/orgs","repos_url":"https://api.github.com/users/hokein/repos","events_url":"https://api.github.com/users/hokein/events{/privacy}","received_events_url":"https://api.github.com/users/hokein/received_events","type":"User","site_admin":false},"created_at":"2015-09-01T14:04:51Z","updated_at":"2015-09-01T14:04:51Z","body":"Ideally, the run-time mode should work like the way of Steam or [Chrome App Launcher](https://chrome.google.com/webstore/launcher). The main issue is how we handle apps when the run-time upgrades to new version.\r\n\r\nElectron apps suffer from the upgrade of Electron, especially node native modules. The native modules are required to rebuild for each upgrade of Electron due to the C++ ABI issue(There are several __forgot-rebuilt__ crash issues reported by users).\r\n \r\nSteam doesn't suffer from the pain since every game on Steam is a stand-alone program, actually you can launch the game without Steam Client. Neither does Chrome App Launch, because Chrome apps are written in HTML/JS/CSS which are kinds of interpreted languages, there are no gap running in different versions of Chrome.\r\n"}}