Product SiteDocumentation Site

1.3. Внутреннее устройство Проекта Debian

Многочисленные результаты, создаваемые Проектом Debian, одновременно возникают благодаря работе над инфраструктурой, выполняемой опытными разработчиками Debian, благодаря индивидуальной и совместной работе разработчиков над пакетами Debian и благодаря отклику пользователей.

1.3.1. Разработчики Debian

Debian developers have various responsibilities, and as official project members, they have great influence on the direction the project takes. A Debian developer is traditionally generally responsible for at least one package, but according to their available time and desire, they are free to become involved in numerous teams and projects, thus acquiring more responsibilities within the project.
Package maintenance is a relatively regimented activity, very documented, or even regulated. It must, in effect, comply with all the standards established by the Debian Policy. Fortunately, there are many tools that facilitate the maintainer's work. The developer can, thus, focus on the specifics of their package and on more complex tasks, such as “squashing“ bugs.
Политика, существенный элемент Проекта Debian, определяет нормы, гарантирующие качество пакетов и операционную совместимость самого дистрибутива. Благодаря Политике Debian остаётся упорядоченным несмотря на свой гигантский размер. Политика не зафиксирована в камне, но постоянно развивается благодаря предложениям, формулируемым в списке рассылки . Улучшения, с которыми согласны все заинтересованные стороны, принимаются и добавляются в текст небольшой группой сопровождающих, у которых нет редакторских прав (они лишь добавляют изменения, которые были утверждены разработчиками Debian, которые являются участниками указанного списка рассылки). Вы можете прочесть текущие предложения улучшений в системе отслеживания ошибок:
Политика описывает большую часть технических аспектов процесса создания пакетов. Тем не менее, размер проекта приводит к возникновению в том числе и организационных проблем; эти проблемы решаются с помощью Конституции Debian, которая определяет структуру проекта, а также средства принятия решений. Другими словами, это формальная система управления проектом.
Конституция определяет ряд ролей и должностей, а также ответственности и полномочия каждой их них. Особенно следует заметить, что разработчики Debian всегда имеют полномочия принятия окончательного решения путём общего решения, в котором для внесения существенных изменений (например, изменения основополагающих документов) требуется квалифицированное большинство из трёх четвёртых (75%) голосов. Тем не менее, ежегодно разработчики выбирают «лидера», который представляет проект на различных мероприятиях и гарантирует внутреннее взаимодействие между различными командами. Эти выборы всегда представляют собой период интенсивных обсуждений. Роль лидера проекта Debian (DPL) формально не определена ни одним документом, кандидаты на этот пост обычно предлагают своё собственное видение этой должности. На практике роль лидера предполагает представление проекта средствам массовой информации, координацию между «внутренними» командами, общее управление проектом, в котором участвуют и разработчики (взгляды DPL имплицитно принимаются большинством членов проекта).
Как правило, у лидера имеется реальная власть; его голос разрешает ситуации с равным числом голосов; он может принимать любое решение, которое пока ещё не относится к полномочиям кого-либо ещё, а также может делегировать часть своей ответственности.
Since its inception, the project has been successively led by Ian Murdock, Bruce Perens, Ian Jackson, Wichert Akkerman, Ben Collins, Bdale Garbee, Martin Michlmayr, Branden Robinson, Anthony Towns, Sam Hocevar, Steve McIntyre, Stefano Zacchiroli, Lucas Nussbaum, Neill McGovern, Mehdi Dogguy, Chris Lamb, Sam Hartman, Jonathan Carter, and Andreas Tille.
Также Конституция определяет «технический комитет». Основная роль комитета заключается в разрешении технических вопросов в том случае, когда участвующие в обсуждении разработчики не могут достичь согласия. Кроме того, этот комитет играет совещательную роль для любого разработчика, не способного самостоятельно принять решение по какому-то вопросу, за который он отвечает. Важно отметить, что комитет включается в работу только в том случае, когда его к этому приглашает одна из сторон дискуссии.
Наконец, Конституция определяет должность «секретаря проекта», который несёт ответственность за голосование в ходе различных выборов и общих решений.
Процедура «общего решения» (GR) полностью подробно описана в конституции, от первоначального периода обсуждения до окончательного подсчета голосов. Самый интересный аспект этого процесса заключается в том, что когда дело доходит до фактического голосования, разработчикам приходится ранжировать различные варианты голосования между ними, и победитель выбирается с помощью Condorcet method (точнее, метод Шульце). Более подробную информацию см.:
Even if this constitution establishes a semblance of democracy, the daily reality is quite different: Debian naturally follows the free software rules of the do-ocracy: the one who does things gets to decide how to do them. A lot of time can be wasted debating the respective merits of various ways to approach a problem; the chosen solution will be the first one that is both functional and satisfying… which will come out of the time that a competent person puts into it.
Звёздочки можно заработать только одним способом: нужно сделать что-то полезное и показать, что оно хорошо работает. Многие «административные» команды Debian действуют методом кооптации, предпочитая добровольцев, которые уже внесли оптимальный вклад и доказали свою компетентность. Публичность работы таких команд позволяет новым участникам наблюдать за работой и начинать оказывать помощь без каких-либо специальных привилегий. Вот почему Debian часто описывается как «меритократия».
This effective operational method guarantees the quality of contributors in the “key” Debian teams. This method is by no means perfect, and occasionally there are those who do not accept this way of operating. The selection of developers accepted in the teams may appear a bit arbitrary, or even unfair. Furthermore, not everybody has the same definition of the service expected from these teams. For some, it is unacceptable to have to wait eight days for inclusion of a new Debian package, while others will wait patiently for three weeks without a problem. As such, there are regular complaints from the disgruntled about the “quality of service” from some teams.

