{"action":"created","issue":{"url":"https://api.github.com/repos/istio/istio/issues/3348","repository_url":"https://api.github.com/repos/istio/istio","labels_url":"https://api.github.com/repos/istio/istio/issues/3348/labels{/name}","comments_url":"https://api.github.com/repos/istio/istio/issues/3348/comments","events_url":"https://api.github.com/repos/istio/istio/issues/3348/events","html_url":"https://github.com/istio/istio/pull/3348","id":295784153,"number":3348,"title":"(Rfc) adding vendor as submodule","user":{"login":"ldemailly","id":3664595,"avatar_url":"https://avatars2.githubusercontent.com/u/3664595?v=4","gravatar_id":"","url":"https://api.github.com/users/ldemailly","html_url":"https://github.com/ldemailly","followers_url":"https://api.github.com/users/ldemailly/followers","following_url":"https://api.github.com/users/ldemailly/following{/other_user}","gists_url":"https://api.github.com/users/ldemailly/gists{/gist_id}","starred_url":"https://api.github.com/users/ldemailly/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ldemailly/subscriptions","organizations_url":"https://api.github.com/users/ldemailly/orgs","repos_url":"https://api.github.com/users/ldemailly/repos","events_url":"https://api.github.com/users/ldemailly/events{/privacy}","received_events_url":"https://api.github.com/users/ldemailly/received_events","type":"User","site_admin":false},"labels":[{"id":659652351,"url":"https://api.github.com/repos/istio/istio/labels/approved","name":"approved","color":"bfdadc","default":false},{"id":491318011,"url":"https://api.github.com/repos/istio/istio/labels/cla:%20yes","name":"cla: yes","color":"bfdadc","default":false},{"id":780123031,"url":"https://api.github.com/repos/istio/istio/labels/do-not-merge/hold","name":"do-not-merge/hold","color":"bfdadc","default":false}],"state":"open","locked":false,"assignee":{"login":"costinm","id":84202,"avatar_url":"https://avatars1.githubusercontent.com/u/84202?v=4","gravatar_id":"","url":"https://api.github.com/users/costinm","html_url":"https://github.com/costinm","followers_url":"https://api.github.com/users/costinm/followers","following_url":"https://api.github.com/users/costinm/following{/other_user}","gists_url":"https://api.github.com/users/costinm/gists{/gist_id}","starred_url":"https://api.github.com/users/costinm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/costinm/subscriptions","organizations_url":"https://api.github.com/users/costinm/orgs","repos_url":"https://api.github.com/users/costinm/repos","events_url":"https://api.github.com/users/costinm/events{/privacy}","received_events_url":"https://api.github.com/users/costinm/received_events","type":"User","site_admin":false},"assignees":[{"login":"costinm","id":84202,"avatar_url":"https://avatars1.githubusercontent.com/u/84202?v=4","gravatar_id":"","url":"https://api.github.com/users/costinm","html_url":"https://github.com/costinm","followers_url":"https://api.github.com/users/costinm/followers","following_url":"https://api.github.com/users/costinm/following{/other_user}","gists_url":"https://api.github.com/users/costinm/gists{/gist_id}","starred_url":"https://api.github.com/users/costinm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/costinm/subscriptions","organizations_url":"https://api.github.com/users/costinm/orgs","repos_url":"https://api.github.com/users/costinm/repos","events_url":"https://api.github.com/users/costinm/events{/privacy}","received_events_url":"https://api.github.com/users/costinm/received_events","type":"User","site_admin":false},{"login":"rshriram","id":8202871,"avatar_url":"https://avatars1.githubusercontent.com/u/8202871?v=4","gravatar_id":"","url":"https://api.github.com/users/rshriram","html_url":"https://github.com/rshriram","followers_url":"https://api.github.com/users/rshriram/followers","following_url":"https://api.github.com/users/rshriram/following{/other_user}","gists_url":"https://api.github.com/users/rshriram/gists{/gist_id}","starred_url":"https://api.github.com/users/rshriram/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rshriram/subscriptions","organizations_url":"https://api.github.com/users/rshriram/orgs","repos_url":"https://api.github.com/users/rshriram/repos","events_url":"https://api.github.com/users/rshriram/events{/privacy}","received_events_url":"https://api.github.com/users/rshriram/received_events","type":"User","site_admin":false}],"milestone":null,"comments":19,"created_at":"2018-02-09T07:58:34Z","updated_at":"2018-02-13T01:03:57Z","closed_at":null,"author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/istio/istio/pulls/3348","html_url":"https://github.com/istio/istio/pull/3348","diff_url":"https://github.com/istio/istio/pull/3348.diff","patch_url":"https://github.com/istio/istio/pull/3348.patch"},"body":"Alternative to #2691 with all the benefits and more, without the downsides:\r\n\r\nSubmodule is only:\r\nReceiving objects: 100% (4145/4145), 8.26 MiB | 930.00 KiB/s, done.\r\n\r\nNote: adding pruning instruction to Gopkg.toml makes vendor be 54Mb\r\ninstead of 407Mb\r\n\r\nvendor checked in as https://github.com/istio-releases/vendor"},"comment":{"url":"https://api.github.com/repos/istio/istio/issues/comments/365116437","html_url":"https://github.com/istio/istio/pull/3348#issuecomment-365116437","issue_url":"https://api.github.com/repos/istio/istio/issues/3348","id":365116437,"user":{"login":"geeknoid","id":22780957,"avatar_url":"https://avatars3.githubusercontent.com/u/22780957?v=4","gravatar_id":"","url":"https://api.github.com/users/geeknoid","html_url":"https://github.com/geeknoid","followers_url":"https://api.github.com/users/geeknoid/followers","following_url":"https://api.github.com/users/geeknoid/following{/other_user}","gists_url":"https://api.github.com/users/geeknoid/gists{/gist_id}","starred_url":"https://api.github.com/users/geeknoid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geeknoid/subscriptions","organizations_url":"https://api.github.com/users/geeknoid/orgs","repos_url":"https://api.github.com/users/geeknoid/repos","events_url":"https://api.github.com/users/geeknoid/events{/privacy}","received_events_url":"https://api.github.com/users/geeknoid/received_events","type":"User","site_admin":false},"created_at":"2018-02-13T01:03:57Z","updated_at":"2018-02-13T01:03:57Z","author_association":"CONTRIBUTOR","body":"Late to the party here... I just read through all the comments in this PR and its sister PR. Lots of good info and also lots of redundancy. Some overall observations:\r\n\r\n- It seems we have a general consensus that having some form of checked in vendor directory is preferable to the current approach. This is primarily (exclusively?) a usability concern overall, to simplify the workflow and allow fully air-gapped builds.\r\n\r\n- It seems the only reason to consider submodules vs checked in vendor directory is to reduce the size of the git history log and to reduce noise in the commit log. \r\n\r\n- Existing projects seem to favor either our current dependency model (dep, glide, etc), or checked in vendor directory. Nobody has pointed to a project successfully using submodules in the way we are envisaging.\r\n\r\n- Large projects like k8s have used the full checked in vendor directory approach for a while and there doesn't appear to be enough unhappiness to push them to consider alternate approaches. So the importance of keep the git history size small may perhaps be overstated?\r\n\r\n- There are a set of small, but annoying, workflow variations when using submodules which would likely make Istio quirky relative to other projects. We haven't used submodules on a day-to-day basis, so who knows what other weirdness awaits us?\r\n\r\nI'm definitely not a fan of checked in generated files (like .pb.go and .gen.go), and I'm also not happy about having to explicitly house and manage transitive dependencies. Bazel was definitely superior in this regard. But it seems the go model pushes us in this overall unfortunate direction.\r\n\r\nGiven the info I've seen so far, it seems preferable to eschew submodules in order to avoid the unknown unknowns that model has, and accept the not-so-bad known issues with a pruned checked in vendor directory.\r\n\r\nFor this to work, we would need to impose a constraint such that vendor updates must generally be pushed separately from changes to proper Istio code, hopefully by an automated process. Noise in the commit log can be kept to a minimum by updating the vendor directory infrequently (say once a week).\r\n\r\nOccasionally, there would need to be exceptions to the above separation rule in order to accomodate dealing with breaking changes in dependencies. This happens on a regular basis with changes to istio/api in particular.\r\n\r\nMy $0.02.\r\n"}}
{"actor":{"display_login":"geeknoid"}}