Различия между версиями 1 и 24 (по 23 версиям)
Версия 1 от 2008-07-17 03:28:02
Размер: 11995
Редактор: eSyr
Комментарий:
Версия 24 от 2008-07-25 15:20:47
Размер: 28246
Редактор: VsevolodKrishchenko
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 1: Строка 1:
== Структура сообщества == == Сообщество свободного программного обеспечения ==
Строка 3: Строка 3:
Про досбокс: ... Структура сообщества вокруг свободного программного обеспечения --- очень важная тема, ведь именно рассматривая ее можно найти ответы на многие вопросы, касающиеся открытого процесса разработки. Итак, открытый способ разработки --- это то, чем изначально отличаются открытые (или свободные) программные продукты от закрытых, называемых также правовладельческими, собственническими или "проприетарными" (от англ. ''proprietary'' --- собственник). Все используемые при разработке технологии напрямую зависят от выбора способа разработки.
Строка 5: Строка 5:
Одна тема --- тема очень важная, структура собщества. Ответ на один из вопросов --- как думать. Это откр. спсоб разраб --- то, чем отл. откр. продукты от закрытых с самого начала. Кпилефтный способ лицензирование --- осн. для бизнеса. П уму, эт приводит к тому, что все возвр. к совместной разрабтке. === Совместная разработка ===
Строка 7: Строка 7:
Мы подобрались к тому, чт такое Linux и как его исопльзуют. У нас есть такй цветочек, и каждую часть разрабатывает своя команда разработчиков, и это факт. единственный способ такое разрабатывать. У каждого такого кусчка есть некий автр. Создаётся впечатление, чт это такая сборная солянка непонятно чего, сложившаяся в дистрибутив. Т есть, какие-то люди предлагают линукс, и совсем другие люди занимаются разработкой программ. На самом деле, линукс можно рассм. как метапродукт, который подчиняется тем законам сообщества, кторым подчиняется отдельный продукт. Открытый способ разработки плюс "копилефт" как способ лицензирования --- это основание для бизнеса, основанного на открытом программном обеспечении. Всякий человек, который воспользовался нашей разработкой и привнёс туда какие-то свои инструменты и который хочет достичь чего-то на рынке, обязан организовать этот бизнес также на основе свободного программного обеспечения, поскольку изначально разработка ведется под "копилефт"-лицензией. Таким образом, лицензирование методом copyleft --- это гарантия, что любые успешные модификации нашего программного обеспечения будут опубликованы, и ими сможет воспользоваться каждый, а развитие программного продукта не прекратится, даже если человек модифицировал что-то исключительно ради своего заработка.
Строка 9: Строка 9:
Вот есть некая группа товарищей, core. Это, в некторых случаях, те люди, которые большую часть времени тратят на то, чтобы разрабатывать этот продукт. Иногда они этим работают, иногда это дело жизни, по-разному бывает. Если бы этим всё и заканчивалось, то мы бы имели картинку ту, что была в правовлад. пордукте. Ибо любой правовл. продукт ращрабатывается тлько таким ядром. Кстати сказать, функция core team шире, чем функция обычных разр.. Иногда решения ядра очень жёсткие. Введение такой "заразной" свободной составляющей в лицензию приводит к тому, что, любой распространяющий свободный продукт производитель должен будет обеспечить свободный доступ к исходным текстам, и, стало быть, все сделанные им улучшения окажутся в свободном доступе. Поэтому любой автор программного продукта может смело опубликовать его под свободной лицензией с copyleft, зная, что, какие бы улучшения не были в него привнесены другими людьми, он может включить их обратно в исходный код. В принципе, это является одной из форм совместной разработки.
Строка 11: Строка 11:
Иногда встречаются различные задачи, на кторых core team не хватает, и тогда подключаются сторонние разрабтчики, кторые не уделяю всё своё время, но они имеют свой интерес, имеют польз. квалиф., имеют квалиф. разраб, имеют ресурс на участие в собществе. откуда у вас ресурс, что вами двигал --- это важно для иссл., но не регламентировано. Если вы включили свои модиф. в upstream, то вам огромное спасибо. Этих людей больше на порядок, но никаких допобязательств перед ними не стоит. Более того, если какая-то компания вносит в продукт улучшения из коммерческих соображений, то для нее часто проще делать это сразу открыто, используя доступ к первоначальному исходному коду, потому что согласно лицензии ей все равно необходимо будет опубликовать исходный код, если она намеревается распространять этот продукт. Такая ситуация имеет место не совсеми открытыми программными продуктами, в ряде случаев измененная версия разрабатывается и ее исходный код распространяется отдельной фирмой. Тем не менее, подход, основанный на непосредственной совместной разработке, делает распространение и улучшение программ более быстрым и простым. Сейчас так происходит далеко не везде, но, например, в случае с IBM и Samba, или с ядром Linux ситуация именно такова: разработчики из различных и часто конкурирующих коммерческих фирм работают с одной и той же системой контроля исходного кода свободной программы.
Строка 13: Строка 13:
В этом супе не хватает главнго --- пользователей. Обратите внимание, чт изх ещё больше. Это нужн по понятным причинам. Любой разраб --- в танке, он имеет опыт и как пльз., и как разраб., и он знает как польз. пргр. продуктом. В такой фрме продукт очень плохо функц. На польз. никакго усл. не накл., единств. вещь, которую надо иметь в виду --- пользователь хорош тгда, когда он активен. В частности, при нахождении ошибок хорошо бы о ней сообщить, чтобы её исправить.
Строка 15: Строка 14:
У всего есть братная сторона. Разработчики должны что-то делать. В случае свободного софта все взм. у вас в руках. Если активности не будет, то ничего не будет. === GNU/Linux -- пример совместной разработки ===
Строка 17: Строка 16:
Если уьрать слово разрабтчик, то получим свободную схему для чего угодно. И без активности какй-либо части оно работать не будет. Мы подобрались к вопросу о том, что такое операционная система GNU/Linux, как она разрабатывается и кто и как ее использует. Все элементы этой огромной системы, будь то прикладное приложение, ядро операционной системы, или документация, разрабатываются отдельным человеком или отдельной командой разработчиков, и это фактически единственная возможность для подобных разработок, общая трудоемкость которых исчисляется десятками тысяч человеко-лет. Таким образом, у каждого элемента системы есть некий основной автор, но этим круг людей, причастных к разработке этого элеента, не ограничивается.
Строка 19: Строка 18:
Дистрибутив --- эт такой прогр. продукт, тодлько очень большой, он сбирается из кусков, которые в интернете там и сям. Какая специфика --- он многокмпонентен. Если мы пишем программу свместно, то да, там мжет быть 30 мегабайт исх. кода, да, там может быть много модулей, но если мы возьмём пменьше программу, то это всё равно едине целое, с единым предст. по многим вещам. В случае с линуксом это набор ПО, причём неск. тысяч, сделанные стнями групп разрабтчиков, кторые друг с другом не связаны. Поэтому функции ядра в двух вещах --- определять политику развития и целевая разраб. прогр. продуктов, которые сообщ. не особо нужны. И кстати говоря, эт твет н вопрос, откуда берутся деньги. Вокруг core существует команда, где будет мнго разных людей --- дизайнеры, секретари.... Уровень разрабтчиков довольно странный. Итак, существуют несколько человек (иногда даже только один), образующие основную группу разработчиков (англ. ''core team''). Это, как правило, те люди, которые большую часть своего времени тратят на разработку этого продукта. Они могут быть сотрудниками одной фирмы, а могут и жить в разных странах. Иногда они зарабатывают этими разработками себе на хлеб, а иногда это дело жизни. Если бы этим всё и ограничивалось, то ситуация бы ничем не отличалась от той, что имела место в связи с правовладельческими продуктами, потому что любой программный продукт разрабатывается какой-то командой. Правда, функция основной группы разработчиков шире, чем функция разработчиков правовладельческого продукта, поскольку обычно они же занимаются ещё и стратегическим планированием развития продукта.
Строка 21: Строка 20:
Можно качать бинарники (и это прихдится делать в двух случаях), но есть три проблемы. ... В отличие от разработчиков правовладельческого продукта основная группа разработчиков рассчитывает на совместную разработку, на привлечение к сообществу любых людей, в том числе тех, которые не могут уделять разработке нашего продукта всё своё время. Тем не менее, в сообщество входят и профессиональные программисты, перед ними периодически возникает задача внести в наш продукт какие-то изменения, допустим, исправление ошибок или внедрение новых возможностей для своих целей или целей своего работодателя.Таким образом, подключаются добровольцы, которых может быть достаточно много (это зависит от популярности проекта). Если доброволец исправил единственную ошибку, и основная группа разработчиков это приняла, то он уже является разработчиком. Эти люди заинтересованы в программном продукте (например, получают зарплату за его внедрение), имеют пользовательскую квалификацию и квалификацию разработчика, имеют временные ресурс на участие в сообществе. Откуда у добровольца эти ресурсы, и что конкретно им двигало --- это важно для исследователя, но не регламентировано.
Строка 23: Строка 22:
Кто будет заниматься тестированием? Ментейнер. Он берёт рпограмму из интернета (причём в исх. текстах), чтобы прверить на предмет тсут. гадостей, чтбы проверить на предмет соотв. политике дистр., изг. из него бин. версию и он взаимд. с польз.. Он отлич. от разраб. тем, что он разобрался и сбрал его в дистрибутив. Если изменения от разработчиков-добровольцев попадают в общий исходный код (англ. ''upstream''), то ему полагается огромное спасибо от разработчиков и пользователей. Таких людей больше, чем основных разработчиков, но никаких дополнительных обязательств перед ними у них нет. С другой стороны, они должны быть достаточно мотивированны, и если кто-то однажды принял участие в модификации продукта, вполне вероятно, что он сделает это снова, и даже может быть принят в основную группу разработчиков.
Строка 25: Строка 24:
Польз. дистр --- системные администраторы, которым важно, какой дистр., важна функц. Рассмотрим теперь роль пользователей в сообществе. Обратите внимание, что их должно быть ещё больше, чем разработчиков. Это необходимо по нескольким причинам. Так, любой разработчик имеет опыт и как пользователь, и как разработчик, и он знает, как работает та или иная часть программного продукта, даже если она никак не документирована. Однако при таком подходе продукт очень плохо функционирует с точки зрения конечного пользователя, не являющегося программистом. На пользователей никаких обязанностей не накладывается, единственное, что надо иметь в виду --- пользователь хорош тогда, когда он активен. Активность проявляется в том, что пользователи заявляют разработчику, что им неудобно пользоваться программным продуктом. В этом случае социальное чувство (или опасения лишиться дохода) заставит разработчика задуматься над тем, как сделать, чтобы менее квалифицированным пользователям было тоже удобно. Далее, часто документация бывает неполной, и пользователю нужен совет разработчика, что является причиной задуматься о полноте документации. Наконец, при нахождении любых ошибок пользователю хорошо было бы о них сообщать разработчикам, чтобы они могли внести исправления. Наконец, наиболее активные пользователи могут сами участвовать в создании документации или в ответах на вопросы менее квалифицированных пользователей.
Строка 27: Строка 26:
Тем не менее, никто от моральных обяз. не свобждал. Точно также к ментейнеру --- квалификация и слежение за прдуктом. ##Где-то здесь было бы невредно вставить соответствующую картинку. Когда она будет подобающим образом нарисована.
Строка 29: Строка 28:
От польз, как и в пред. картинке, требуется активнсть. У описанного процесса свободной разработки есть обратная сторона. Разработчики должны что-то делать. То есть, если у вас есть идея, как модифицировать программный продукт, будьте любезны, модифицируйте. В случае свободного программного обеспечения все возможности в руках пользователей и разработчиков. Если активности участников процесса разработки не будет, то и развития не будет, причём это касается как разработчика-программиста, так и пользователя. Типичный случай продукта, не соответствующего этой схеме, это продукт, у которого очень мало активных пользователей. То есть, есть основная группа разработчиков --- разработчики, которым за этот продукт заплатили, --- и есть, скажем, три пользователя. В такой ситуации развития не будет, потому что нет ни привлечения широких слоев пользователей к процессу, и не будет мотивации у разработчиков для улучшения программного продукта.
Строка 31: Строка 30:
В случае обращения к ментейнеру прямого некторые задачи решаются в течение часов. === Дистрибутив GNU/Linux ===
Строка 33: Строка 32:
Чего не хватает, точнее, чт является услоовием для комф. сущ. собщества. Есть мральные обяз. у участников (активность). Ккие усл. длжны быть собл.:
 * Инф. связность (интернет). Не должно быть никаких препятствий на пути расп. информации, как расп. самого прогр. продукта, так и инф. о нём. (рассказ про китай)
 * Информационная струтктурирваннсть. Речь о том, что инф. должно быть не просто много, но она должна быть структ. так, чтобы человек мог подкл. без особых затрат. При этом надо понимать, что в инф. структ. вкл. как чи ст тех. инф. для разработчиков, так и польз. док.. Другое дело, что структ. тоже не самоцель и не всегда её удаётся пддержать. При этом, когда про неё говориться, говорится и пр ресурсы интераткивные
 * Техн. преимущества. Идея в том, чтобы человеку из команды был удбно не просто компиировать, а компилировать в сотв. с дисциплиной. То есть, предст. сбор. сервера, механизм сборки, версионирование... Предположим, скачали какую-то программу на языке С, 100 файлов. Ребята разраб. у себя под солярисом, у них всё замечательн рабтает. В какой-то момент она вообще не запускается, нужны библитеки, компиляторы... В итоге собрали, но в солярисе программы кладутся в /opt/progname/, и дальше уже начинаете вносить изм., чтбы она раскладывала файлы в праильные места и их там искала. Потом оказывается, что есть какая-то ошибка, которая в солярис ене проялвяется. Наконец, наступило счастье, программа теперь работает нормально, а через 2 недели вышла новая версия... Что нужно было елать на самм деле --- любые изменения протоколировать (diff и patch), кроме того, недурно указать что нужно для сброчного окр. и запротоколировать. И только после этого можете с более-менее лёгким сердцем это собирать. При нвой версии ставите это изменение, накатите патчи и стало уже лучше. Осталось сказать, что делать это лучше на отдельном компьютере. И то, что в альте всё это предоставляется, и вы начнёте понимать, что такое тех. преимущества.
