Для начинающих
Для знатоков
Для души
О нас
|
Федеральная целевая программа "Электронная Россия"
Рабочая встреча "Свободное программное обеспечение"
Организаторы: ГУ Высшая школа экономики и Издательский дом "Компьютерра"
Спонсоры: IBM и Sun Microsystems
Место и время: Москва, ВШЭ (Мясницкая, 20), 28.11.01
Конституционная анархия Debian
Debian (www.debian.org) -- это операционная система, основанная на свободном
программном обеспечении (ПО) и использующая ядро Linux. Основными преимуществами
Debian перед другими дистрибутивами, с нашей точки зрения, являются:
- многоплатформенность. Debian функционирует практически на всех платформах,
на которые портировано ядро Linux. Четкая, продуманная и в большинстве случаев
абстрагированная от конкретного ядра структура пакетов Debian позволила создать
и первый дистрибутив, основанный на ядре GNU/Hurd (Debian GNU/Hurd);
- стабильность. Стабильные релизы Debian отличаются высокой устойчивостью
и малым количеством критических ошибок, что позволяет использовать их на `боевых'
серверах. Следует также отметить и то, что все обнаруженные позднее серьезные
ошибки в пакетах релиза быстро исправляются, и системный администратор имеет
возможность оперативной установки исправленных пакетов;
- гигантская база пакетов. На сегодняшний день Debian содержит около
четырех тысяч пакетов со свободным программным обеспечением. Пакеты могут ставиться
как по сети, так и с носителей.
- большое количество разработчиков и открытая модель разработки. Debian
разрабатывают и поддерживают около 700 человек, распределенных по всему миру
(что, кстати, сильно влияет на локализацию и многоязыковую поддержку). В то
время как большая часть других дистрибутивов разрабатывается малыми группами
людей или коммерческими компаниями, Debian разрабатывается полностью открыто
через Internet, таким же образом, каким разрабатывается само ядро Linux;
Ясно, что разработка такого масштабного проекта ставит ряд проблем. Некоторые
из них типичны для любых крупных проектов по разработке ПО, некоторые специфичны
для свободного ПО:
- координация действий разработчиков. Ясно, что действия такой большой
группы людей (причем людей территориально разделенных, находящихся в разных
часовых поясах и зачастую не имеющих фиксированного рабочего дня) необходимо
как-то регулировать;
- работа с пользователями и техническая поддержка. Пользователям свойственно
задавать вопросы. Если на их вопросы не отвечать, то пользователи уйдут к тем,
кто ответит. Может быть, ответит за деньги, но удовлетворит извечную тягу пользователей
к знаниям. Пользователи -- источник сообщений об ошибках, и взаимосвязь пользователь-разработчик
необходимо наладить и отрегулировать;
- управление релизом. Должна быть схема, позволяющая принимать решение
о выпуске, и каким-то образом позволяющая отслеживать качество релиза;
- управление идеологией. Под этим понимается PR проекта, а также отношения
между самими разработчиками. Как добиться доверия разработчиков друг к другу?
Как исключить проникновение злоумышленников в этот круг? Как разрешать споры?
- управление оборудованием. У проекта Debian имеется набор серверов для
хостинга архива, функционирования скриптов, списков рассылки, сайта www.debian.org
да и просто предоставления shell-доступа разработчикам. Каким образом администрировать
эти сервера? Где их держать, и как платить за bandwidth?
Все перечисленные проблемы (за исключением технической поддержки пользователей
и управления оборудованием) в `обычных' проектах принято решать путем
образования руководящих органов, отвечающих за каждое из направлений. То есть
мы имеем на руководящих постах руководителей, прямое занятие которых -- руководить.
Не стоит рассказывать, `как узок их круг, и как далеки они от подчиненных',
и к чему это чаще всего приводит. Опять-таки, сосредоточение власти в руках
одного-двух человек ведет к тому, что недостатки каждого из них становятся недостатками
всего проекта.
Плюс ко всему стоит отметить, что подобный метод не сработает в сообществе свободного
ПО, поскольку там нет разделения на `начальников и подчиненных'. Каждый
-- `волонтер', и все изначально обладают одинаковыми правами.
В сообществе Debian найден путь решения всех этих проблем, не ущемляющий ничьих
прав и при этом помогающий созданию стройной, стабильной системы. Имя этому
решению -- регулирующие документы (policies). Практически каждая часть деятельности
разработчика и функционирования всего проекта в целом регулируется соответствующим
документом.
Вот список некоторых из наших документов:
- Конституция Debian -- документ, регулирующий принятие решений, важных для всего
проекта в целом, процедуры выбора Лидера Проекта, а также права и обязанности
различных групп разработчиков Debian, таких как Технический Комитет, или Секретарь
Проекта.
- Debian policy -- документ, регулирующий подготовку пакетов, строение пакетов,
различные ситуации при подготовке пактов и т.д. Иными словами, policy -- это
документ, регулирующий техническую сторону Debian (в отличие от Конституции,
которая регулирует административную сторону).
- Критериии свободного программного обеспечения Debian. О них -- чуть ниже.
Каким же образом происходит работа собственно разработчика? То есть как организован
сам процесс?
Подготовку пакета и загрузку его в архив можно разбить на следующие стадии:
- Программа, удовлетворяющая Определению свободного программного обеспечения Debian
и не встретившая никаких возражений со стороны сообщества разработчиков, путем
применения набора специальных утилит компилируется в пакет. Здесь следует отметить
очень важную вещь: в Debian для подтверждения личности разработчика используется
GnuPG (свободная реализация OpenPGP, совместимая с PGP). Все открытые ключи
разработчиков собираются в связку, и затем проверяются с его же (GPG) помощью.
Абсолютно все пакеты подписываются ключом разработчика на стадии сборки пакета
во избежание появления троянских программ, вирусов и прочего. Таким образом,
с помощью GPG снимается проблема идентифицирования разработчика в подобном распределенном
проекте. Естественно, что использование GPG и MD5-хеширования также защищает
пакет от ошибок при передаче, случайных или намеренных. В Debian в качестве
метода доступа на компьютеры проекта используется ssh, что опять-таки защищает
соединения от возможного перехвата паролей.
- После исправления всех очевидных ошибок и неочевидных несоответствий policy
пакет загружается на один из ftp-серверов проекта в специальный каталог, служащий
очередью на установку в архив. Каждый день в определенное время специальная
программа распаковывает загруженные пакеты и (если не произошло ошибок при распаковке)
устанавливает их в архив, обновляя при этом индексы архива.
- Каждый день в определенное время специальные программы под названием autobuilders
проходят по архиву и автоматически распаковывают, а затем компилируют пакеты
для архитектур, отличающихся от загруженной. Таким образом, в архив инсталлируются
пакеты для всех поддерживаемых архитектур, даже если разработчик не имеет возможности
компилировать его где-либо кроме i386 (естественно, существуют методы ограничить
платформы для непереносимых программ, но такие пакеты не приветствуются). В
случае, если сборка пакета прошла с ошибкой на какой-либо из платформ, разработчику
отправляется уведомление, которое затем переходит в разряд Критических Ошибок.
- Таким образом, многоплатформенность достигается переносимостью самих программ,
и в большинстве случаев особенных усилий для этого не прилагается.
- С главного сервера (ftp.debian.org) собранные пакеты расходятся по `зеркалам',
расположенным по всему миру.
Одно из важнейших качеств операционной системы -- ее целостность. В Debian
на сегодня включены 4754 программ и библиотек, они должны взаимодействовать
и не мешать работе друг друга. Об этом заботится специальный набор правил, описывающих
общее устройство системы, ее внутренний дизайн. Есть правила разработки: как
включать новые программы в ОС и как соединять это все воедино системой управления
пакетами.
В качестве свода `правил' выступает Debian policy. Интересно то, что
Debian policy продумана настолько, что это позволяет создавать даже автоматизированные
средства проверки пакетов на соответствие ей.
Все пакеты, включенные в главную часть Debian, удовлетворяют Критериям свободного
программного обеспечения Debian. Эти критерии и определяют, что мы понимаем
под термином `free software'. Это отлично работает тогда, когда нужно
решить -- подходит ли очередная лицензия от очередного коммерческого гиганта
для Debian, или не подходит. Учитываются следующие требования: свободное модифицирование,
свободное распространение и свободное использование
{Критерии Debian послужили основой для определения `программного обеспечения
с открытыми исходными текстами' (см. www.opensource.org). -- Ред.}
Также важно, чтобы лицензия не было создана специально для Debian. Если лицензия
не проходит, то мы не отвергаем пакет, и если кто-то хочет, чтобы он присутствовал
в архиве Debian (и лицензия продукта разрешает подобное его распространение),
пакет может быть помещен в секцию non-free. Для пакетов из этой секции Debian
предоставляет всю свою инфраструктуру, но они не включаются в официальные компакт-диски
и не являются частью дистрибутива.
Критерии `free software' и правила помещения пакета в Debian обязательны
к выполнению. Если какая-то часть системы не отвечает требованиям, она может
быть не включена в следующую версию ОС. Каждый разработчик обязан при вступлении
в Debian знать и понимать все эти правила.
Работа с пользователями и техническая поддержка
Система отслеживания ошибок -- главное средство общения между пользователями
и разработчиками. С помощью этой системы пользователи сообщают сопровождающему
программы о найденных ошибках, выставляют им приоритет. Самый высокий приоритет
ошибки -- release critical, то есть `критичная для релиза', сохранение
которой недопустимо при выпуске новой версии.
Управление выпусками новой версии ОС в данном случае просто, и не требует активного
участия человека. Новая версия дистрибутива выпускается, когда в программах
избавляются от всех release critical ошибок. В принципе, выпускать новую версию
может не человек, а программа. Однако, в Debian этой программой управляет разработчик,
чья должность называется Менеджер релиза.
Управление оборудованием
У Debian имеется набор серверов под все архитектуры, на которые он портируется.
Из них 17 доступны всем разработчикам. Эти Машины Debian или куплены на деньги,
пожертвованные проекту Debian спонсорами, или подарены ими же (cреди спонсоров
-- IBM, Sun, Hewlett-Packard). Машины подключены к сети благодаря VA Systems,
Brainfood и университетам, поддерживающим разработку Debian.
Чтобы поддерживать такое количество разработчиков требуется немалое количество
ответственных людей -- Администраторов Debian. Они следят за состоянием серверов
удаленно и в экстренных случаях едут на место -- к провайдеру. Часто эти люди
оплачиваются фирмой, которая предоставляет хостинг, иногда это -- добровольцы.
Это одна из важнейших ролей в проекте Debian.
Для разработчиков есть специальный набор правил пользования Машинами Debian.
Из правил следует, что они могут использоваться для разработки пакетов, чтения
почты и занятия другими проектами, связанными со свободным ПО. При использовании
машин в незаконных целях или коммерческих целях разработчик может быть даже
исключен из проекта.
Конституция Debian -- основной закон для сообщества разработчиков. Он определяет
права разработчиков различных должностей. У Лидера проекта очень небольшие права,
он практически не управляет проектом. Он может принимать решения в вопросах,
за которые никто не отвечает, предлагать на принятие новые законы, использовать
решающий голос.
Технический комитет имеет право по голосованию вносить изменение в технические
законы, блокировать предложение разработчика о голосовании. Однако разработчики
могут проголосовать за отмену решения технического комитета, а сам ТК не может
заблокировать такое голосование.
В Конституции есть отдельная глава об организации SPI (Software For Public Interests,
Inc.) Это зарегистрированная в США организация обслуживает финансовые нужды
проекта Debian. Например, пожертвования Debian идут на счета SPI, Inc.
Следует отметить, что Конституция не дает никому никаких привилегий над другими,
и таким образом не вносит никакой дискриминации. Абсолютной властью в Debian
обладает только абсолютное большинство разработчиков.
Процесс принятия в разработчики
Особенный интерес заслуживает процесс принятия в официальные разработчики.
Каждый претендент на место официального разработчика проходит несколько тестов.
Для начала претенденту надо провести некоторую работу для Debian. Этим он показывает
свою заинтересованность в проекте.
Затем претендент должен получить от официального разработчика подпись своего
GnuPG ключа. На этом основано доверие между разработчиками в проекте Debian.
Далее претендент проходит тест на умение собирать пакеты Debian, а так же на
знание технических и `философских' документов.
И, самое важное, претендент обязан согласиться с Социальным контрактом Debian.
Этим он обязуется:
- сохранять Debian свободным на 100%;
- не скрывать исправления и изменения программ и отсылать их авторам;
- не скрывать проблем. Если разработчику известна ошибка, он не должен скрывать
ее;
- понимать, что главное для Debian -- ее пользователи и свободное программное
обеспечение.
После прохождения всех тестов претендент обычно становится официальным разработчиком.
* * *
Изложенная модель проекта доказала и продолжает доказывать свою успешность --
подтверждением этому может служить огромное количество пользователей, которые
выбрали Debian (в их числе даже одна космическая станция, чем мы особенно гордимся).
Как нам кажется, эту модель можно будет с успехом применять и в компаниях-разработчиках
коммерческого программного обеспечения. Мы по себе знаем, насколько приятно
работать в подобной атмосфере и с такими людьми -- а чем приятнее и интереснее
работать разработчикам-тем выше доходы компании. Мы также надеялись показать,
что в мире свободного ПО, иногда воспринимаемом компьютерной индустрией как
`небольшое развлечение' могут и будут существовать проекты, дающие отличный
стабильный и динамично развивающийся продукт.
|