ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Устаревшая концепция бранчей или стабильный бранч как основа разработки
@ 2020-10-13 19:47 Vitaly Lipatov
  2020-10-13 20:23 ` Aleksey Novodvorsky
                   ` (2 more replies)
  0 siblings, 3 replies; 27+ messages in thread
From: Vitaly Lipatov @ 2020-10-13 19:47 UTC (permalink / raw)
  To: devel; +Cc: sin


Давние поклонники сизифова труда наблюдали появление 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


^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2020-11-10 22:45 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-13 19:47 [devel] Устаревшая концепция бранчей или стабильный бранч как основа разработки Vitaly Lipatov
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

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