Skip to main content

Конституционная анархия Debian

Конституционная анархия Debian

Автор: Петр Новодворский
Опубликовано в журнале "Компьютерра" №46 от 04 декабря 2001 года

 

 

Debian - это операционная система, основанная на свободном программном обеспечении и использующая ядро Linux. Ее основными преимуществами перед другими дистрибутивами, с нашей точки зрения, являются:

-         многоплатформность. Debian функционирует практически на всех платформах, на которые портировано ядро Linux. Четкая, продуманная и в большинстве случаев абстрагированная от конкретного ядра структура пакетов Debian позволила создать и первый дистрибутив, основанный на ядре GNU/Hurd (Debian GNU/Hurd);

-         стабильность. Релизы Debian отличаются высокой устойчивостью и малым количеством критических ошибок, что позволяет использовать эту ОС на «боевых» серверах. Следует отметить и то, что обнаруженные в пакете ошибки быстро исправляются, и системный администратор может оперативно установить исправленную версию;

-         гигантская база пакетов. На сегодняшний день Debian содержит около четырех тысяч пакетов со свободным программным обеспечением. Пакеты могут ставиться как по сети, так и с носителей;

-         большое количество разработчиков и открытая модель разработки. Debian разрабатывают и поддерживают (открыто, через Internet) около семисот человек из самых разных стран (что, кстати, сильно влияет на локализацию и многоязыковую поддержку), тогда как большая часть других дистрибутивов разрабатывается малыми группами людей или коммерческими компаниями.

 

 

Проблемы

Разумеется, такой масштабный проект ставит ряд проблем. Некоторые из них типичны для любых крупных проектов по разработке ПО, некоторые специфичны для свободного ПО:

 

 

 

 

 

 

-         координация действий разработчиков. Ясно, что действия большой группы людей (причем территориально разделенных, находящихся в разных часовых поясах и зачастую не имеющих фиксированного рабочего дня), необходимо регулировать;

-         работа с пользователями и техническая поддержка. Пользователям свойственно задавать вопросы. Если на них не отвечать, пользователи уйдут к тем, кто ответит. Может быть, ответит за деньги, но удовлетворит извечную тягу пользователей к знаниям. Пользователи - источник сообщений об ошибках, и взаимосвязь между пользователем и разработчиком необходимо наладить и отрегулировать;

-         управление релизом. Должна быть схема, позволяющая принимать решение о выпуске и тем или иным образом позволяющая отслеживать качество релиза;

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

-         управление оборудованием. У проекта Debian имеется набор серверов для хостинга архива, функционирования скриптов, списков рассылки, сайта www.debian.org и просто предоставления shell-доступа разработчикам. Каким образом администрировать эти серверы? Где их держать и как платить за bandwidth?

 

Решение проблем

Все перечисленные проблемы (за исключением технической поддержки пользователей и управления оборудованием) в «обычных» проектах принято решать путем образования руководящих органов, отвечающих за каждое из направлений. То есть на ключевых постах мы имеем лиц, основное занятие которых - руководить. Не стоит рассказывать, «как узок их круг и как далеки они от подчиненных» и к чему это чаще всего приводит. Опять-таки, сосредоточение власти в руках одного-двух человек ведет к тому, что недостатки каждого из них становятся недостатками всего проекта.

К тому же подобный метод не сработает в сообществе свободного ПО, поскольку там нет разделения на «начальников и подчиненных». Каждый - «волонтер», и все обладают одинаковыми правами.

В сообществе Debian найден путь решения всех этих проблем, не ущемляющий ничьих прав и при этом помогающий созданию стройной, стабильной системы. Имя этому решению - регулирующие документы (policies). Практически каждый этап деятельности разработчика и функционирования проекта в целом регулируется соответствующим документом. Вот некоторые из них.

1.      Конституция Debian. Регулирует принятие решений, важных для всего проекта, процедуры выбора Лидера Проекта, а также права и обязанности различных групп разработчиков Debian, таких как Технический Комитет или Секретарь Проекта.