Из описанного процесса разработки отдельныхэлементов системы GNU/Linux может сложиться впечатление, что дистрибутив --- это набор разрозненных программных продуктов, непонятным образом собранных вместе. То есть, какие-то люди разрабатывают собственно GNU/Linux, и совсем другие люди занимаются разработкой программ. На самом деле, дистрибутив можно рассматривать как метапродукт, который подчиняется тем же законам сообщества, которым подчиняется отдельный продукт.

Дистрибутив --- это тоже программный продукт, только очень и очень большой. Он собирается из частей, которые находятся в интернете под свободными лицензиями. Специфика дистрибутива в том, что он многокомпонентен. Если мы пишем программу совместно, там может быть 30 мегабайт исходного кода, там может быть много модулей, но если мы возьмём программу поменьше, то это всё равно единое целое, с единым представлением, как следует программировать, документировать и т.д. Дистрибутив GNU/Linux --- это набор программных продуктов, (их там несколько тысяч) сделанных, как минимум, сотнями групп разработчиков, никак не связанных друг с другом. Поэтому функции разработчика дистрибутива можно сформулировать следующим образом: определение политики развития и целевая разработка программных продуктов, которые сообществу не очень нужны. Кстати, здесь и ответ на вопрос, откуда берутся деньги. Один из неплохих источников --- заказная доработка.

