БСД: Большие и Страшные Демоны

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

Итак, все мы хорошо знаем, что количество дистрибутивов Linux не поддается никакому исчислению, учету или разумной классификации – “ибо имя им легион” (см. Лк. 8, 30). А как известно из достоверных источников, “царство разделившееся в самом себе не уcтоит”. Сильнейшая фрагментация проекта – одна из визитных карточек, свойственных именно базарной модели разработки, которую выбрала для себя Linux. Кто-то может спросить у автора: “Чем же плохо, когда у тебя есть такой широкий выбор?”, и в ответ услышит: “Это плохо тем, что некоторые подсистемы/приложения находятся в слабо развитом состоянии, что ныне (так и хочется добавить “и во веки веков”) малопригодны к использованию. И вместо того, чтобы “пилить” всю эту дикую смесь софта до победного конца, то есть общей совместимости и целостности, часто участники таких проектов распыляются на создание бесконечных форков и ответвлений”. Что лучше – один-три дистрибутива, вычищенных до блеска и выхоленных до совершенства всеми участниками совокупными усилиями, или миллион разных дистрибутивов, почти каждый из которых – не доведенная до ума рыхлая масса? На этот вопрос каждый волен отвечать себе сам.

Поймите меня правильно, меня буквально умиляет наличие невообразимого многообразия дистрибутивов Linux, глаза разбегаются от попытки провести здесь хоть какие-то границы и ориентиры. Только в качестве демонстрации вышесказанного давайте взглянем на некоторые из них. Вот, например, BarbieOS, очередной популистский дистрибутив, созданный специально в розовых тонах для девочек 10-13 лет, здесь моя психика не выдержит пересказа, а потому я предоставлю слово непосредственно разработчику: “Большинство девочек и даже взрослых женщин пугаются и впадают в истерику, увидев традиционную командную строку, - говорит главный разработчик софта Mattel, - поэтому нами было решено применить розовый цвет текста в консоли, а фон украсить разноцветными цветочками. Открывающиеся окошки имеют округлую форму, так как женщины подсознательно ассоциируют круг с маткой. При запуске установки системы появляется Барби-помощница, которая бережно ведет девочку через все круги этой процедуры.” Интересна судьба этого передового дистрибутива Linux – этот проект был закрыт компанией Mattel (ведущий европейский производитель игрушек) через 2 года после его упорного развития, потому что по уровню глючности этот дистрибутив, пожалуй, превзошел даже свой оригинал - Debian. Другой дистрибутив для детей – DoudouLinux - направлен на то, “чтобы сделать компьютер доступным для всех детей на Земле безо всякой дискриминации”. Проблема только одна, что, как можно почитать в отзывах на их официальном форуме, он пока скорее находится в условно работоспособном состоянии, чем пригоден для серьезной борьбы с общемировой дискриминацией детей, которой я как раз собирался на этих выходных вплотную заняться (лично у меня дистрибутив завис еще на стадии установки). Я насчитал еще около 20 детских дистрибутивов, сделанных на Linux, примерно такого же уровня исполнения, часть из которых, кстати, создана бывшими разработчиками других дистрибутивов, но у меня есть лишь один вопрос в связи с этим: почему вместо этого бесконечного “форкования” дистрибутивов, общими силами не довести до ума и полной работоспособности хотя бы один из них? Разве не сам Торвальдс утверждал, что "при достаточном количестве глаз все ошибки лежат на поверхности"?
Проблема сильной фрагментации проектов – это острейшая проблема свободных проектов вообще. Часто эту проблему просто констатируют, но не пытаются объяснить ее причины. Но мы здесь попробуем ненапряжно копнуть чуть вглубь этой проблемы, причем постараемся сделать это руками самих линуксоидов. Марк Шаттлворт, известный мыслитель и основатель компании Canonical, делает попытку обозначить эти самые причины, ведущие к разобщению сообщества и созданию множества веток-ответвлений, от когда-то единого и священного древа разработки. Марк называет это явление отуземливанием (то есть трибализмом, англ. tribalism, от англ. tribe - племя) и подробно рассматривает его влияние на open source сообщество, и сообщество Ubuntu Linux в частности, в своем личном блоге. Трибализм, по мнению Шаттлворта, это когда одна группа людей искренне считает, что люди из другой группы изначально неправы (wrong by default). На самом деле, рискуя углубиться сейчас в общественные и психологические корни этого феномена, просто заметим, что трибализм является далеким пращуром таких общечеловеческих форм дискриминации, как сексизм и расизм. Марк выделяет два основных клише в этом племенном мышлении:

