{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/15748","repository_url":"https://api.github.com/repos/JuliaLang/julia","labels_url":"https://api.github.com/repos/JuliaLang/julia/issues/15748/labels{/name}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/15748/comments","events_url":"https://api.github.com/repos/JuliaLang/julia/issues/15748/events","html_url":"https://github.com/JuliaLang/julia/pull/15748","id":145412342,"number":15748,"title":"RFC: Distribute an OS X Installer","user":{"login":"slarew","id":1425453,"avatar_url":"https://avatars.githubusercontent.com/u/1425453?v=3","gravatar_id":"","url":"https://api.github.com/users/slarew","html_url":"https://github.com/slarew","followers_url":"https://api.github.com/users/slarew/followers","following_url":"https://api.github.com/users/slarew/following{/other_user}","gists_url":"https://api.github.com/users/slarew/gists{/gist_id}","starred_url":"https://api.github.com/users/slarew/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/slarew/subscriptions","organizations_url":"https://api.github.com/users/slarew/orgs","repos_url":"https://api.github.com/users/slarew/repos","events_url":"https://api.github.com/users/slarew/events{/privacy}","received_events_url":"https://api.github.com/users/slarew/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/JuliaLang/julia/labels/build","name":"build","color":"444444"},{"url":"https://api.github.com/repos/JuliaLang/julia/labels/mac","name":"mac","color":"DDDDDD"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-04-02T20:06:11Z","updated_at":"2016-04-04T02:47:18Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/JuliaLang/julia/pulls/15748","html_url":"https://github.com/JuliaLang/julia/pull/15748","diff_url":"https://github.com/JuliaLang/julia/pull/15748.diff","patch_url":"https://github.com/JuliaLang/julia/pull/15748.patch"},"body":"I wrote some scripts that properly codesign and package up a Julia distribution into an installer for OS X.\r\n\r\nI propose either distributing both the OS X app *and* an OS X installer, or entirely move to only distributing an OS X installer.\r\n\r\nMotivation: I personally prefer installing Julia directly into `/usr/local`.  If you already have Git and use other command line tools regularly, having Julia in `/usr/local` just feels right.  When Julia is inside an app bundle, the julia binary is not in the `PATH`, requiring extra knowledge and steps from the user who does not want to double click the app.  Furthermore, the Julia app is merely a wrapper (launches Terminal.app and runs the embedded julia binary) and not a typical OS X application or even IDE.  Using the OS X installer avoids the hassle of manually unpacking an archive and moving it into place.  Moreover, the installer has both a UI and command line interface for regular and power users alike.\r\n\r\nI think there are some benefits to the Julia app that is currently distributed for OS X:\r\n\r\n1. Easy \"drag-n-drop\" install.\r\n2. Easy uninstall (just delete app or move app to trash).\r\n3. Easy to run (double click the app).\r\n4. Included Git (for those without it).\r\n5. Simultaneous availability of multiple versions of Julia.\r\n\r\nThe first three points are arguably user friendly for novices.  To compare the installer approach to the benefits of the app:\r\n\r\n1. The installer is nearly as easy to use for installation as drag-n-drop.  However, it currently requires admin privileges.\r\n2. The installer adds an uninstall script under `sbin/` (but user must be told it exists).\r\n3. Once installed, the user must know how to launch a shell and type `julia` (automated by the double click app approach).  An optional wrapper \"Julia app\" could be added to the installer that mimics the current Julia app.\r\n4. Git could be added to the installer as an optional (opt-in or -out) component.\r\n5. Supporting simultaneous install and switching between versions could be supported, but would require more thought for a good design.\r\n\r\nI think distributing an app inside a DMG has some initial advantages for regular/novice users, but the burden is diminished or reversed for those who are comfortable working with a shell.\r\n\r\nIf you want to test the installer that is built by this script, you can find a copy at [my personal site](https://www.slarew.net/julia-os-x-installer/).\r\n\r\nI believe the requirement of admin privileges could be removed.  I created an installer package that was able to target directories in the user's home folder without admin privileges. However, the installer would fail (with a cryptic error message) if the user said to target his or her home folder but did not manually change the install location to be within the home folder.  I suspect this could be fixed if some javascript was added to the installer package with the correct logic.\r\n\r\nOriginal pr #15746"},"comment":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/comments/205108949","html_url":"https://github.com/JuliaLang/julia/pull/15748#issuecomment-205108949","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/15748","id":205108949,"user":{"login":"vtjnash","id":330950,"avatar_url":"https://avatars.githubusercontent.com/u/330950?v=3","gravatar_id":"","url":"https://api.github.com/users/vtjnash","html_url":"https://github.com/vtjnash","followers_url":"https://api.github.com/users/vtjnash/followers","following_url":"https://api.github.com/users/vtjnash/following{/other_user}","gists_url":"https://api.github.com/users/vtjnash/gists{/gist_id}","starred_url":"https://api.github.com/users/vtjnash/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vtjnash/subscriptions","organizations_url":"https://api.github.com/users/vtjnash/orgs","repos_url":"https://api.github.com/users/vtjnash/repos","events_url":"https://api.github.com/users/vtjnash/events{/privacy}","received_events_url":"https://api.github.com/users/vtjnash/received_events","type":"User","site_admin":false},"created_at":"2016-04-04T02:47:18Z","updated_at":"2016-04-04T02:47:18Z","body":"i believe it would be more correct to install to `/opt/julia-v0.X` and install a symlink into `/usr/local/bin/julia`. however, i'm not a huge fan of hiding gunzip behind a huge installer package. it's what we do on windows to give it a \"native\" feel, but i find it a huge pita. i would rather provide some convenient way to suggest the user calls from their REPL:\r\n```\r\nrun(`sudo ln -s $JULIA_HOME/julia /usr/local/bin/julia`)\r\n```"}}