Рассмотрим сообщество с позиции разработчика. В принципе, программные продукты и без нас разрабатываются, и мы можем зайти на сайт и их скачать. Проблема в том, что нежелательно скачивать бинарные файлы (это приходится делать в двух случаях: если вы совсем не разбираетесь в GNU/Linux, а вам необходимо запустить такую программу, или если этот продукт распространяется вообще без исходного кода). Скачивать бинарные файлы не стоит по трём причинам:
 * Технологическая несовместимость. Эта программа может просто не заработать в этой системе.
 * И в случае с бинарным файлом, и нет у нас в результате скачана программа (правда, в одном случае мы платим, в другом --- нет). А если нашлась ошибка, с бинарным файлом мы сделать ничего не сможем.
 * Программа может работать нормально, но нарушать какую-то дисциплину, установленную core team. Вы её установите, и всё может начать работать некорректно.

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

Таким образом, что структура копирует структуру сообщества, нарастающую вокруг обычного програмного продукта. Разработчик в данном случае --- это тот, кто сам программу не пишет, а адаптирует её для работы с дистрибутивом. Пользователи --- а это в первую очередь пользователи дистрибутива как такового --- то есть системные администраторы, которым важно, каков дистрибутив, важна функциональность.

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

Помимо упомянутых выше обязанностей членов сообщества, существуют также другие условия, которые необходимо соблюдать для комфортного существования сообщества:
 * Информационная связность. Иными словами, интернет. Не должно быть никаких препятствий на пути распространении информации, причём как самого програмного продукта, так и информации о нём.
 * Информационная структурированность. Речь о том, что информации должно быть не просто много, но она должна быть хорошо структурирована, чтобы человек мог подключиться к проекту с минимальными затратами. При этом необходимо понимать, что в понятие информационной структурированности включается как чисто техническая информация для разработчиков, так и пользовательская документация. С другой стороны, структурированность не является основной целью, и не всегда её удаётся поддерживать на должном уровне. В эту же категорию входят интерактивные ресурсы --- обратная связь по ошибкам, списки рассылки, форумы. Их существование необходимо для того, чтобы пользователь, у которого есть вопрос, знал, кому и как его задать.
 * Технологические преимущества. Смысл в том, чтобы человеку из команды был удобно не просто компилировать, а компилировать в соответствии с принятой дисциплиной. То есть, необходимо предоставить сборочные сервера, механизмы сборки, ведение учёта изменений, версионирование... Иными словами, предоставить то, что облегчит ему жизнь в сообществе. Предположим, мы скачали какую-то программу на языке С, в ней 100 файлов. Она была разработана, скажем, под Solaris'ом, там всё замечательно работает. А мы хотим скомпилировать её под GNU/Linux, поскольку других подобных программ нет. В какой-то момент она вообще не запускается, вы выясняете, какие нужны библиотеки, компиляторы... В итоге собрали, сказали {{{makeinstall}}}, но в Solaris'e программы находятся в /opt/progname/, и мы вынуждены всё удалить, и дальше уже начинаем вносить изменения, чтобы она направляла файлы в правильные места и их там искала. Потом оказывается, что есть какая-то ошибка, которая в Solaris'е не проявляется. Наконец, наступил момент, когда программа работает нормально, а через 2 недели выходит новая версия... Чтобы избежать подобной ситуации, необходимо помнить следующее: любые изменения необходимо протоколировать (для этого существуют специальные программы diff и patch: первая показывает различия между старым и новым файлом, вторая заменяет содержание старого файла на содержание нового), кроме того, недурно указать, что нужно для сброчного окружения. И только после этого можете спокойно это собирать. При новой версии применяете к тексту программы старые изменения, если они применятся, автор не подумал, что там была ошибка, если они не применятся, Вам нужно посмотреть, что там изменилось, это называется "накатить патчи", и стало уже лучше. Осталось сказать, что делать это лучше на отдельном компьютере, чтобы избежать возможных нежелательных изменений библиотек на своей компьютере. Отметим, что ALTLinux всё это предоставляет.
