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/
next prev parent 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