Pull to refresh

Стать мэинтейнером. Часть первая

Configuring Linux *
Когда я прочитал эту и эту статьи, мне захотелось рассказать, как человек может внести свой маленький вклад в распространение своей любимой программы среди пользователей всеми любимой операционной системы. Полистав Убунтариум, я увидел, что статей на эту тему вроде бы не было, поэтому я решил смело приняться за дело.
(Части 2, 3 и 4)

Введение


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

Какой софт подойдёт?


Когда вы хотите собрать какую-то программу, в первую очередь стоит задуматься, а возьмут ли её в дистрибутив? Дело в том, что вся идеология дистрибутива Debian в первую очередь регулируется таким интересным документом, как Социальный контракт (или Общественный Договор) Debian. В основном этот контракт гласит, что:
  • Debian останется Свободным ПО на все 100%
  • Наши разработки будут возвращаться Сообществу Свободного ПО
  • Мы не будем скрывать проблемы
  • Главное для нас — это наши пользователи и Свободное ПО
  • Разработки, которые не отвечают нашим стандартам Свободного ПО, могут распространяться с Debian, но не являются его частью

Если более подробно: вся система Debian была, есть и будет воистину свободной системой. В ней никогда не будет несвободных компонентов. Все наработки, сделанные в рамках Debian, будут лицензированы как свободное ПО и возвращены сообществу. Все исправления и патчи к программам, сделанные в рамках Debian, будут предложены авторам программ (совершенно бесплатно :) ). Все ошибки и проблемы в дистрибутиве так же свободны и открыты с момента сообщения о них (об этом позже). Для несвободного программного обеспечения в Debian предусмотрена специальная секция non-free. Пакеты, которые туда помещаются, не являются частью Debian, хотя и распространяются вместе с ним.
«А как у нас?» — спросят пользователи Убунту. Ровно так же. В Убунту есть «Обещание Убунту» (лежит на главной странице ubuntu.com) и документ Философия Убунту. В целом, ограничения практически те же самые, в Убунту они чуть мягче, но рекомендую ориентироваться на Debian.
Итак, если мы решили, что наша идеология совпадает с идеологией Debian/Ubuntu, то можно приниматься за следующий пункт.

В какую секцию дистрибутива включить наш будущий пакет?


Дистрибутивы Debian и Ubuntu разбиты на несколько категорий, у каждого свои. Подключая и отключая у себя в настройках apt какие-то из этих категорий, мы можем как полностью оградить себя от несвободного программного обеспечения, так и обставить себя им со всех сторон. Какие же категории где бывают?
В Debian их 3 основных (память мне говорит, что когда-то была еще секция non-US, но сейчас её вроде бы уже не осталось):
  1. main — ПО в этой категории является абсолютно свободным или, как говорят красноглазые фанаты, Ъ-вым. Чтобы попасть в эту категорию, ваш пакет должен быть сам свободным, не требовать для сборки (в Build-Depends) и не предлагать для установки (в Depends, Recommends и Suggests) никаких пакетов не из main и быть не настолько глючным, чтобы разработчики Debian отказались его поддерживать
  2. contrib — пакеты в этой категории также обязаны быть абсолютно свободными и не слишком глючными, но они имеют право каким-либо образом зависеть от пакетов в contrib, non-free и даже требовать для сборки те пакеты, которых вообще нет в Debian.
  3. non-free — в эту категорию, как ни странно, тоже отбор есть. ПО, претендующее на попадание в non-free, должно быть не слишком глючным (это стандартное требование, как вы успели заметить) и не иметь лицензионных ограничений, которые явно не позволят поместить его даже туда.

Помимо этого все пакеты должно соответствовать суровому документу Политика Debian, но о нём в следующих выпусках.
В Убунту категории целых четыре и деление немножко иное. Всё ПО условно делится на две группы: поддерживаемое и неподдерживаемое. Пакеты из первой группы официально поддерживаются разработчиками Ubuntu (или, как они себя называют, MOTU — Masters(Maintainers) of the Universe), второе собирается посторонними мэинтейнерами. В каждой группе есть категория для свободного и для несвободного программного обеспечения. Таким образом мы получаем 4 категории:
  1. main — поддерживаемое свободное ПО
  2. restricted — поддерживаемое несвободное ПО (в такую интересную категорию попадают некоторые несвободные драйверы и подобные жизненно важные для нормальной работы дистрибутива вещи)
  3. universe — неподдерживаемое свободное ПО
  4. multiverse — неподдерживаемое несвободное ПО