1.3.2. Активная роль пользователей

Возникает вопрос, уместно ли указывать пользователей среди тех, что работают в Проекте Debian. Ответ на этот вопрос определённо положительный: пользователи играют в Проекте критическую роль. Будучи вовсе не «пассивными» пользователями, некоторые из них используют разрабатываемые версии Debian и регулярно сообщают об ошибках и проблемах. Другие пользователи идут ещё дальше и предлагают свои идеи улучшений, отправляя отчёты об ошибках уровня "wishlist" или предлагая исправления исходного кода, называемые «заплатами» (см. боковую панель Раздел 1.3.2.3, «Отправка исправлений»).

1.3.2.1. Сообщить об ошибках

Основным инструментом для размещения ошибок является Система отслеживания ошибок Debian (Debian BTS), которая используется большими частями Проекта. Публичная часть (веб-интерфейс) позволяет пользователям просматривать сообщения об ошибках, сортируя список ошибок, отобранных по какому-то определённому критерию, например: подверженные ошибке пакеты, степень серьёзности ошибок, статус, адрес сообщившего, адрес сопровождающего, тег и т. д. Кроме того, можно просматривать полную историю всех обсуждений по каждой из ошибок.
По сути, Debian BTS построена на основе электронной почты: вся информация, хранимая в системе, берётся из сообщений, отправленных различными участниками. Любое сообщение, отправленное на адрес будет приписано к истории сообщения об ошибке под номером 12345. Уполномоченные лица могут «закрыть» ошибку, написав сообщение, описывающее причины этого решения на адрес (ошибка закрывается в том случае, если соответствующая проблема решена или более не релевантна). Чтобы сообщить о новых ошибках, нужно отправить сообщение определённого формата с указанием подверженного ошибке пакета на адрес . Адрес позволяет редактировать «метаинформацию» об ошибке.
Debian BTS имеет и другие функциональные особенности, такие как использование тегов для обозначения ошибок. Дополнительную информацию см. в
Users can also use the command line to send bug reports on a Debian package with the reportbug tool. It helps making sure the bug in question hasn't already been filed, thus preventing redundancy in the system. It reminds the user of the definitions of the severity levels, for the report to be as accurate as possible (the developer can always fine-tune these parameters later, if needed, e.g. using the bts command). It helps writing a complete bug report, without the user needing to know the precise syntax, by writing it and allowing the user to edit it. This report will then be sent via an e-mail server (by default, a remote one run by Debian, but reportbug can also use a local server).
Этот инструмент в первую очередь охватывает разрабатываемые версии, где ошибка будет исправлена. По сути, изменения в стабильной версии Debian не приветствуются, исключением являются обновления безопасности или другие важные обновления (например, если пакет вообще не работает). Исправление небольших ошибок в пакете Debian должно, таким образом, подождать выпуска следующей стабильной версии.

1.3.2.2. Перевод и документация

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

1.3.2.3. Отправка исправлений