Строка 43: Строка 57:
|| Готовность (%) || Продолжительность (ак. ч.) || Подготовка (календ. ч.) || Полный текст (раб. д.) || Предварительные знания || Level || Maintainer || Start date || End date ||
|| 0 || 1 || 1 || 1 || || 1 || ConstantinYershow, ОльгаТочилкина || || ||
|| Готовность (%) || Продолжительность (ак. ч.) || Подготовка (календ. ч.) || Полный текст (раб. д.) || Предварительные знания || Level || Maintainer                      || Start date || End date ||
|| 52 || 1 || 1 || 1 || || 1 || ConstantinYershow, ОльгаТочилкина, VsevolodKrishchenko || || ||

Сообщество свободного программного обеспечения

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

Совместная разработка

Открытый способ разработки плюс "копилефт" как способ лицензирования --- это основание для бизнеса, основанного на открытом программном обеспечении. Всякий человек, который воспользовался нашей разработкой и привнёс туда какие-то свои инструменты и который хочет достичь чего-то на рынке, обязан организовать этот бизнес также на основе свободного программного обеспечения, поскольку изначально разработка ведется под "копилефт"-лицензией. Таким образом, лицензирование методом copyleft --- это гарантия, что любые успешные модификации нашего программного обеспечения будут опубликованы, и ими сможет воспользоваться каждый, а развитие программного продукта не прекратится, даже если человек модифицировал что-то исключительно ради своего заработка.

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