1. "Другие никогда не делают чего-нибудь полезного". При этом Марк, бизнесмен по профессии и призванию, пишет в своем блоге, что много поездил по миру и повидал много разных стран, компаний, церквей, но ни разу не видел при этом, чтобы кто-то ничего не делал полезного вообще. Просто каждый делает свой вклад в общее дело на своем уровне понимания и возможностей. Например, если люди говорят категорично "Microsoft есть тотальное зло", то это яркий пример племенного мышления, так как это строится по той же схеме, что и стандартные расистские обвинения "все черные - [вставьте здесь название своего любимого предрассудка]".

Чтобы обезопасить первый принцип и придать ему догматичную самозавершенность, многие разработчики сознательно или бессознательно исповедуют второй принцип:

2. "Свидетельства, противоречащие моему - не в счет".

Марк заканчивает свой анализ сообщением, что “на самом деле трибализм делает людей (разработчики – тоже люди, прим. И.С.) глупыми. Так же как глупо не нанимать кого-либо чрезвычайно умного и квалифицированного только потому, что у него другой цвет кожи, или только потому, например, что это женщина. Пример из IT-сферы: глупо отвергать работу другого только потому, что он ассоциируется с работой другого племени, или, что еще хуже - принадлежит другому племени”.
Именно из-за этого принципа open source проекты, по мнению Марка, где нет центральной жесткой архитектуры подчинения и никто никому ничего не должен, часто опускаются до непродуктивной ругани (flamewars), и в результате – разваливаются на конкурирующие ветви. Поэтому требуется сильное формальное лидерство в проекте, чтобы противостоять племенному мышлению и не допускать людей с племенным мышлением на ответственные должности, если подобные тенденции берут верх в проекте. Если бесполезные противопоставления к некоему внешнему врагу всячески культивируются (например к Микрософту), то будьте уверены – это только вопрос времени, когда подобные flamewars вспыхнут уже внутри самого коллектива, по отношению к отдельным своим членам или группам, породив раскол и возникновение новых форков.
Итак, повторюсь: мне не нравится сильная фрагментация мира Linux потому, что, образно говоря, вместо того чтобы строить величественные небоскребы на века (или готические замки – как кому нравится), общим скопом согласованно работая в большой команде, где в результате становится совершенна каждая деталь из всей этой общей гигантской конструкции, в реальном мире СПО в противоположность этому часто усилия распыляются на развитие параллельных и однотипных проектов-однодневок. И вот вместо величественных и гигантских небоскребов на выходе мы получаем кучу одноэтажных (кому повезет – то и 2-этажных) домиков, наклепанных индивидуалами в муках и поте лица всех мастей и вкусов из подручной американской фанеры.

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

Вся экосистема проектов GNU/Linux имеет иерархическую структуру разработки. В ней отдельно разрабатывается ядро Linux, непосредственно под чутким руководством финна Торвальдса. Исторически с самого начала Linux был просто ядром. И без бесконечных дискуссий по поводу того, что входит в понятие “операционная система”, любому понятно, что ядро само по себе не очень полезно. Вам необходима вся пользовательская оболочка для того, чтобы заставить его работать. Linux - это конгломерат: здесь ядро, там ls, с другой стороны ps, vim, perl, gzip, tar и еще куча всего от кучи разных разработчиков. Итак, в свою очередь нужны системные и прикладные программы GNU, совокупность которых принято называть пользовательским окружением (userland), где тоже каждая утилита по отдельности - самостоятельный проект. На основе релизов ядра и разных наборов сторонних приложений и утилит отдельными независимыми компаниями и сообществами уже разрабатываются и собираются дистрибутивы общего назначения. И замыкают эту иерархию специализированные дистрибутивы, предназначенные для решения узкого спектра задач.

