{"action":"opened","issue":{"url":"https://api.github.com/repos/ipfs/go-ipfs/issues/4831","repository_url":"https://api.github.com/repos/ipfs/go-ipfs","labels_url":"https://api.github.com/repos/ipfs/go-ipfs/issues/4831/labels{/name}","comments_url":"https://api.github.com/repos/ipfs/go-ipfs/issues/4831/comments","events_url":"https://api.github.com/repos/ipfs/go-ipfs/issues/4831/events","html_url":"https://github.com/ipfs/go-ipfs/issues/4831","id":306296952,"number":4831,"title":"RFC: Check-in dependencies using non-gx paths","user":{"login":"Stebalien","id":310393,"avatar_url":"https://avatars2.githubusercontent.com/u/310393?v=4","gravatar_id":"","url":"https://api.github.com/users/Stebalien","html_url":"https://github.com/Stebalien","followers_url":"https://api.github.com/users/Stebalien/followers","following_url":"https://api.github.com/users/Stebalien/following{/other_user}","gists_url":"https://api.github.com/users/Stebalien/gists{/gist_id}","starred_url":"https://api.github.com/users/Stebalien/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Stebalien/subscriptions","organizations_url":"https://api.github.com/users/Stebalien/orgs","repos_url":"https://api.github.com/users/Stebalien/repos","events_url":"https://api.github.com/users/Stebalien/events{/privacy}","received_events_url":"https://api.github.com/users/Stebalien/received_events","type":"User","site_admin":false},"labels":[{"id":450112684,"url":"https://api.github.com/repos/ipfs/go-ipfs/labels/build","name":"build","color":"1d76db","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-03-18T23:34:37Z","updated_at":"2018-03-18T23:34:37Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"Currently, we check-in dependencies using gx paths. As far as I know, we do this to prevent users from running `go get github.com/ipfs/go-ipfs` and then complaining when the resulting binary doesn't work.\r\n\r\nUnfortunately, leaving files in this rewritten state makes rebasing, merging, and reviewing painful. A simple dependency update tends to change a bunch of unrelated files. Worse, we occasionally end up importing gx packages that don't appear in packages.json.\r\n\r\nProposal:\r\n\r\n1. Don't commit changes in the rewritten state.\r\n2. Add a poison dependency that *only* builds with gx. This prevents users from building without gx (unless they know to remove this poison file). We could also make the non-gx version build but fail at runtime with a very obvious error message.\r\n\r\nDrawbacks:\r\n\r\n1. We'd need to rewrite before building. Luckily, this only takes about 3s (on my machine at least).\r\n2. We'd probably want to build in a temporary directory to avoid rewriting the files the user is working on. However, I'm pretty confident we can do this without too much trouble."}}
{"actor":{"display_login":"Stebalien"}}