Более того, если какая-то компания вносит в продукт улучшения из коммерческих соображений, то для нее часто проще делать это сразу открыто, используя доступ к первоначальному исходному коду, потому что согласно лицензии ей все равно необходимо будет опубликовать исходный код, если она намеревается распространять этот продукт. Такая ситуация имеет место не совсеми открытыми программными продуктами, в ряде случаев измененная версия разрабатывается и ее исходный код распространяется отдельной фирмой. Тем не менее, подход, основанный на непосредственной совместной разработке, делает распространение и улучшение программ более быстрым и простым. Сейчас так происходит далеко не везде, но, например, в случае с IBM и Samba, или с ядром Linux ситуация именно такова: разработчики из различных и часто конкурирующих коммерческих фирм работают с одной и той же системой контроля исходного кода свободной программы.

GNU/Linux -- пример совместной разработки

Мы подобрались к вопросу о том, что такое операционная система GNU/Linux, как она разрабатывается и кто и как ее использует. Все элементы этой огромной системы, будь то прикладное приложение, ядро операционной системы, или документация, разрабатываются отдельным человеком или отдельной командой разработчиков, и это фактически единственная возможность для подобных разработок, общая трудоемкость которых исчисляется десятками тысяч человеко-лет. Таким образом, у каждого элемента системы есть некий основной автор, но этим круг людей, причастных к разработке этого элеента, не ограничивается.

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

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

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

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

