From: Alexey Gladkov <legion@altlinux.ru> To: ALT Linux Team development discussions <devel@lists.altlinux.org> Subject: Re: [devel] [#219699] DONE (try 2) del=golang-tools Date: Wed, 20 Feb 2019 22:17:03 +0100 Message-ID: <20190220211703.GD2364@MacBook-PC.fortress> (raw) In-Reply-To: <20190220101221.GA28897@amox.t-linux.by> On Wed, Feb 20, 2019 at 01:12:21PM +0300, Denis Pynkin wrote: > > Гораздо правильнее будет завендорить их, а эти пакеты удалить. > > Так у нас появилось уже внятное полиси про пакетирование Golang? Раньше не было никакого vendor и go.mod. Было только дерево исходников и уверение апстрима, что этого всего будет достаточно и они знают секрет как это всё поддерживать в рабочем состоянии без версионирования. Их секретное кунг-фу было поддержка обратной совместимости в master до самой первой версии и если что-то ломаешь, то делать новый модуль. Но спустя несколько лет к апстриму пришло осознание, что поддерживать обратную совместимость и переименовывать модули не работает даже внутри гугла. Разработчик может даже удалить модуль с github.com и тем самым сломать других. Поэтому им пришлось ввести vendor директории, где можно сохранить копию кода зависимостей. Но гугл не был бы гуглом если бы не пошёл своим путём. Они не сделали сохранения ни какой информации о том, что лежит в vendor. Там просто код. Поэтому появилось множество сторонних проектов, которые сохраняли инфу о версиях и обновляли копию кода (godep, glide, gpm, dep, vndr и т.д.). Учитывая всё сказанное выше в тот момент, когда я начал паковать golang было вроде логично сделать скрипты и макросы, чтобы упростить упаковку исходников в общее дерево и обновлять их и проверять по зависимостям rpm кто от модуля зависит. Оглядываясь назад я считаю, что это было ошибкой. Сейчас в golang осознали, что версии всё-таки нужны. В golang 1.11 создадут модули с semver, но с своими особенностями. Будет поддержка vendor директории. Для интересующихся: https://github.com/golang/go/wiki/Modules После работы с довольно большими проектами на golang я сейчас считаю, что класть зависимости в vendor директорию единственный способ как поддерживать проекты на golang. Если не просто класть код руками туда, а использовать go.mod или godep, то понять кто с чем собран становится достаточно просто. Модули в пакетах всё равно не дают выигрыша так как после обновления модуля нужно пересобрать всех конечных потребителей (цепочка зависимостей может быть длинной). > Лично я бы с удовольствием выкинул бы те 30+ пакетов-зависимостей, > которые пришлось вливать ради LXD. > > Можно ли глянуть на какой-нибудь пакет, где используется вендоринг? http://git.altlinux.org/gears/m/md2man.git или вот апстримные проекты: https://github.com/docker/distribution https://github.com/kubernetes/kubernetes https://github.com/etcd-io/etcd -- Rgrds, legion
next prev parent reply other threads:[~2019-02-20 21:17 UTC|newest] Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-01-22 10:54 ` Dmitry V. Levin 2019-01-22 11:08 ` Alexey Gladkov 2019-01-22 11:12 ` Alexey Gladkov 2019-01-22 11:16 ` Dmitry V. Levin 2019-01-22 14:55 ` Igor Vlasenko 2019-02-05 17:49 ` Dmitry V. Levin 2019-02-05 20:58 ` Igor Vlasenko 2019-02-06 0:17 ` Dmitry V. Levin 2019-02-06 5:52 ` Vladimir Didenko 2019-02-19 17:03 ` Dmitry V. Levin 2019-02-19 17:08 ` Alexey Gladkov 2019-02-19 17:21 ` Vladimir Didenko 2019-02-20 10:12 ` Denis Pynkin 2019-02-20 21:17 ` Alexey Gladkov [this message] 2019-03-14 20:42 ` Dmitry V. Levin 2019-02-19 22:14 ` Igor Vlasenko 2019-02-19 22:48 ` Dmitry V. Levin 2019-02-19 23:14 ` Denis Pynkin 2019-02-19 23:27 ` Alexey Gladkov 2019-02-19 23:32 ` Dmitry V. Levin 2019-02-19 23:46 ` Alexey Gladkov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190220211703.GD2364@MacBook-PC.fortress \ --to=legion@altlinux.ru \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git