Введение

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

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

То, о чем будет идти речь, затрагивает всю структуру дистрибутива и свободного ПО. Не инструкция по сборке пакета в Сизиф АльтЛинукса, а общий рассказ о сборке пакетов на примере Сизифа, будет также речь о BSD и других системах.

Какой скрытый посыл всего этого? Мы приобретаем совершенно уникальную степень свободы, ни на что не похожую. Легко можем достичь такого состояния, что нравящаяся ОС будет содержать нужное ПО, причем установка и обновление будет осуществляться не вручную, а автоматически с помощью средств ОС. Можно будет за 10 минут сделать свой пакет, через час он будет в Сизифе за счет автоматической сборки.

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

Дальше в планах рассмотреть весь путь от апстрима до его попадания в дистрибутив. Некоторые примеры из известных лектору технологий разработки дистрибутивов. Под конец — краткая методичка по разработке пакета.

10 планируемых лекций. Еще одна, а то и две пары, которые не будут заняты плановыми лекциями, там будет свобода маневра. Выяснится тема, которой нет, а интересна. Или рассказ еще кого-то о других системах.

Дистрибутив на базе свободного ПО

Понятие дистрибутива как такового приобретает специфический уникальный смысл. Несмотря на уникальность, понятие дистрибутива существует давно, еще до изобретения свободного ПО. Беркли — классический дистрибутив. Таким свободным дистрибутивом он и стал, когда в 80-х стали заморачиваться на свободность софта. Дистрибутивов на базе ядра линукс порядка 300 штук, из них живых, активно обновляющихся меньше.

Что такое дистрибутив ОС? Здесь важны обе половинки.

ОС

Начнем с конца. Если мы определили, что такое дистрибутив, чем отличается дистрибутив ОС? Мы получаем, устанавливаем и получается ОС на компьютере. Дистрибутив Denwer он дистрибутив, но не ОС.

Дистрибутив

Свойство дистрибутивности, распространяемости. На развалинах чего был создан первый прообраз юникс — мультикс, по заказу минобороны США. Установок этой системы было две или одна. Когда речь идет о дистрибутиве — обратная ситуация. То, что разрабатываем, должно распространяться. Не так очевидно, но понятие распространения, дистрибуции будет сужаться. Предоставление услуг сервиса через браузер. Там нет дистрибутива, а один сервер и сервис на нем.

Совокупный программный продукт. Часто дистрибутивом называют установщик, устанавливающий одну большую программу. Здесь программ много, дистрибутив состоит из них.

Дистрибутив отличается от сборника еще тем, что он сам программный продукт, есть правила его использования, эксплуатации, есть техподдержка. Можно добавить про интеграцию частей дистрибутива в единое целое, но пользователь это не видит. Являются ОС, за которой стоят определенные услуги сообщества и правил ее эксплуатации.

Дистрибутив ОС подразумевает, что мы говорим о сборниках программных продуктов, создают работающую систему со своей спецификой.

Свободное ПО

Отдельная тема для тех, кто не в танке. Что такое свободное ПО? Начать нужно с того, что есть классическое определение свободного ПО, которое достаточно просто формулируется, данное Столлманом. Это ПО, которое не накладывает никаких ограничений на 4 способа использования этого ПО. Предоставляется 4 права. Право использовать программный продукт. Право изучать и изменять программный продукт. Нет запретов на реверс-инженеринг, но более верное определение — есть исходный текст. На сегодняшний день не так много систем подразумевают отсутствие исходного текста. Есть система без исходного кода, с объектами. Там нет исходного кода, но право изучать и изменять не нарушается. Право распространять. Право распространять изменения.

Определение Open Source. Состоит из 10 пунктов, все 10 пунктов перечислить лектор не может, не вполне совпадает со свободным ПО. В Евросоюзе эти лицензии объединены законодательно в одну.

Довольно забавное ограничение в старых BSD-лицензиях. Должны сохранять имена всех людей, которые внесли вклад в разработку. Ограничение лицензии PHP — ПО должно начинаться со слова PHP.

Copyleft

Популярное ограничение — понятие copyleft. Что такое copyleft? Имеем полное право что-то модифицировать и превратить в несвободное ПО. Все BSD-системы так и распространяются. Такая лицензия называется разрешающей. Эта стратегия очень удобна для могучих BSD-шников, каждый из которых сам себе дистрибутив.

Если же мы продаем программный продукт, то есть лазейка. Вкладываемся в фичу, получаем преимущество, начинаем распространять. Конкурент берет свободный код, доделывает то, что не доделали мы, и начинает распространение несвободного кода. Проблема не в том, хорошо это или плохо. Проблема для бизнеса, если нет возврата кода. Когда на продаже несвободного софта можно получить преимущество, в добавок к 4 правам вводится обязанность. Право распространять и распространять изменения должно быть реализовано так, что распространяемое нами должно распространяться не хуже, чем по этим 5 пунктам. Гугл пользуется, но никому не дает, не распространяет.

Дополнительно

Самих свободных лицензий насчитывается несколько десятков штук. Чем они отличаются, понять сложно. На это накладываются юридические тонкости. Мировая тенденция к сокращению количества лицензий. Но есть свои лицензии у крупных корпораций — майкрософта, сана и других. Разговор о лицензиях вполне допустим. В рамках российского законодательства они применяются.

LGPL

Что считать производным программным продуктом? Если не вносим изменений в код, то скомпилированные с ним продукты могут быть несвободными.

Сообщество

Более важная вещь — разговор о том, кто все эти люди? Цикл лекций под названием «Дистрибутивы Линукс», вылившийся в разговор о сообществе.

Закрытое ПО — много дешевой рабочей силы, сообщества замкнуты. Возможности по карьерному росту ограничены. Права собственности принадлежат работодателю.

В открытой разработке тоже много неквалифицированной рабочей силы. Но тут чем меньше квалификация, тем меньше вклад. Как правило, во главе стоят наиболее талантливые люди. Много качественного кода. Люди общаются не только в офисе, но и со всем миром. Чем меньше человек участвует, тем больше таких людей. Есть возможность привлечь много людей.

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

Принципы свободного сообщества

Три принципа, на которых строится любое свободное сообщество. Произвольная мотивация. Нам все равно, зачем ты пришел. Принцип свободного входа/выхода. Если будут ставить условия приема человека в сообщество, то не получится социальной единицы — свободного сообщества. Принцип динамической иерархии.

Структура

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

Требования к окружающей действительности

Требований два. Информационное пространство — динамичность и связность. Технологическая привлекательность ресурсов. Кто мне, как программисту, мешает взять программный код и похакать? С какой стати я буду закладывать код обратно? Просто нет времени. Нужно, чтобы проще было быть участником сообщества, чем не отдавать свои результаты и делать в разных местах самому по-разному.

Организационный вопрос

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

LecturesCMC/PackageMaintaining2009/Conspects/01/kda (последним исправлял пользователь eSyr 2009-10-01 13:51:26)