У описанного процесса свободной разработки есть обратная сторона. Разработчики должны что-то делать. То есть, если у вас есть идея, как модифицировать программный продукт, будьте любезны, модифицируйте. В случае свободного программного обеспечения все возможности в руках пользователей и разработчиков. Если активности участников процесса разработки не будет, то и развития не будет, причём это касается как разработчика-программиста, так и пользователя. Типичный случай продукта, не соответствующего этой схеме, это продукт, у которого очень мало активных пользователей. То есть, есть основная группа разработчиков --- разработчики, которым за этот продукт заплатили, --- и есть, скажем, три пользователя. В такой ситуации развития не будет, потому что нет ни привлечения широких слоев пользователей к процессу, и не будет мотивации у разработчиков для улучшения программного продукта.

Дистрибутив GNU/Linux

Из описанного процесса разработки отдельныхэлементов системы GNU/Linux может сложиться впечатление, что дистрибутив --- это набор разрозненных программных продуктов, непонятным образом собранных вместе. То есть, какие-то люди разрабатывают собственно GNU/Linux, и совсем другие люди занимаются разработкой программ. На самом деле, дистрибутив можно рассматривать как метапродукт, который подчиняется тем же законам сообщества, которым подчиняется отдельный продукт.

Дистрибутив --- это тоже программный продукт, только очень и очень большой. Он собирается из частей, которые находятся в интернете под свободными лицензиями. Специфика дистрибутива в том, что он многокомпонентен. Если мы пишем программу совместно, там может быть 30 мегабайт исходного кода, там может быть много модулей, но если мы возьмём программу поменьше, то это всё равно единое целое, с единым представлением, как следует программировать, документировать и т.д. Дистрибутив GNU/Linux --- это набор программных продуктов, (их там несколько тысяч) сделанных, как минимум, сотнями групп разработчиков, никак не связанных друг с другом. Поэтому функции разработчика дистрибутива можно сформулировать следующим образом: определение политики развития и целевая разработка программных продуктов, которые сообществу не очень нужны. Кстати, здесь и ответ на вопрос, откуда берутся деньги. Один из неплохих источников --- заказная доработка.