Более продвинутые пользователи могут предоставить исправление программы, отправив патч.
Патч — файл, описывающий изменения, произведённые с одним или несколькими исходными файлами. В частности, патч содержит список строк, которые были удалены или добавлены в код, а также (иногда) строк, взятых из исходного текста с заменами изменений в контексте (они позволяют определить месторасположение изменений в том случае, если число строк тоже изменилось).
Инструмент, используемый для применения изменений, указанных в таком файле, называется patch. Инструмент, создающий такие файлы, называется diff, он используется следующим образом:
$ diff -u старый.файл новый.файл >файл.заплаты
Файл файл.заплаты содержит инструкции по изменению содержимого старого.файла, чтобы получить из него новый.файл. Мы можем отправить такой файл кому-то ещё, кто сможет использовать его для созданиянового.файла из двух других имеющихся у него файлов, это делается следующим образом:
$ patch -p0 старый.файл <файл.заплаты
Файл старый.файл теперь идентичен новому.файлу.
На практике большая часть программного обеспечения в настоящее время поддерживается в репозиториях Git, поэтому участники с большей вероятностью будут использовать git чтобы получить исходный код и предложить изменения. git diff сгенерирует файл в том же формате, что и diff -u и git apply может сделать то же самое, что и patch.
Хотя выходные данные команды git diff представляют собой файл, которым можно поделиться с другими разработчиками, обычно существуют более эффективные способы отправки изменений. Если разработчики предпочитают получать патчи по электронной почте, они обычно хотят, чтобы патчи создавались с помощью команды git format-patch, чтобы их можно было напрямую интегрировать в репозиторий с помощью команды git am. Это сохраняет метаинформацию о коммитах и позволяет одновременно использовать несколько коммитов.
This email-based workflow is still popular, but it tends to be replaced by the usage of merge requests (or pull requests) whenever the software is hosted in a platform like GitHub or GitLab — and Debian is using GitLab on its salsa.debian.org server. On those systems, once you have created an account, you fork the repository, effectively creating a copy of the repository in your own account, and you can then clone that repository and push your own changes in it. From there, the web interface will suggest you to submit a merge request, notifying the developers of your changes, making it easy for them to review and accept your changes with a single click.

1.3.2.4. Другие способы внести свой вклад

Все эти механизмы участия становятся более эффективными благодаря пользователям. Не будучи собранием изолированных индивидов, пользователи представляют собой настоящее сообщество, внутри которого постоянно происходят различные взаимодействия. Мы особенно выделяем впечатляющую активность в пользовательском списке рассылки, Глава 7, Решение проблем и поиск необходимой информации содержит более подробное описание).
Пользователи не только помогают сами себе (и другим) в решении технических проблем, которые касаются их самих непосредственно, но они ещё обсуждают наилучшие способы участия в Проекте Debian и помощи в его движении дальше — обсуждения, которые часто приводят к предложениям улучшений.
Поскольку Debian не тратит деньги на маркетинговые и рекламные компании, пользователи дистрибутива играют главную роль в его продвижении, распространяя славу о нём из уст в уста.
Этот метод работает весьма неплохо, так как энтузиасты Debian находятся на любом уровне сообщества свободного ПО: на вечерниках по установке (практических сессиях, на которых опытные пользователи помогают новичкам установить систему), организуемых локальными LUG (от англ. Linux User Groups - группами пользователей Linux) до стендов на крупных технических выставках, посвящённых Linux и т.д.
Добровольцы создают для Проекта постеры, брошюры, наклейки и другие полезные рекламные материалы, которые доступны для всех, и которые Debian свободно предоставляет на своём веб-сайте и вики:

1.3.3. Команды, смеси и подпроекты

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

1.3.3.1. Существующие подпроекты Debian и смеси

Каждому свой собственный Debian! Подпроект — группа добровольцев, заинтересованных в адаптации Debian под конкретные нужды. Помимо выбора подгруппы программ, предназначенных для определённой области (образование, медицина, создание музыки и проч.), подпроекты также участвуют в улучшении существующих пакетов, создают пакеты для отсутствующего в архиве ПО, адаптируют установщик, создают специальную документацию и занимаются многими другими вещами. Хотя "blend" не совсем то же самое, она работает очень похоже, а также пытается предоставить решение для групп людей, намеревающихся использовать Debian для определённого домена. Можно сказать, что "Debian Pure Blends" является преемником подпроектов.
Ниже приведена небольшая выборка текущих Чистых Смесей Debian:
  • Debian Junior, offering an appealing and easy to use Debian system for children;
  • Debian Edu, focused on the creation of a specialized distribution for the academic and educational world;
  • Debian Med, dedicated to the medical field;
  • Debian Multimedia, который касается работы с аудио и мультимедиа;
  • Debian GIS, который заботится о приложениях и пользователях геоинформационных систем;
  • Debian Astro как для профессионалов, так и для астрономов-любителей;
  • Debian Science, работающая над предоставлением исследователям и учёным более удобного использования Debian;
  • Freedombox, создан для разработки, проектирования и продвижения персональных серверов с бесплатным программным обеспечением для частных личных коммуникаций;
  • Debian Games, предоставляющая игры на Debian, от аркадных и приключенческих до симуляторов и стратегий;
  • DebiChem, ориентирована на химию, предоставляет химические наборы и программы.