В отличие от базарной модели разработки, состоящей из независимого друг от друга фрагментированного подмножества “роя пчел“, FreeBSD использует кафедральную модель разработки, на основании которой можно смело констатировать: FreeBSD - это цельная система. Для FreeBSD не существует специфических оговорок, так как дистрибутив и его ядро всегда одни. Для FreeBSD не существует разных направлений развития и разных специализированных параллельных форков, так как, повторюсь еще раз, дистрибутив на всех один и тот же. У FreeBSD есть всего одна своя Библия – официальное всеобъемлющее руководство по системе - handbook, - написанный очень толково и снимающий после внимательного прочтения 99% всех возникающих у новичка вопросов. Вообще цельность и монолитность FreeBSD — это ее главный очень жирный плюс. Благодаря наличию системы портов ставить софт (как из исходников, так и из пакетов) очень легко, просто и удобно.

Просто почувствуйте эту идеологическую разницу: в Linux никогда не было какого-либо разделения на “базовую систему” и “дополнительные утилиты”. Вся система - это просто “дополнительные утилиты”. В Linux MySQL ничем принципиально не отличается от ls, от KDE, whois, dc. Каждый бит системы - это тот или иной пакет дополнений. Напротив, в BSD всегда была централизованная модель разработки. Всегда присутствовала общность, которая “отвечает” за систему. BSD не использует GNU ls или GNU libc, она использует BSD ls и BSD libc, являющиеся прямыми потомками тех ls и libc, которые распространялись вместе с BSD от CSRG. Они никогда не разрабатывались или собирались независимо. Вы не сможете “пойти и скачать утилиту BSD libc” где-нибудь там, потому как в мире BSD libc сама по себе бессмысленна. Утилита ls сама по себе – также бессмысленна. Ядро FreeBSD само по себе бессмысленно. Система - это единое целое, а не слитые на этапе предрелизной подготовки скриптом для массовой скачки и копирования в общую кучу маленькие чужеродные кусочки-утилиты, разработка которых всегда ведется не зависимо от свойств и особенностей любого конкретного Linux-дистрибутива.

Важно подчеркнуть эту сторону “базовой системы”, потому как, я полагаю, в ней заключается самое заметное отличие методологий разработки BSD и Linux. Дистрибьютор Linux может сложить вместе все куски и быстренько протестировать их на взаимное соответствие до релиза в отведенные графиком разработки месяц-полтора. В случае проблем некоторые пакеты могут быть модифицированы и доработаны. Но это совершенно отличается от интенсивной интеграции, применяемой в BSD. В частности, тем, что многие компоненты базовой системы берутся не “откуда-то оттуда”, а уже прожили долгую жизнь как часть системы, невольно срастаясь за эти многие десятилетия с ней и ее частями в одно неразделимое гармоничное целое.

И если, как цитируемый нами “убунтоит” Марк, который упорно пишет в своем личном блоге в перерывах между полетами в космос коммерческим туристом и поездкой в Антарктиду на ледоколе "Капитан Хлебников" о важности толерантности в совместной разработке, действительно прав, то причина фрагментации сообществ СПО лежит лишь в их слабом и недостаточно авторитарном лидере. Я же, например, считаю, что причина заложена в самой модели разработки - просто исходя из ее исходного хаотического дизайна. Когда существует деление на своих и чужих, когда в рамках даже одного проекта-ядра сосуществуют различные конкурирующие коллективы, движущиеся подчас в противоположных направлениях, – конфликты и потеря КПД в развитии просто неизбежны. И проще всего проиллюстрировать это утверждение на примере самого Марка – евангелиста терпимости и толерантности в мире Linux. Сделаем это на примере, когда Canonical совсем недавно публично уличили во вранье. Напомню, что убунтоиды всюду утверждают, что они главные разработчики GNOME, а после проверки независимого исследователя оказалось, что, к примеру, вклад RedHat в развитие GNOME - 16%, а у самого “ведущего разработчика” – всего лишь жалкий 1%. Эти данные у Шаттлворта вызвали такое сильное обострение, что он обругал всех и вся в блоге исследователя, который эти самые данные посмел опубликовать. Конечно же, главный идеолог и проводник терпимости в мире Linux не обязан следовать своим же собственным учениям – все как в жизни, чудес не бывает.

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

Игорь Савчук blogerator.ru


Компьютерная газета. Статья была опубликована в номере 37 за 2010 год в рубрике ос

©1997-2024 Компьютерная газета