From: Vitaly Lipatov <lav@altlinux.ru> To: devel@lists.altlinux.org Cc: sin@altlinux.ru Subject: [devel] Устаревшая концепция бранчей или стабильный бранч как основа разработки Date: Tue, 13 Oct 2020 22:47:55 +0300 Message-ID: <57cc2052066cadf0aea8b0aff037b027@altlinux.ru> (raw) Давние поклонники сизифова труда наблюдали появление Sisyphus, потом, в попытке усилить стабильность Sisyphus, а однажды даже пытался взлететь Daedalus, предназначенный для крайне нестабильных версий пакетов. Чтобы создать условия для разработки стабильного бранча сообществом, возникали бранчи типа t7. Мне кажется, настало время поговорить о том, чтобы и Sisyphus оставить в прошлом. По крайней мере, в его нынешнем виде. Первый момент. Концепция вечно нестабильного репозитория, которым нельзя пользоваться, не очень популярна среди пользователей. Также и несколько теряется смысл для мантейнеров — зачастую они собирают пакеты в этот репозиторий, а сами пользуются другим, более стабильным. Например, p9. Который является репозиторием компании и является точкой возникновения конфликта интересов (на мой взгляд, тут есть проблема в публичном сформулированном полиси развития такого репозитория, но это отдельная тема). Второй момент. Понятие нестабильности сильно изменилось за прошедшие годы. Повысился уровень квалификации в апстримах, больше соблюдается семантическое версионирование в библиотеках, проекты делают стабильные релизы, которые тестируются через CI, причём с серьёзными тестами. То есть культура разработки изменилась. Тесты, Continuous Integration, github, более доступная возможность pull requests. Наконец, сам Open Source перестал быть маргинальным и стал мейнстримом. Всё это ведёт к тому, что свободные проекты выпускают в стабильных релизах код высокого качества, и даже более того, например, в wine каждый коммит вносит атомарные изменения, подтверждённые тестами, то есть сборка из любого коммита стабильна. Третий момент. Снижение роли мантейнера. В связи с ростом культуры апстрима, а также с с большим количеством дистрибутивов, ведущих свою сборку пакетов (что даёт некоторое количество мантейнеров, которые смотрят на апстрим с разных сторон) большинство апстримов стали устроены так, что упаковываются в пакет типовым образом и не требуют специальной обработки. Конечно, я не о феноменах типа ghostscript, но и тому вроде становится лучше. Тут я не то что констатирую факт, а настаиваю на том, что роль мантейнера должна быть снижена, а часть его бессмысленной работы — автоматизирована. Есть вещи, которые может и должен выполнять человек, но это не относится к преобразованию спецификаций из одного формата в другой. Мы всё же имеем дело не с естественным языком. Возможно, что-то ещё я забыл упомянуть, поэтому и пишу сюда. Если вкратце, то я предлагаю сделать p9 основным репозиторием разработки, автоматически портируя все изменения в Сизиф. Это был «жёлтый» заголовок. На самом деле предложение в том, чтобы основной веткой разработки стал репозиторий, который бранчуется при крупных несовместимых изменениях (например, критичных обновлениях тулчейна, glibc или KDE :)). Репозитории Компании (p9 и т.д.) при этом забирают изменения из такого репозитория согласно своим регламентам. Отличия от нынешней схемы (они же — преимущества) я вижу такие: * бранчевание репозитория происходит в момент технологической необходимости (когда весь мир переходит, когда отказались от xorg и перешли на wayland и т.п., когда перешли на php 8 или python 4 или perl 6, или когда решили вернуться на ffmpeg); * разработка мантейнерами ведётся в стабильном бранче, которым можно пользоваться (он умеренно стабилен, на его основе можно делать выпуски дистрибутивов community и т.п.); * Компания сама решает, какие изменения забирать в продуктовый branch, и нет конфликта с мантейнерами; * крупные нестабильные обновления можно готовить в репозитории, который будет являться дополнением к последнему бранчу (в чём-то это сокращение идеи карманов https://www.altlinux.org/Pockets, а, может быть, и наоборот, им приходит время, если таких нестабильных дополнений может быть больше одного; * у сообщества разработчиков появляется стабильный бранч, в развитии и стабильности которого они заинтересованы и могут пользоваться. На самом деле, благодаря тем «гайкам», которые неустанно закручивает ldv@ в части контроля целостности, собираемости (я про sisyphus_check и другие проверки собранных заданий) целостность и стабильность репозитория сильно выросла, и моменты, когда репозиторий развален, практически исключены (об этом можно судить также по достаточно редким случаям откатов репозитория). И эта стабильность делает возможным создания транзакционно стабильного репозитория (не знаю, в рамках тех суток, когда он публикуется). Таким образом мы получим стабильный репозиторий, который дискретно переходит в новое стабильное состояние, исходя из технических требований, и не приводя к бесконечным несовместимым изменениям за время жизни репозитория. Это чем-то похоже на выпуски Fedora, но я не вижу смысла делать бранчевание регулярным (привязанным к какому-то интервалу времени), и нет необходимости (хотя возможно) публиковать дистрибутив на каждом бранче. Кстати, разработчикам не хватает доступного инструмента по проверке пересобираемости (её умеют делать при тестировании для прохождения пакетов в p9, но она плохо доступна мантейнерам Сизифа — мне ничего неизвестно о таком инструменте). Ведь на самом деле большинство библиотек имеет ограниченное количество «пользователей» (пакетов, которые требуют их при сборке), поэтому такая пересборка не тяжела, результат её не обязательно делать фатальным, но она точно приведёт к снижению числа пакетов, которые неожиданно перестают собираться. Даже cmake легко проверяется полной пересборкой использующих его пакетов, хотя это достаточно популярное сборочное средство. Безусловно, это просто мои мысли на тему, навеянные личным опытом, который заключается в том, что собираю я пакеты в Сизиф, а рабочие системы на p9, и это усложняет цепочку проверки того, что собрано, а иногда и мотивирует отправлять пакет без проверки. Извините, что это не доклад на конференции :) -- С уважением, Виталий Липатов, ALT Linux Team
next reply other threads:[~2020-10-13 19:47 UTC|newest] Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-10-13 19:47 Vitaly Lipatov [this message] 2020-10-13 20:23 ` Aleksey Novodvorsky 2020-10-13 22:39 ` Aleksey Novodvorsky 2020-10-14 12:02 ` Vitaly Lipatov 2020-10-14 12:17 ` Anton Farygin 2020-10-14 7:06 ` Sergey V Turchin 2020-10-14 10:39 ` Vitaly Lipatov 2020-10-14 10:55 ` Sergey V Turchin 2020-10-14 14:22 ` Arseny Maslennikov 2020-10-14 14:46 ` Sergey V Turchin 2020-10-14 15:28 ` Arseny Maslennikov 2020-10-15 6:48 ` Sergey V Turchin 2020-10-15 6:50 ` Sergey V Turchin 2020-10-20 17:21 ` Andrey Savchenko 2020-10-20 18:28 ` Alexey Gladkov 2020-10-21 5:52 ` Anton Farygin 2020-10-21 6:59 ` Alexey Gladkov 2020-10-21 7:58 ` [devel] Ресурсы для CI в Sisyphus или про review кода su из coreutuls Anton Farygin 2020-10-21 10:01 ` [devel] " Dmitry V. Levin 2020-10-21 10:18 ` [devel] про review кода su из util-linux Anton Farygin 2020-11-10 22:45 ` [devel] Устаревшая концепция бранчей или стабильный бранч как основа разработки mikhailnov 2020-10-20 20:58 ` Vitaly Lipatov 2020-10-21 5:54 ` Anton Farygin 2020-10-21 1:46 ` Антон Мидюков 2020-10-21 7:29 ` Andrey Savchenko 2020-10-21 7:34 ` Антон Мидюков 2020-10-21 9:56 ` [devel] CI для Сизифа Dmitry V. Levin
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=57cc2052066cadf0aea8b0aff037b027@altlinux.ru \ --to=lav@altlinux.ru \ --cc=devel@lists.altlinux.org \ --cc=sin@altlinux.ru \ /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