Рассмотрим сообщество с позиции разработчика. В принципе, программные продукты и без нас разрабатываются, и мы можем зайти на сайт и их скачать. Проблема в том, что нежелательно скачивать бинарные файлы (это приходится делать в двух случаях: если вы совсем не разбираетесь в GNU/Linux, а вам необходимо запустить такую программу, или если этот продукт распространяется вообще без исходного кода). Скачивать бинарные файлы не стоит по трём причинам:

  • Технологическая несовместимость. Эта программа может просто не заработать в этой системе.
  • И в случае с бинарным файлом, и нет у нас в результате скачана программа (правда, в одном случае мы платим, в другом --- нет). А если нашлась ошибка, с бинарным файлом мы сделать ничего не сможем.
  • Программа может работать нормально, но нарушать какую-то дисциплину, установленную core team. Вы её установите, и всё может начать работать некорректно.

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

Таким образом, что структура копирует структуру сообщества, нарастающую вокруг обычного програмного продукта. Разработчик в данном случае --- это тот, кто сам программу не пишет, а адаптирует её для работы с дистрибутивом. Пользователи --- а это в первую очередь пользователи дистрибутива как такового --- то есть системные администраторы, которым важно, каков дистрибутив, важна функциональность.

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

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

  • Информационная связность. Иными словами, интернет. Не должно быть никаких препятствий на пути распространении информации, причём как самого програмного продукта, так и информации о нём.
  • Информационная структурированность. Речь о том, что информации должно быть не просто много, но она должна быть хорошо структурирована, чтобы человек мог подключиться к проекту с минимальными затратами. При этом необходимо понимать, что в понятие информационной структурированности включается как чисто техническая информация для разработчиков, так и пользовательская документация. С другой стороны, структурированность не является основной целью, и не всегда её удаётся поддерживать на должном уровне. В эту же категорию входят интерактивные ресурсы --- обратная связь по ошибкам, списки рассылки, форумы. Их существование необходимо для того, чтобы пользователь, у которого есть вопрос, знал, кому и как его задать.
  • Технологические преимущества. Смысл в том, чтобы человеку из команды был удобно не просто компилировать, а компилировать в соответствии с принятой дисциплиной. То есть, необходимо предоставить сборочные сервера, механизмы сборки, ведение учёта изменений, версионирование... Иными словами, предоставить то, что облегчит ему жизнь в сообществе. Предположим, мы скачали какую-то программу на языке С, в ней 100 файлов. Она была разработана, скажем, под Solaris'ом, там всё замечательно работает. А мы хотим скомпилировать её под GNU/Linux, поскольку других подобных программ нет. В какой-то момент она вообще не запускается, вы выясняете, какие нужны библиотеки, компиляторы... В итоге собрали, сказали makeinstall, но в Solaris'e программы находятся в /opt/progname/, и мы вынуждены всё удалить, и дальше уже начинаем вносить изменения, чтобы она направляла файлы в правильные места и их там искала. Потом оказывается, что есть какая-то ошибка, которая в Solaris'е не проявляется. Наконец, наступил момент, когда программа работает нормально, а через 2 недели выходит новая версия... Чтобы избежать подобной ситуации, необходимо помнить следующее: любые изменения необходимо протоколировать (для этого существуют специальные программы diff и patch: первая показывает различия между старым и новым файлом, вторая заменяет содержание старого файла на содержание нового), кроме того, недурно указать, что нужно для сброчного окружения. И только после этого можете спокойно это собирать. При новой версии применяете к тексту программы старые изменения, если они применятся, автор не подумал, что там была ошибка, если они не применятся, Вам нужно посмотреть, что там изменилось, это называется "накатить патчи", и стало уже лучше. Осталось сказать, что делать это лучше на отдельном компьютере, чтобы избежать возможных нежелательных изменений библиотек на своей компьютере. Отметим, что ALTLinux всё это предоставляет.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

52

1

1

1

1

ConstantinYershow, ОльгаТочилкина, VsevolodKrishchenko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080716/04CommunityStructure (последним исправлял пользователь VsevolodKrishchenko 2008-10-04 11:01:04)