Число проектов, скорее всего, продолжит со временем расти, также благодаря улучшению восприятия преимуществ Чистых Смесей Debian. Полностью поддерживаемые существующей инфраструктурой Debian, они могут, в конце концов, сфокусироваться на работе с реальной добавочной стоимостью, не заботясь о синхронизации с Debian, поскольку они разрабатываются внутри проекта.

1.3.3.2. Административные команды

Большинство административных команд относительно закрыты и набирают новых участников по принципам кооптации. Наилучшим способом стать частью такой команды является грамотная помощь текущим членам команды, которая доказывает, что вы понимаете их задачи и методы работы.
Команда ftpmasters ответствена за официальный архив пакетов Debian. Они сопровождают программу, которая получает пакеты, отправленные разработчиками, и автоматически сохраняет их после некоторых проверок на соответствующем сервере (ftp-master.debian.org).
Также они должны проверять лицензии всех новых пакетов до их включения в набор существующих пакетов с тем, чтобы убедиться, что Debian может их распространять. Когда разработчик хочет удалить пакет, они обращаются к этой команде через систему отслеживания пакетов и «псевдопакет» ftp.debian.org.
Команда системных администраторов Debian (DSA) (), как и ожидается, отвечает за системное администрирование многих серверов, используемых проектом. Они обеспечивают оптимальную работу всех базовых служб (DNS, Интернет, электронная почта, оболочка и т. д.), устанавливают программное обеспечение, запрошенное разработчиками Debian, и принимают все меры предосторожности в отношении безопасности.
Мастера списков администрируют сервер электронной почты, который управляет списками рассылки. Они создают новые списки, обрабатывают возвраты не доставленных сообщений (сообщения о неудачной доставке) и сопровождают фильтры спама (нежелательные массовые сообщения электронной почты).
Каждая конкретная служба имеет свою собственную команду администраторов, обычно она состоит из добровольцев, которые установили эту службу (и часто они же сами и написали соответствующие инструменты). Это касается системы отслеживания ошибок (BTS), системы отслеживания пакетов, salsa.debian.org (GitLab сервер, см. боковую колонку ИНСТРУМЕНТ GitLab, хостинг репозитория Git и многое другое), служб, доступных на узлах qa.debian.org, lintian.debian.org, buildd.debian.org, cdimage.debian.org и т. п.

1.3.3.3. Команды разработки, сквозные команды

В отличие от административных команд команды разработки скорее крайне открыты, даже для внешних участников. Даже если Debian и не призван создавать ПО, Проекту требуются некоторые специальные программы для того, чтобы достичь поставленные цели. Конечно, благодаря тому, что эти инструменты разрабатываются как свободное ПО, в них используются методы, которые уже доказали свою пользу где-то ещё в обширном мире свободного ПО.
В Debian было разработано не очень много собственного ПО, но некоторые программы стали поистине звёздными, а их слава распространилась далеко за пределы Проекта. Прекрасными примерами такого рода являются dpkg, программа управления пакетами Debian (фактически, это сокращение от слов Debian PacKaGe, пакет Debian, а обычно произносится как "dee-package"), и apt, инструмент для автоматической установки любого пакета Debian вместе с его зависимостями, что гарантирует целостность системы после выполнения обновления (название этого инструмента это сокращение от Advanced Package Tool, продвинутый инструмент для работы с пакетами). Однако их команды немногочисленны, поскольку для общего понимания работы этих типов программ требуется довольно высокий уровень навыков программирования.
Вероятно, самой важной командой является команда, которая занимается программой установки Debian, debian-installer, с момента своего создания в 2001 году она выполнила весьма важную работу. Команде требуются многочисленные участники, поскольку написать одну единственную программу, способную установить Debian на дюжину разных архитектур, довольно сложно. Каждая архитектура имеет свой собственный механизм загрузки и свой собственный загрузчик. Вся работа координируется через список рассылки и управляется Сирилом Брулбуа.
Другая (очень маленькая) команда, debian-cd, выполняет более скромные задачи. Множество небольших участников ответственно за свои отдельные архитектуры, поскольку основной разработчик не может знать всех нюансов и точного способа запустить программу установки с компакт-диска.
Многим командам при создании пакетов приходится работать вместе с другими командами: например, стремится гарантировать качество на всех уровнях Проекта Debian. Список служит для разработки Политики Debian в соответствии с предложениями от различных участников. Команды, ответственные за каждую отдельную архитектуру () собирают пакеты и при необходимости адаптируют их под конкретную архитектуру.
Другие команды следят за наиболее важными пакетами, гарантируя сопровождение этих пакетов без того, чтобы эта тяжёлая нагрузка лежала на одних плечах; это касается библиотеки C и списка рассылки , компилятора C и списка , а также Xorg и (это группа также известна как X Strike Force).