2.      Debian policy. Регулирует подготовку и строение пакетов, различные ситуации при подготовке пакетов и т. д. Иными словами, policy - это документ, регулирующий техническую сторону Debian (в отличие от Конституции, которая регулирует административную сторону).

3.      Критерии свободного программного обеспечения Debian. О них - чуть ниже.

 

Работа члена команды

Что же делает собственно разработчик? То есть как организован сам процесс?

Подготовку пакета и его загрузку в архив можно разбить на следующие стадии:

1.      Программа, удовлетворяющая Определению свободного программного обеспечения Debian и не встретившая возражений со стороны сообщества разработчиков, путем применения набора специальных утилит компилируется в пакет.

Здесь следует отметить очень важную вещь: в Debian для подтверждения личности разработчика используется GnuPG (свободная реализация OpenPGP, совместимая с PGP). Все открытые ключи разработчиков собираются в связку и проверяются с помощью GnuPG. Абсолютно все пакеты подписываются ключом разработчика на стадии сборки пакета во избежание появления троянских программ, вирусов и прочего. Таким образом, GnuPG снимает проблему идентифицирования разработчика в подобном распределенном проекте. Разумеется, использование GnuPG- и MD5-хеширования тоже защищает пакет от ошибок при передаче, случайных или намеренных. В Debian в качестве метода доступа на компьютеры проекта используется ssh, что опять-таки защищает соединения от возможного перехвата паролей.

2.      После исправления всех очевидных ошибок и неочевидных несоответствий policy пакет загружается на один из ftp-серверов проекта в специальный каталог, служащий очередью на установку в архив. Ежедневно в определенное время специальная программа распаковывает загруженные пакеты и (если не произошло ошибок при распаковке) устанавливает их в архив, обновляя при этом индексы архива.

3.      Каждый день в определенное время специальные программы под названием autobuilders проходят по архиву и автоматически распаковывают, а затем компилируют пакеты для архитектур, отличающихся от загруженной. Таким образом, в архив инсталлируются пакеты для всех поддерживаемых архитектур, даже если разработчик не имеет возможности компилировать его где-либо, кроме i386 (естественно, существуют методы ограничить платформы для непереносимых программ, но такие пакеты не приветствуются). В случае, если сборка пакета прошла с ошибкой на какой-либо из платформ, разработчику отправляется уведомление, которое затем переходит в разряд критических ошибок.

Таким образом, многоплатформность достигается переносимостью самих программ, и в большинстве случаев особых усилий для этого не требуется.

4.      С главного сервера собранные пакеты расходятся по «зеркалам», расположенным по всему миру.

 

Пакетная политика

Одно из важнейших качеств операционной системы - ее целостность. В Debian на сегодня включены 4754 программы и библиотеки, они должны взаимодействовать и не мешать работе друг друга. Об этом заботится специальный набор правил, описывающих общее устройство системы, ее внутренний дизайн. Есть правила разработки: как включать новые программы в ОС и как соединять это все системой управления пакетами.

В качестве свода «правил» выступает Debian policy. Интересно, что Debian policy продумана настолько, что позволяет создавать даже автоматизированные средства проверки пакетов на соответствие ей.

Все пакеты, включенные в главную часть Debian, удовлетворяют критериям свободного программного обеспечения Debian, которые и определяют, что мы понимаем под термином free software. Это отлично работает тогда, когда нужно решить, подходит очередная лицензия от очередного коммерческого гиганта для Debian или нет. Учитываются следующие требования: свободное модифицирование, свободное распространение и свободное использование 1.

Также важно, чтобы лицензия не была создана специально для Debian. Если лицензия не проходит, мы не отвергаем пакет, и если кто-то хочет, чтобы он присутствовал в архиве Debian (и лицензия продукта разрешает подобное его распространение), пакет может быть помещен в секцию non-free. Для пакетов из этой секции Debian предоставляет всю свою инфраструктуру, но они не включаются в официальные компакт-диски и не являются частью дистрибутива.

Критерии free software и правила помещения пакета в Debian обязательны к выполнению. Если какая-то часть системы не отвечает требованиям, она может быть не включена в следующую версию ОС. Каждый разработчик обязан при вступлении в Debian знать и понимать все эти правила.

 

