Копилефт = свободная лицензия с условием сохранения свобод при распространении. У копилефта есть одно забавное непонятное толкование. Как толковать понятие производный пробукт? Если вы сделали на базе копилефтного продукта свой собственный пп, воспользовавшись чужими исходниками, вы должны соблюдать копилефт. "воспользовались" = взяли исходные тексты, модифицировали, попали под копилефт. А если вы не модифицировали? Взяли билиотеку, собрали с ней свой продукт, используя её на этапе связывания. Вот тут начинаются толкования. Несмотря на основную идею о модификации исходников в текущей формлуировке тот копилефт, который проипсан в гпл требует раскрытия исходников прираспространении в том числе когда произошло связывание с копилефтной библиотекой. С этой тз проприетарный дрова в ядре -- вещь скользкая. Цель создания открытого сообщество достигнута не совсем адекватными средствами. Реальное ограничение бизнесу тем людям, которые хотят производить именно библиотеки и надеются, что с ними будут взаимодействовать не только члены свободного сообщества, но и люди которые будут делать проприетарные продукты на базе свободных библиотек. поэтому для тех ситуаций, когда не произошло модификации используют LGPL Library GPL|Loose GPL. Если модификации исходного кода не произошло и продукт получен в результате позднего связывания -- на него требование копилефта не распространяется. Qt распространяется под lgpl. До недавнего времени, правда, qt распространялась под gpl. Когда вы с этим встречаетесь, вы не пугайтесь.
Есть такой труд современных социопсихологов "Теория групп" Ланцберг-Кордонский. Идея состоит в том, что любое самоорганизованное сообщество обладает схожей структурой и принципами организации. Структура сообщества устроена так -- есть центральная часть, ядро. Оно очень маленькое, люди в нём должны иметь возможность всегда между собой договориться. И это люди,, которые по тем или иным причинам большую часть своего времени вкладывают в развитие проекта. им видна вся картина в целом. Это люди, которые по той илииной причине сильно мотивированиы и заинтересованы в развитии проекта. Следующий слой -- сообщество разработчиков. Разработчики включаются в процесс разработки тогда, когда им самим лично выпадет такая необходимость. Третий слой, самый большой -- сообщество пользователей. И внешние люди -- случайные люди, из тех, кто запустил программу, она не понравилась, удалил и жжду когда выйдет новая. Успех продукта зависит от того, насколько развиты все три слоя. От пользователей требуется главное -- активность. Не то чтобы гиперактивные пользователи это благо, но это их главное достонство, что он не сидит сложа руки, а сам идёт и ищет кого-нибудь, кто решит его проблему. В проектах, которые не могут позволить нанять себе сто тыщ тестеров эту роль выполняют самые активные пользователи, которые скачивают альфа версии программы и сообщают о всех ошибках. Это надо всячески поощрять. Соотношение между слоями обычно 1 к 10. 7 в ядре, 70 в разработчиках, 700 в пользователях. Итд.
Ответственность ядра, компетентность разработчиков, активность пользователей -- вот главное.
Что ещё необходимо для благополучного развития?
- информационная связность. Именно благодаря интернету свободный софт стал выходить из маргинального угла. особенно это важно для пользователей, который могут не сидеь сложа руки, а лезть на ресурсы с информацией.
- технологические ресурсы сообщества. для привлечения разработчиков -- сборочницы, ещё что-нибудь.
- инструментальные
- информационные
Достаточно посмотреть как оформлен сбор обратной связи в любом крупном свободном проекте. Там, как правило есть сразу несколько интерфейсов -- форумы, вики, багтрекеры, ориентированные как на пользователей, так и на разработчиков.
Самый главный принцип -- свобода входа и выхода. Вы приходите в сообщество, начинаете что-то делать, вам говорят "спасибо мужик". Вы хотите сказать " я устал я ухожу", вам скажут "спаисбо, нам печально что ты уходишь, здорово поработали". Любое ограничение приводит к тому, что сообщество уменьшается.
Второй приницп -- динамическая иерархия. Главный тот, кто вносит наиболее эффективный вклад в общее дело. Не самый опытный, не самый умный, не самый седой, а именно тот, кто вносит наибольший вклад. Естественно это связано с тем, какая мотивация у человека. Если ему хочется -- он и освоит, и научиться. Если малая мотивация, то даже самого умного человека будут уважать, но главным он не будет. Иногда считают, что свободные сообщества имеют сетевую иерархию, но это не совсем верно. Иерархия скорее ядерная. Из этогое сть забавное следствие -- многие свободные сообщества управляются диктаторами. BDFL -- добровольный поизненный диктатор -- ядро, питон, слакварь. Человек сам всё придумал, является ядерным образующим элементом и никакого резону его перемещать по этой иерархии нету. конечно же речь идёт только о сфере взаимодействия.
Произвольность мотиваций. Может вам платят деньги, а может вам просто весело видеть, что код работает. Никакой фильтрации не происходит. Очень часто проектом занимаются чтобы повысить свой собственный скилл.
Кратенько вспомним как устроена структура социальных отношений в корпоративной структуре. Есть хедквартер, который управляет всем и ни с кем это не обсуждает. У них есть куча отделов, которые друг с другом не общаются. "Делай то, за что платят деньги и ни очем не задумывайся". Пытаются это изменить, например 2внедряют корпроративный дух".
Основным принципом конфуцианской этики является понятие "жень" как высший закон взаимоотношений людей в обществе и в семье. Женьдостигается путем соблюденяя ли. Чем точнее соблюдаешь, тем более совершенным человеком является. Главный пункт ли -- сяо, почтительность. Уважение к старшим, к старшим по положению, почитание родителей, преданность государю, целая куча разных пирамид подчиненност. согласно конфуцианству постичь жень могут лишь немногие. Только избранные могут достигнуть стадии благородного мужа, а сяо-жень(мелкие людишки) не могут достичь уважения и должны прозябать в той ячейуке, куда их поставила иерархия. Это хорошо описыввает корпоративную структуру. Можешь ли ты им командовать или он тобой, соблюдаешь те правила, который спустили или нет. Весьма поучительно выглядят понятия оо справедливом и несправедливом правом или неправом с понятия на конфуцианство. Подсидеть отаврища -- its a buiseness. Ты потому просвещённый муж, что достиг более верхнего положения, а не наоборот. Там еще много всего интересного, давайте вернемся к ссвободному сообществу.
Там есть три главных принципа, которые не разрешают реализоваться иерархией в конфуцианском стиле. Что являетсядоминантой, относительно кого формулируются все три принципа. Они формулируются относительно каждого конкретного человека. Лично ты имеешь право свободного входа и выхода, лично ты можешь быть скольугодно великим и лично ты имеешь право хотеть чего хочешь.
Давайте попробуем теперь вспомнить о канте. у него очень простой принцип -- категорический императивю У него к=еть две формулировки -- поступай труководствуясь максимой такой, что б она могла стать всеобщим законом. Твои действия должны быть теми правилами, которые могут быть применены ко всем. Не к вам лично! Возможно вы мазохист. а именно так, как эффективно для всех. поступай так, как если бы относился к человечеству как к цели, а не как средству.
Если мы попроьуем поступить в стиле конца прошлого века работы со свободным по. Берём все нужные продукты и начинаем их компилировать. Но это не получится. В конце 80 хакер мог всё -- собрать ос, разобрать ос, написать ос. Заметим, что линус не писал ос, писал только ядро. Потому что он не был хакером в большом смысле. с тех пор изменились три вещи.
- сами программистские инструменты стали более сложными. Сейчас недостаточно знать си, чтобы написать ос.
- дико возрос объем кода. На порядки. Исходный код который есть сейчас -- его невозможно не то что прочитать, даже назвать все проекты.
- сильно возрос человеческий ресурс. Появилось много людей, готовых приянть участие в процессе. При этом средний уровень, естесвенно, упал.
Поэтому возникла идея дистрибутива как сборника программных продуктов. с чем мы имеем дело. большое коичество исходников. Реально большое. представим себе, что мы каким то путём справились и компилируем. И тут у нас возникает ошибка. Можно попробовать выбросить кусок, который не компилируется, но это очень рисковый подход.
- большое количество исходников
- неравноценность компонент.
уже на этом уровне в создании дистрибутива появляется специфика. Мы не можем уследить за всем исходным кодом. Кодом занимаются не члены сообщества, а апстрим. Апстрим -- разработчик продукта, который мы хотим включить в дистрибутив. Вокруг этого разработчика есть своё сообщество, у него есть какие-то цели, знает о существовании дистрибутивов линукса. Он нам ничем не обязан. Мы можем просто вступить в его сообщество. апстрим -- внешний источник исходников.
- больший объём (по сравнению с программным продуктом) работ по координации. Полиси как следствие.
Наиболее технлогически состояельный дистрибутив -- дебиан, имеет весьма жесткое полиси по сравнению с другими базовыми дистрибутивами. Полиси -- это правила, которыми должны руководствоваться участники сообщества дабы их труд был признан качественным и компетентным. ещё одна довольно забавная штука -- дистрибутив в отличии от собственно пп в классическом понимании -- это конструктор. Дистрибутиво строение начинает напоминать жонглирование кубиками. Из разговора о программировании разговор о конструировании решений.
- работа на конструктором решения задач. Это накладывает специфические требования на участников ядра. они не программисты или далеко не только программисты.
Если всё это просуммировать, то получим довольно специфическое "сообщество вокруг дистрибутива". Кор тим -- люди которые могут заниматься им достаточно много, с широким знанием вобласти администрирования. Вбольшей части пользователь дистрибутива это именно администратор. Коммьюнити лидер -- люди которые или прироодно умеют, или учились работаьт с сообществом. И люди,к оторые занимаются решением технических задач. "Внедренцы". Есть ещё другой вариант -- когда у нас не равный дистрибутиву способ монетизации. Например дистрибутив как подножка для чего-нибудь. Кастомные дистрибутивы. тогда в тим должны быть люди, которые умеют решать эту конкретную задачу. Темне менее требование отвественности никуда не девается. кор тим должна видеть, куда всё идёт, чтобы сообщество продолжало существовать.
Разработчики -- саая пнятная и самая специфическая часть. Большая чатсь разработки происзодит в апстриме. в роли разработчика выступает майнтейнер в обязанности которого входит работа с апстримом, адаптации исходников к требования полиси. Идеальный мантейнер член двух соообществ сразу -- дистрибутива и апстрима.
Обязанности майнтейнера заключаются в том, чтобы взаимодейстовать с апстримом, адаптировать код и (внимание) взаимодейстовать с пользователями. Пользователи при проблемах чаще всего обращаются к майнтейнеру. Майнтейнер мотивирован что-то сделать. Майнтейнер разбирается в этом. Возможно это ошибка была сделана самим майнтенером. Майнтеннер будет общаться с апстримом на языке разработчиков, а не пользователей.
Апстрим получает выгоду -- у него прибавляется тестеров, ему посылают сообщения относительно грамотные люди.
Итак, майнтейнер должен быть не только и не столько программисотом, а уметь работать с различными инструментами и быть социализированным товарищем.
Касаемо пользователей. Это люди, которые активно взаимодйействуют с дистрибутивостроителем. В первую очередь польователь должен знать, что такое дистрибутив. второе, активное взаимодействое будет у того, кто пользуется разными деталями дистрибутива. Пользователь опенофиса и фаерфокса вря ли будет слшишком активны. Чаще всего пользователи это те, кто савит линукс джаст фор фан.Они могут достигать этим и меркантильные цели -- например, сисадмины такие люди. Админ, внедренец, человек который вынужден сталкиваться с разными программными продуктами. Оти этого пользователя требуетс ятолько одно -- активность и к счастью нашему в точку человека который пользуется всем одновременнопопадают более менее компьюерно грамотные люди. Это правда было не всегда, особенно когда было школьное внедрение.
Проблема неравномерности компонент решается кастомизацией дистрибутива. Об этом подробнее в следующий раз. В хранилище много пакетов, в дистрибутиве их меньше.