{"action":"created","issue":{"url":"https://api.github.com/repos/HaxeFoundation/haxelib/issues/193","labels_url":"https://api.github.com/repos/HaxeFoundation/haxelib/issues/193/labels{/name}","comments_url":"https://api.github.com/repos/HaxeFoundation/haxelib/issues/193/comments","events_url":"https://api.github.com/repos/HaxeFoundation/haxelib/issues/193/events","html_url":"https://github.com/HaxeFoundation/haxelib/issues/193","id":64840552,"number":193,"title":"Proposal: Haxelib shim","user":{"login":"jgranick","id":833997,"avatar_url":"https://avatars.githubusercontent.com/u/833997?v=3","gravatar_id":"","url":"https://api.github.com/users/jgranick","html_url":"https://github.com/jgranick","followers_url":"https://api.github.com/users/jgranick/followers","following_url":"https://api.github.com/users/jgranick/following{/other_user}","gists_url":"https://api.github.com/users/jgranick/gists{/gist_id}","starred_url":"https://api.github.com/users/jgranick/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jgranick/subscriptions","organizations_url":"https://api.github.com/users/jgranick/orgs","repos_url":"https://api.github.com/users/jgranick/repos","events_url":"https://api.github.com/users/jgranick/events{/privacy}","received_events_url":"https://api.github.com/users/jgranick/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"back2dos","id":509501,"avatar_url":"https://avatars.githubusercontent.com/u/509501?v=3","gravatar_id":"","url":"https://api.github.com/users/back2dos","html_url":"https://github.com/back2dos","followers_url":"https://api.github.com/users/back2dos/followers","following_url":"https://api.github.com/users/back2dos/following{/other_user}","gists_url":"https://api.github.com/users/back2dos/gists{/gist_id}","starred_url":"https://api.github.com/users/back2dos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/back2dos/subscriptions","organizations_url":"https://api.github.com/users/back2dos/orgs","repos_url":"https://api.github.com/users/back2dos/repos","events_url":"https://api.github.com/users/back2dos/events{/privacy}","received_events_url":"https://api.github.com/users/back2dos/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/HaxeFoundation/haxelib/milestones/6","html_url":"https://github.com/HaxeFoundation/haxelib/milestones/selfupdate","labels_url":"https://api.github.com/repos/HaxeFoundation/haxelib/milestones/6/labels","id":1023222,"number":6,"title":"selfupdate","description":"Get selfupdate to work reliably.","creator":{"login":"back2dos","id":509501,"avatar_url":"https://avatars.githubusercontent.com/u/509501?v=3","gravatar_id":"","url":"https://api.github.com/users/back2dos","html_url":"https://github.com/back2dos","followers_url":"https://api.github.com/users/back2dos/followers","following_url":"https://api.github.com/users/back2dos/following{/other_user}","gists_url":"https://api.github.com/users/back2dos/gists{/gist_id}","starred_url":"https://api.github.com/users/back2dos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/back2dos/subscriptions","organizations_url":"https://api.github.com/users/back2dos/orgs","repos_url":"https://api.github.com/users/back2dos/repos","events_url":"https://api.github.com/users/back2dos/events{/privacy}","received_events_url":"https://api.github.com/users/back2dos/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":0,"state":"open","created_at":"2015-03-16T12:35:09Z","updated_at":"2015-03-28T14:22:51Z","due_on":"2015-03-31T22:00:00Z","closed_at":null},"comments":23,"created_at":"2015-03-27T19:57:49Z","updated_at":"2015-04-20T13:49:47Z","closed_at":null,"body":"# Haxelib Shim\r\n\r\n## Current Problems\r\n\r\nMany users experience problems running `haxelib selfupdate`\r\n\r\nOn a Mac or Linux system, \"/usr/lib/haxe/haxelib\" may require elevated system privileges, and may be locked.\r\n\r\nOn Windows, running \"haxe update.hxml\" afterward feels messy.\r\n\r\nExperienced developers I know do not run `haxelib selfupdate` at all -- they have never heard of it.\r\n\r\nIf we make vital improvements to the Haxe package manager, we need a mechanism that allows users to receive the update.\r\n\r\n## Improvements to Development Process\r\n\r\nThere is no simple way to test changes to the Haxelib client, currently. If you could `haxelib dev haxelib_client path/to/dev/client` it could improve the workflow for improving haxelib.\r\n\r\nIf more developers can contribute to haxelib, it may help prevent critical issues we have had.\r\n\r\n## Proposal\r\n\r\nI propose that we create a shim that is able to detect updated versions of the haxelib client, and prefer those if they are available. However, I propose that it also includes a full compiled version of the haxelib, itself, which allows it run as normal if an update is not found.\r\n\r\nHaxe always comes with a haxelib binary. Alone, the shim functions identically.\r\n\r\nIf a user would run `haxelib upgrade` and find a new `haxelib_client` library, the shim would prefer this version. The user could also `haxelib set haxelib_client` to choose a version, they could `haxelib dev haxelib_client` to work with a development version, or do none of these to use the original.\r\n\r\n## Prototype\r\n\r\nI have built a prototype here:\r\n\r\nhttps://github.com/jgranick/haxelib-shim/blob/master/Main.hx\r\nhttps://github.com/jgranick/haxelib-shim/blob/master/build.hxml\r\n\r\nIt is currently working perfectly on my system. I can `set`, `dev`, or `remove` each version and it responds properly.\r\n\r\nI would be happy to discuss this further.\r\n\r\nThe risk is very low, and something like this would forever improve the use of haxelib."},"comment":{"url":"https://api.github.com/repos/HaxeFoundation/haxelib/issues/comments/94456069","html_url":"https://github.com/HaxeFoundation/haxelib/issues/193#issuecomment-94456069","issue_url":"https://api.github.com/repos/HaxeFoundation/haxelib/issues/193","id":94456069,"user":{"login":"ousado","id":645241,"avatar_url":"https://avatars.githubusercontent.com/u/645241?v=3","gravatar_id":"","url":"https://api.github.com/users/ousado","html_url":"https://github.com/ousado","followers_url":"https://api.github.com/users/ousado/followers","following_url":"https://api.github.com/users/ousado/following{/other_user}","gists_url":"https://api.github.com/users/ousado/gists{/gist_id}","starred_url":"https://api.github.com/users/ousado/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ousado/subscriptions","organizations_url":"https://api.github.com/users/ousado/orgs","repos_url":"https://api.github.com/users/ousado/repos","events_url":"https://api.github.com/users/ousado/events{/privacy}","received_events_url":"https://api.github.com/users/ousado/received_events","type":"User","site_admin":false},"created_at":"2015-04-20T13:49:47Z","updated_at":"2015-04-20T13:49:47Z","body":"  - Is the shim only supposed to solve the \"issue\" of requiring access to privileged directories and if not what else?\r\n  - is a haxelib selfupdate supposed to be able to perform an update for a system-wide haxelib installation without admin rights? If yes, how is it supposed to do that, if not, what's the problem? \r\n  -  How does accepting neko as dependency change the requirement for a shim, re: \"accepting neko as a dependency (in which case we don't need a shim to start with, but ok)\"? \r\n  - What are the semantics of haxelib selfupdate? What's 'update.hxml'? \r\n    A google search: ```site:haxe.org \"haxe update.hxml\" selfupdate``` doesn't answer these questions. \r\n  - What are the policies to ensure that the \"identically functioning\" shim can deal with whatever an updated haxelib did, in case an update becomes unavailable, another update fails, or similar? \r\n  - The current prototype just passes arguments on to the respective haxelib binary, does that mean that haxelib selfupdate is constrained to a certain set of command line arguments, or is the shim only \"identically functioning\" as long as no arguments are added?\r\n  - Is there *any* documentation of the design/architecture/inner workings of haxelib?"}}