ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Michael Pozhidaev <msp@altlinux.ru>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] Угрозы развитию дистрибутива. Пути решения.
Date: Sun, 25 Sep 2011 07:28:00 +0700
Message-ID: <m362kh1n5b.fsf@blard.localdomain> (raw)
In-Reply-To: <20110924223520.GA20031@dad.imath.kiev.ua> (Igor Vlasenko's message of "Sun, 25 Sep 2011 01:35:21 +0300")

Игорь, добрый день!

Думаю, что описанная Вами проблема вполне актуальна и должна
обсуждаться. Хотел бы только обратить внимание на одну деталь, которая
в работе над моими пакетами сильно затормаживает ход дела.

В нашем понятии "пакет" сильно затруднена процедура автоматического
тестирования. Результат работы "робота" непредсказуем. В части пакетов
она могла бы быть возможна, в другой части возможна, но при содействии
мейнтейнера. Фактически, мы ничего не знаем о состоянии пакетов в
Сизифе. 

Как логическое довершение к материалу Вашей статьи, мне кажется, можно
было бы обсудить возможные варианты автоматического тестирования
состояния пакета. Тестирование - это чуть ли не обязательный этап
разработки ПО, с которым у нас как-то, почему-то, дело не сложилось.

Мои две копейки. :))

> Уважаемые коллеги,
>
> хочу поделиться в devel@ своим проектом 
> доклада на OSDN-2011 в Киеве, так как тема касается проблем 
> развития дистрибутива, и, думаю, будет всем интересна.
> Прошу читать и комментировать.
>
> ----------------------------------------
> <текст доклада>
> ----------------------------------------
>
> В этом году мне довелось побывать в Обнинске на конференции
> разработчиков свободных программ.
> К сожалению, мне не удалось лично познакомиться с Алексеем Турбиным,
> зато я услышал от коллег о его пессимистическом прогнозе о
> будущем многих дистрибутивов.
>
> Алексей Турбин отметил, что число пакетов в нашем дистрибутиве, как и
> вообще число Open Source приложений, растет в геометрической
> прогрессии. В то же время число активных майнтайнеров в дистрибутиве
> скорее колеблется вокруг некоторых постоянных значений, связанных с
> плотностью популяции разработчиков и админов.
>
> Исходя из этого, он предсказал, что, как следствие взрывного роста
> пакетов с программами, время, затрачиваемое на сопровождение пакетов
> будет расти, а качество сопровождения каждого отдельного
> пакета будет падать, пока не приведет к невозможности поддерживать
> дистрибутив в актуальном состоянии и его смерти вследствие оттока
> майнтайнеров и пользователей.
>
> Это аналог теории Томаса Мальтуса применительно к дистрибутивам.
>
> Если посмотреть на дистрибутивы ALT Linux, то тенденция взрывного
> роста числа пакетов видна четко.
>
> Master2.2  1780
> Master2.4  3226
> Compact3.0 4569
> branch4.0  6871
> branch5.1  9758
> Sisyphus  12390
>
> Количество майнтайнеров за это время колебалось в районе 100+ человек.
>
> Пессемистический сценарий вполне возможен. Например,
> во времена так и не оформленного в дистрибутив бранча 5.0
> были нехорошие тенденции такого рода с протуханием пакетов 
> и оттоком майнтайнеров и пользователей.
> Тогда ALT Linux справился с ними, и благополучно здравствует.
>
> Но проблема "большее число пакетов требует большего числа ресурсов"
> никуда не делась. 
>
> Итак, что же ждет нас в будущем?
>
> <картинка1.jpg>
> Death Star is approaching the planet Yavin. 
> субтитры:
> The rebel base is on the moon on a far side.
> The moon with the rebel base will be in range in 30 minutes...
> </картинка>
>
> Что же делать, чтобы эта проблема не "выстрелила" в 
> критический момент?
>
> Первое - это снижать затраты ресурсов на сопровождение.
>
> Как пример,
> Когда-то сборка и пересборка исходного пакета была достаточно сложным 
> и кропотливым занятием, отнимавшим заметную долю времени при
> сопровождении пакета. Сейчас эти задачи автоматизированы настолько,
> что субъективно воспринимаются как атомарные операции.
> Репозиторий СПО ``Sisyphus'' может заслуженно гордиться, наверное,
> лучшей в своем классе системой сборки hasher, а также своим
> автоматизированным incoming.
>
> В то же время обновление исходного пакета при выходе новой версии 
> у нас в ALTLinux Team все еще является традиционно ручной задачей, 
> оттягивающей на себя значительную часть времени при сопровождении 
> пакетов. Это слишком расточительно: участников ALTLinux Team не так
> много по сравнению с числом исходных пакетов, что приводит к тому,
> что много пакетов недостаточно хорошо сопровождаются: они отстают
> по версиям, годами не исправляются простые ошибки.
>
> В этом случае снизить затраты на сопровождение позволят роботы обновления.
>
> Пример: робот обновления пакетов perl.
> интересная вещь: робот, который может самостоятельно
> обновлять пакеты по cron,
> снимая с майнтайнера 90% времени на работы. Оставшиеся
> 10% -- это разборки с пакетами, для которых у робота возникли проблемы
> (не хватило зависимостей, отвалился патч, и т.д.).
> Его можно развернуть в песочнице и управлять  через acl.
>
> Второе -  надо полностью и правильно пользоваться теми возможностями,
> которые несет с собой открытый код, в том числе код программных
> пакетов. 
>
> <картинка2.jpg>
> /Luke in the fighter, hearing Obivan's voice/
> субтитры:
> Luke! Use the Source!
> Remember, the Source will be with you. Always.
> </картинка>
>
>
> Вернемся к истокам.
> Спросим себя. "В чем сила, брат?".
>
> Наша сила в Open Source. Пользуясь Open Source, продвинутый пользователь
> Вася Пупкин за 20 минут может изготовить для своей супруги Маши
> персональный офисный пакет, который при запуске поздравит Машу с днем
> рождения, и ему для этого не нужны будут миллионы долларов и десятки
> лет разработки.
>  
> Проблема "большее число пакетов требует большего числа ресурсов"
> проявляет себя потому, что разные дистрибутивы вынужденно дублируют
> усилия друг друга.
> С этой же проблемой связана и мечта об универсальном пакете.
>
> Универсальный пакет - пакет, который можно собрать и установить в
> почти любой дистрибутив. Мечта о универсальном пакете появилась вместе
> с первыми дистрибутивами. 
> Почему упаковщики пакетов дублируют усилия друг друга, ведь пакеты это Open Source?
> Почему не смог родиться универсальный пакет?
>
> Напрашивающийся вывод - сохранять совместимость похоронил 
> не одну сотню дистрибутивов-форков. Иногда эта стратегия работает, в основном
> для нишевых дистрибутивов и небольших изменений.
> Возвращаясь к примеру с продвинутым пользователем Васей Пупкиным,
> можно взять дистрибутив, поменять обои и выпустить диск с "Pupkin Live! (tm)".
> Но когда приходится поддерживать особенности, которые по каким-то
> причинам в базовый дистрибутив не принимаются (например, устаревшие
> особенности ранее вышедшего дистрибутива), то возникают проблемы.
>
> Необходимость вносить изменения вновь и вновь может оказаться слишком
> дорогой платой за совместимость.
>
> Но почему это так?
> и почему упаковщики пакетов дублируют усилия друг друга? 
>
> = Дистрибутивы как диалекты.
>
> Свободное программное обеспечение в целом характеризуется большой
> гибкостью и широкими возможностями адаптации и повторного
> использования. Для задач совместной распределенной разработки
> программного обеспечения создано большое число различных
> инструментальных средств. Эти  инструментальные средства сохраняют
> свою высокую эффективность при распределенной работе над пакетами в
> рамках одного репозитария, но резко снижают свою эффективность при
> пересечении границ дистрибутивов. К примеру, выполнение инструкций
> сборки для исходных пакетов одной и той же программы, например, в
> Debian и ALT Linux, может давать полностью пофайлово идентичные
> бинарные пакеты; при этом, если, скажем, в пакет для  Debian будут
> впоследствии внесены некоторые полезные изменения, то эти изменения,
> скорее всего, не заведомо не получится перенести в исходный пакет той
> же программы, но предназначенный для одного из репозиториев  ALT Linux
> с помощью стандартных утилит diff (1) и patch (1). 
>
> Логика этих утилит лежит в основе большинства современных инструментальных средств,
> которые нацелены на модификацию и сопровождение в рамках общей кодовой базы. 
>
> В то же время пакеты для разных репозиториев скорее подобны
> реализациям одного и того же алгоритма на разных языках
> программирования. Даже если репозитории используют один и тот же
> пакетный менеджер, отличия в пакетной базе, названиях пакетов,
> политиках упаковки и т.д. приводят к тому, что даже срезы одного и
> того же репозитория в разные моменты времени выглядят как диалекты
> одного и того же языка, и для корректного переноса исходного пакета
> между этими срезами зачастую приходится прибегать к портированию. 
>
> Да, исходные пакеты открыты, и майнтайнеры пакетов в разных
> дистрибутивах смотрят в пакеты друг друга.
> Но проблема в отсутствии необходимых инструментов для переноса наработок
> между дистрибутивами. 
>
> Вспомним, какой толчок в разработке ядра Linux произошел 
> при переезде на распределенную систему управления версиями.
>
> Как уже говорилась, логика diff (1) и patch (1)
> плохо работает при пересечении границ дистрибутивов.
> Какие же инструменты нужны?
>
> = Конвертирование пакетов как альтернатива универсальному пакету.
>
> Конвертер магически конвертирует затраченные усилия по сопровождению
> пакета в одном дистрибутиве в усилия по сопровожению
> пакета в другом дистрибутиве.
>
> Конечно, конверсия тоже далеко не бесплатна, но сопровождать один конвертер
> гораздо, гораздо, гораздо дешевле, чем 5-10 тысяч пакетов, которые он
> может сопровождать.
>
> Конвертировать можно 
> * из других дистрибутивов; 
> * из специализированных репозиториев вроде CPAN, HackageDB, Ruby Gems, PyPI;
> Конвертируя, можно получить в итоге 
> "В Греции есть все", "One ring rule them all" дистрибутив.
>
> В конверсии сила открытого программного обеспечения проявляет себя полностью.
>
> Как это работает на практике?
>
> В рамках разработки системы автоматизированного импорта и
> сопровождения программных пакетов srpmimport ведется разработка
> прототипа программного комплекса автоматизации портирования и
> сопровождения программных пакетов из репозитория СПО «fedora» в
> нестабильной ветки репозитория СПО «Sisyphus» fcimport.
>
> Среди других успешных опытов по автоматизации сопровождения исходных
> пакетов надо назвать проекты autoports, cronbuild, CPAN update,
> а также их сопутствующую инфраструктуру.
> Проект autoports во время испытательного срока собрал более 2000
> пакетов для репозитория 5.1.
> В рамках проекта fcimport сейчас сопровождается более 700 пакетов
> репозитория СПО ``Sisyphus'', при чем это только тестовое множество,
> используемое при разработке fcimport.
> В рамках проекта JPPimport сейчас сопровождается более 1000 java пакетов
> репозитория СПО ``Sisyphus''.
>
> Цель этих экспериментов -- исследовать возможность автоматизации
> сопровождения пакета. hasher у нас полностью автоматизировал процесс
> сборки пакета. сопровождение пакета -- более сложная задача,
> но прогресс в этом направлении позволяет освободить майнтайнера
> от механических работ, чтобы у него было больше времени для
> высокоуровневых задач, таких, как исправление ошибок и подгонка
> под стандарты качества дистрибутива.
>
> В отличие от hasher, задачи подготовки и обновления исходного пакета
> невозможно полностью автоматизировать из-за того, что сами
> репозитории программного обеспечения, политики упаковки и инструменты
> сборки находятся в процессе постоянного изменения.
> Поэтому автоматизированная сборка никогда не сможет полностью
> вытеснить ручную. Для нее достаточно, чтобы она была статистически
> успешной с хорошей вероятностью, чтобы ручные работы выполнялись
> только тогда, когда они действительно необходимы.
>
> = Аспектно-ориентированное сопровождение пакетов.
>
> Задача повторного использования уже имеющихся
> наработок других дистрибутивов подобна трансляции с одного
> языка программирования на другой, с той особенностью, что спецификации
> и исходного и конечного языков часто жестко не фиксированы и находятся в
> процессе постоянного изменения. 
>
> Как уже говорилось,
> когда приходится поддерживать особенности, которые по каким-то
> причинам в базовый дистрибутив не принимаются (например, устаревшие
> особенности ранее вышедшего дистрибутива), то возникают проблемы,
> связанные с тем, что необходимо вносить изменения вновь и вновь.
>
> По этой причине система
> автоматизированного импорта и сопровождения программных пакетов
> srpmimport использует аспектно-ориентированный подход к трансляции и
> сопровождению исходных программных пакетов.
>
> При аспектно-ориентированном программировании у нас есть основной код
> и "аспектный", с инструкциями для инструмента связывания, 
> в какие места основного кода должен быть вставлен ("связан") аспектный код.
>
> Тот же подход можно применить и при сопровождении конвертируемых или
> параллельно сопровождаемых пакетов.
>
> Опишем необходимые нам изменения в виде "аспекта", т.е. выпишем 
> наши изменения как набор инструкций на языке редактирования пакетов.
> Это позволяет автоматизировать задачу повторного внесения изменений.
>
> srpmimport использует реализацию языка редактирования пакетов в
> библиотеке RPM::Source::Editor языка perl.
>
> -- 
>
> Dr. Igor Vlasenko
> --------------------
> Topology Department
> Institute of Math
> Kiev, Ukraine