В основном критерии распределения всё те же, что и в Debian, за одним исключением: в main разрешены некоторые несвободные шрифты и firmware, если они распространяются бесплатно и жизненно необходимы для нормального функционирования системы. Также, в Убунту есть еще одна тайная категория commercial — в которую помещаются пакеты, имеющие ограничения на распространение, но для которых Canonical таки получил соответствующее разрешение у правообладателей. Раньше туда входили RealPlayer и Opera, но в следующих после Feisty Fawn дистрибутивах от этой категории вроде бы отказались.

А какое же ПО считать свободным?


В этом вопросе и Debian, и Ubuntu руководствуются одним документом (который, кстати, был принят и всем сообществом свободного ПО за основу определения OpenSource). Это так называемые «Критерии Debian по определению Свободного ПО» (Debian Free Software Guidelines или DFSG), которые являются частью вышеупомянутого Социального контракта Debian. Перечислять и расписывать их все не имеет смысла, поскольку их по вышеупомянутой ссылке можно почитать на русском языке, поэтому расскажу коротко:
  1. Чтобы ПО считалось свободным, оно не должно ограничивать своё распространение или продажу и требовать каких-то отчислений и гонораров
  2. ПО обязано распространять исходные тексты и разрешать их совместное и раздельное распространение с бинарными пакетами
  3. ПО обязано разрешать создавать производные работы и распространять их по той же лицензии, что и оно само. ПО может запрещать изменения исходного кода только в случае, если разрешено создание и совместное с ПО распространение патчей, накладываемых на него при сборке бинарных пакетов.
  4. ПО не должно создавать какой-либо дискриминации людей, в том числе по области деятельности — каждый имеет право применять его где хочет.
  5. Лицензия не должна применяться только к Debian или Ubuntu, она едина для всех.
  6. Лицензия не должна каким-либо образом ограничивать другое ПО.

Таким образом, в Debian существует список основных лицензий, распространяемое под которыми ПО можно считать свободным: GPL, LGPL, Modified BSD License, Perl Artistic License, Apache License, CC BY-SA 3.0 и ряд других. Вместе с тем, некоторые распространенные лицензий в силу тех или иных причин считаются несовместимыми с Debian — это GNU FDL, практически все Creative Commons лицензии (кроме упомянутой BY-SA 3.0) и другие. С полным списком рассмотренных Debian лицензий можно ознакомиться здесь. Вместе с тем всегда нужно помнить, что разработчики Debian каждый раз выносят решение по конкретной программе, а не по абстрактной лицензии.

Где посмотреть на имеющиеся пакеты и их баги? Социальный контракт обещал, что любой может это сделать!


Debian свято блюдёт свой контракт. Любая, даже только запланированная к «пакетированию» программа (про которую какой-то мэинтейнер разместил сообщение, что планирует её упаковать) мгновенно попадает в систему отслеживания ошибок. Любой пользователь может зайти туда и просмотреть информацию о интересующем его пакете. Для пакетов, только предполагающихся к публикации (а также требующих доработки, ищущих нового мэинтейнера и т.п.) существует специальный мета-пакет WNPP. Например, зайдя сюда, мы найдём информацию о предполагающейся к пакетированию программе qutIM и переписку нескольких мэинтейнеров по этому поводу.
В Убунту есть аналогичная система — Launchpad. Здесь, например, можно посмотреть, как выглядит страница пакета qutIM на Launchpad.

Итог


Мы получили представление о том, как распределяется ПО в Debian и Ubuntu, где его там искать и какие бывают лицензии. В следующий раз, если статья окажется кому-то интересной, я расскажу, кто же строже — Debian или Ubuntu, какие программы пригодятся вам для создания пакетов, почему вот этот подход в Убунту является в корне неверным, из-за чего столь многократно упоминаемый мною qutIM так до сих пор и не попал в Debian, и какие еще подводные камни ожидают желающего собрать пакет для любимого дистрибутива.
Tags: debianubuntudebсборка пакетовdfsg
Hubs: Configuring Linux
Total votes 51: ↑50 and ↓1 +49
Comments 26
Comments Comments 26

Popular right now

Top of the last 24 hours