Работа с пользователями и техническая поддержка

Система отслеживания ошибок - главное средство общения между пользователями и разработчиками. С помощью этой системы пользователи сообщают сопровождающему программы о найденных ошибках, выставляют им приоритет. Самый высокий приоритет ошибки - release critical, то есть «критичная для релиза», которая недопустима в новой версии.

Управление выпуском версий ОС в данном случае просто и не требует активного участия человека. Новая версия дистрибутива выпускается, когда в программах избавляются от всех ошибок release critical. В принципе, выпускать новую версию может не человек, а программа. Однако в Debian этой программой управляет разработчик, чья должность называется менеджер релиза.

 

Управление оборудованием

У Debian имеется набор серверов под все архитектуры, на которые он портируется. Из них 17 доступны всем разработчикам. Эти машины Debian или куплены на деньги, пожертвованные проекту Debian спонсорами, или подарены ими же (среди спонсоров - IBM, Sun, Hewlett-Packard). Машины подключены к сети благодаря VA Systems, Brainfood и университетам, поддерживающим разработку Debian.

Чтобы поддерживать такое количество разработчиков, требуется немало ответственных людей - администраторов Debian. Они следят за состоянием серверов удаленно и в экстренных случаях едут на место - к провайдеру. Часто этим людям платит фирма, предоставляющая хостинг, а иногда это - добровольцы. Администраторы - одна из важнейших ролей в проекте Debian.

Для разработчиков есть специальный набор правил пользования машинами Debian. Из правил следует, что они могут использоваться для разработки пакетов, чтения почты и занятия другими проектами, связанными со свободным ПО. При использовании машин в незаконных или коммерческих целях разработчик может быть исключен из проекта.

 

Чуть-чуть о политике

Основной закон для сообщества разработчиков - конституция Debian. Она определяет права разработчиков различных должностей. У лидера проекта очень небольшие права, он практически не управляет проектом. Лидер может принимать решения по вопросам, за которые никто не отвечает, предлагать к принятию новые законы, использовать решающий голос.

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

В конституции есть отдельная глава об организации SPI (Software For Public Interests). Эта зарегистрированная в США организация обслуживает финансовые нужды проекта Debian. Например, пожертвования Debian идут на счета SPI.

Следует отметить, что конституция никому не дает привилегий над другими и, таким образом, не вносит никакой дискриминации. Абсолютной властью в Debian обладает только абсолютное большинство разработчиков.

 

Процесс принятия в разработчики

Особого интереса заслуживает процесс принятия в официальные разработчики.

Каждый претендент на место официального разработчика проходит несколько тестов. Для начала претенденту надо проделать некоторую работу для Debian и тем самым показать заинтересованность в проекте. Затем он должен получить от официального разработчика подпись своего GnuPG ключа. На этом основано доверие между разработчиками в проекте Debian. Далее претендент проходит тест на умение собирать пакеты Debian, а так же на знание технических и «философских» документов.

И, самое важное, претендент обязан согласиться с Социальным контрактом Debian. Этим он обязуется:

-        сохранять Debian свободным на 100%;

-       не скрывать исправления и изменения программ и отсылать их авторам;

-       не скрывать проблем. Если разработчику известна ошибка, он не должен скрывать ее;

-       понимать, что главное для Debian - ее пользователи и свободное программное обеспечение.

После прохождения всех тестов претендент обычно становится официальным разработчиком.

Изложенная модель проекта доказала и продолжает доказывать свою успешность. Подтверждением этому может служить огромное количество пользователей, которые выбрали Debian (в их числе даже одна космическая станция, чем мы особенно гордимся). Как нам кажется, эту модель можно с успехом применять и в компаниях-разработчиках коммерческого программного обеспечения. Мы по себе знаем, как приятно работать в подобной атмосфере и с такими людьми, - а чем приятнее и интереснее работать разработчикам, тем выше доходы компании. Мы также хотели показать, что в мире свободного ПО, иногда воспринимаемом компьютерной индустрией как «небольшое развлечение», могут и будут существовать проекты, дающие отличный, динамично развивающийся продукт.