-- 
Michael Pozhidaev. Tomsk, Russia.
Russian info page: http://www.marigostra.ru/

  reply	other threads:[~2011-09-25  0:28 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-24 22:35 Igor Vlasenko
2011-09-25  0:28 ` Michael Pozhidaev [this message]
2011-09-25 21:44   ` Igor Vlasenko
2011-09-25  6:34 ` Hihin Ruslan
2011-09-25 11:27   ` Michael Shigorin
2011-09-25 11:39     ` Aleksey Avdeev
2011-09-25 11:44       ` Aleksey Avdeev
2011-09-25 11:56         ` Hihin Ruslan
2011-09-26 17:33     ` Vitaly Lipatov
2011-09-26 17:45       ` Denis  Medvedev
2011-09-26 19:30       ` Michael Shigorin
2011-10-09 19:23         ` Vitaly Lipatov
2011-10-09 19:32           ` Paul Wolneykien
2011-10-09 20:15             ` [devel] интеграция с OBS Dmitry V. Levin
2011-10-09 20:24               ` Paul Wolneykien
2011-10-09 20:28                 ` Paul Wolneykien
2011-10-11 15:31                 ` Michael Shigorin
2011-10-14 17:36                 ` Радик Юсупов
2011-10-15 17:10                   ` Paul Wolneykien
2011-11-14 19:30                     ` Paul Wolneykien
2011-11-14 22:40                       ` Igor Vlasenko
2011-11-15  8:19                         ` Michael Shigorin
2011-10-10 13:40             ` [devel] Угрозы развитию дистрибутива. Пути решения Denis  Medvedev
2011-10-10 15:03             ` Denis  Medvedev
2011-09-25 22:04   ` Igor Vlasenko
2011-09-26  4:17     ` Hihin Ruslan
2011-09-26  5:09       ` REAL
2011-09-26  6:31     ` Boris Savelev
2011-09-25 11:27 ` Michael Shigorin
2011-09-25 19:47 ` Vitaly Kuznetsov
2011-09-25 21:25   ` Michael Shigorin
2011-09-26  5:16   ` Денис Смирнов
2011-09-26 10:47     ` Ildar Mulyukov
2011-09-27  1:20       ` Денис Смирнов
2011-09-29  7:29     ` Мал Скрылёв
2011-09-29  9:55       ` Igor Vlasenko
2011-10-01  5:53         ` Мал Скрылёв
2011-10-01  7:34           ` Денис Смирнов
2011-10-01 15:08             ` Aleksey Avdeev
2011-10-02  7:24               ` Денис Смирнов
2011-10-02 10:22                 ` Aleksey Avdeev
2011-10-03 13:09                   ` Igor Vlasenko
2011-10-03 13:20                     ` Aleksey Avdeev
2011-10-03 13:35                       ` Igor Vlasenko
2011-10-03 16:02                         ` Андрей Черепанов
2011-10-03 16:25                           ` Aleksey Avdeev
2011-10-03 16:41                             ` Igor Vlasenko
2011-10-04 16:16                         ` Денис Смирнов
2011-10-04 17:31                           ` Igor Vlasenko
2011-10-02 18:16                 ` Igor Vlasenko
2011-10-03  2:58                   ` Денис Смирнов
2011-10-03  9:11                     ` Paul Wolneykien
2011-10-03 11:55                       ` Денис Смирнов
2011-10-03 13:11                         ` Paul Wolneykien
2011-10-04 16:14                           ` Денис Смирнов
2011-10-04 17:38                             ` [devel] Угрозы развитию дистрибутива. Пути решения: gear-subsystem Paul Wolneykien
2011-10-04 17:50                               ` Денис Смирнов
2011-10-04 18:33                                 ` Paul Wolneykien
2011-10-05 12:13                                   ` Денис Смирнов
2011-10-03 13:08                 ` [devel] Угрозы развитию дистрибутива. Пути решения Igor Vlasenko
2011-10-04 20:53               ` [devel] Муть moodle в cronbild (was: Угрозы развитию дистрибутива. Пути решения.) Aleksey Avdeev
2011-10-04 21:36                 ` [devel] Муть moodle в cronbild Aleksey Avdeev
2011-10-04 21:54                   ` Aleksey Avdeev
2011-10-04 22:04                 ` [devel] Путь moodle в cronbild (was: Муть moodle в cronbild) Aleksey Avdeev
2011-10-05  9:49                   ` Igor Vlasenko
2011-10-05 10:56                     ` [devel] Путь moodle в cronbild Aleksey Avdeev
2011-10-05 14:09                       ` Aleksey Avdeev
2011-10-05  9:43                 ` [devel] Муть moodle в cronbild (was: Угрозы развитию дистрибутива. Пути решения.) Igor Vlasenko
2011-10-05 10:49                   ` Igor Vlasenko
2011-10-01 19:40           ` [devel] Угрозы развитию дистрибутива. Пути решения Igor Vlasenko
2011-10-01 20:32           ` [devel] Пробел в архитектуре gear репозиториев, мешающий совместной работе Igor Vlasenko
2011-10-02  7:22             ` Денис Смирнов
2011-10-02 18:15               ` Igor Vlasenko
2011-10-03  2:52                 ` Денис Смирнов
2011-09-29 11:28       ` [devel] Угрозы развитию дистрибутива. Пути решения Денис Смирнов
2011-09-25 22:11 ` Paul Wolneykien
2011-09-26 14:36   ` Denis  Medvedev
2011-09-26 15:38     ` Michael Shigorin
2011-09-26 15:50       ` Paul Wolneykien
2011-09-27 11:42     ` Igor Vlasenko
2011-09-27 13:34       ` Egor Vyscrebentsov
2011-09-29 13:35         ` Денис Смирнов

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=m362kh1n5b.fsf@blard.localdomain \
    --to=msp@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