Глава 10. GNU/Linux

Глава 10. GNU/Linux

dump_stack()

GitHub репозиторий проекта

Telegram канал для уведомлений о новых главах @faif_ru.


К 1993 году движение за свободное ПО оказалось на перепутье. Оптимисты упиваются успехом ― хакерская культура заняла место под солнцем, популярность её растёт. Свежие выпуски журнала *Wired* с отвязными статьями про шифрование, Usenet и свободу софта расхватывают, как горячие пирожки. Термин "интернет" из жаргона хакеров, инженеров и учёных бесповоротно переехал в повседневную лексику. Даже президент Клинтон нередко упоминает его в своих речах о насущных задачах страны. Персональный компьютер был когда-то игрушкой хакеров и гиков, но теперь это атрибут солидности и успеха. Созданные хакерами программы служат миллионам пользователей. Да, проект GNU пока не достиг своей конечной цели ― полностью свободной операционной системы GNU. Но у людей есть свободная система GNU/Linux, совмещающая окружение GNU и ядро Linux.

Всё хорошо, как ни крути. После десятилетий борьбы хакеры утвердили свои ценности, и люди приняли их.

Или нет? Есть люди, что находят массу поводов для пессимизма. Ну да, хакеры теперь на гребне волны, но хорошо ли это для других людей? Да, Белый дом в восторге от интернета и даже открыл официальный сайт whitehouse.gov, но в то же время обсуждает с бизнесом, юристами и полицией как бы взять под контроль этот информационный фронтир, новый Дикий Запад ― всемирную сеть. Да, мощности персональных компьютеров сказочно выросли, но из-за Intel на ПК господствуют несвободные программы. На каждого пользователя GNU/Linux приходятся десятки, а то и сотни пользователей несвободной Windows. Что неудивительно, если взглянуть на графические интерфейсы GNU/Linux ― неудобные и куцые. Работать в них может только очень искушённый человек, как минимум специалист. В создании графического интерфейса проект GNU терпит неудачу.

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

Наконец, не всё ладно и в GNU/Linux. Есть юридические проблемы (с ними уже столкнулась BSD), да и сами разработчики ядра Linux не представляют себе, что делать и куда идти. GNU/Linux растёт очень бурно и завоёвывает популярность, но всё ещё больше похож на сборник хитов программирования вроде GCC, Glibc и GDB, чем на цельную операционную систему. Линус Торвальдс и его сподвижники не думают о каком-то плане развития ядра. Торвальдс теперь больше управляет, чем пишет код. Как он сам говорит о своём успехе: "Я вообще очень ленивый и люблю поручать свою работу другим людям".

Такая лень удивительна с точки зрения продуктивности Линуса, но с политической точки зрения она удручает. Она показывает, что Торвальдсу нет дела до свободы ПО. Он создал и развивает ядро просто ради удовольствия, чего даже не скрывает. Так что же такое GNU/Linux, чем он должен стать? Воплощением философии свободного софта, что выражена в *Манифесте GNU*? Или техничным сочетанием мощных программ, конструктором инструментов для опытных пользователей?

На исходе 1993 года стало понятно, что чаша весов клонится ко второму варианту. Пользователи вовсю создают свои варианты системы ― "дистрибутивы" GNU/Linux самых разных типов, раздают их бесплатно или продают. Результаты противоречивы.

"Тогда ещё не было Red Hat и других коммерческих дистрибутивов, ― вспоминает Ян Мёрдок, студент-информатик университета Пердью, ― на всех ресурсах, посвящённых Unix, висели россыпи объявлений со словом 'Linux'. Многие эти компании были однодневками, и не видели ничего плохого в том, чтобы добавить в систему сколько угодно собственнического кода".

Мёрдок ― программист Unix. Он впервые установил GNU/Linux на домашний компьютер и в полном восторге от системы. "Это чистейшее удовольствие. Я захотел поучаствовать в общем веселье". Мёрдока огорчает засилье криво собранных, нестабильных дистрибутивов. Он решает собрать версию системы без каких-либо сомнительных дополнений, и только из лучших образцов свободных программ. "Хотелось чего-то, что может гордо называться Линуксом", ― говорит он.

Что делали великие хакеры, собираясь основать великие проекты? Писали в Usenet, пытаясь заинтересовать людей и привлечь их к работе. То же делает и Мёрдок ― пишет о своих намерениях в группу comp.os.linux. И в числе первых ответов видит письмо с адреса rms@ai.mit.edu. Каждый хакер знает, чей это адрес, знает это и Мёрдок. Это письмо от Ричарда Столлмана ― "хакера хакеров" и основателя проекта GNU. Что, интересно, ему понадобилось от Мёрдока? Почему культовый хакер, командующий разработкой собственной операционной системы, отозвался на недовольство Мёрдока дистрибутивами "Linux"?

"Он сказал, что фонд свободного ПО начал присматриваться к Linux, чтобы, может быть, создать собственную систему Linux *sic*. Столлман посчитал, что мои цели сходятся с их философией".

Без всякого преувеличения, письмо знаменовало изменение стратегии Столлмана. До 1993 года он почти не обращал внимания на Linux. Когда Ричард услышал о первом выпуске ядра, он спросил знакомого хакера о качествах Линукса. Тот ответил, что Linux скроен по образу и подобию System V ― низкопробной версии Unix, и добавил, что Линукс непереносим на другие платформы.

Знакомый хакер всё правильно сказал. Тогда, в 1991 году, ядро Linux работало только на процессорах семейства Intel 386, и выглядело как копия Unix для бедных. Но теперь многое изменилось. Linux оказался единственным свободным ядром операционной системы, и пока Столлман слушал отчёты о неторопливой работе над Hurd, Торвальдс с сотнями сподвижников захватывали компьютерный рынок с его многообразием платформ.

Наступает 1993 год, проект GNU лихорадит. Разработка ядра Hurd замедляется всё сильнее из-за большого числа проблем. Журнал *Wired* пишет, что проект GNU "увяз", хотя многие его продукты очень популярны. Но журнал ещё мягок в формулировках, на самом деле настрой у разработчиков проекта ещё хуже. Успех уже готового свободного ядра Linux подкосил мотивацию хакеров. "Очевидно, что нами двигало желание заполнить пробел в свободной операционной системе, ― вспоминает Часселл, ― и как только пробел заполнился, нам стало не так интересно работать".

Уйма работы участников проекта GNU с 1990 по 1993 год пропадает впустую. Многие возлагают вину на Столлмана, но его старый друг Эрик Реймонд считает, что проблема куда глубже. "Фонд свободного ПО оторвался от жизни в своих амбициях, ― говорит он, ― вместо создания операционной системы он занялся исследованием операционных систем. И что ещё хуже, они думали, что происходящее за пределами фонда не повлияет на них".

Мёрдок мягче в оценках: "По-моему, тут сыграло роль то, что они питали слабость к глобальным решениям, не обращая внимания на их эффективность. Например, микроядра ― на рубеже 80-90-х годов они считались решением всех бед, и проект GNU стал разрабатывать именно микроядро. А теперь, когда проблемы микроядер очевидны, уже слишком много сделано, чтобы выбрасывать всё и начинать с нуля".

Столлман отвечает на это: "Мнение Реймонда опирается на воображаемые посылки, но в одном он прав: Hurd действительно пошёл не по тому пути разработки. Вместо того, чтобы как можно быстрее сделать рабочее ядро, разработчики постоянно переписывают его огромными кусками, снова и снова, чтобы довести до идеала. Может быть, это и хорошо с академической точки зрения, но очень плохо с практической".

Ссылается Столлман и на другие проблемы. Судебные войны, развязанные Apple и Lotus, отняли у него много времени и сил, плюс ещё заболевание рук сильно затруднило набор текста, так что Ричард пишет очень мало кода. Отдельная головная боль ― согласованность разных частей проекта GNU. "Мы потратили очень много сил на GDB, ― говорит Столлман, ― и люди, что им занимались с самого начала, неохотно берутся за другие задачи". Они предпочитают дальше разрабатывать GDB и помогать пользователям этой программы, глобальная цель проекта GNU их уже мало интересует.

Но самой жестокой проблемой Столлман называет сложность разработки микроядра, которую хакеры GNU очень сильно недооценили поначалу. "Отлично, мы наладили взаимодействие микроядра Mach с аппаратными ресурсами, ― вспоминает Ричард, ― и кажется, что теперь-то работа пойдёт быстрее. Но не тут-то было. Оказалось, настоящие сложности ― там, где микроядро асинхронно и многопоточно взаимодействует с программами. Начались сплошные ошибки синхронизации, которые портят файлы, и это ни черта не весело. Мы убили столько времени и сил, чтобы получить очень далёкую от готовности систему".

Стало понятно, что проект GNU должен запрыгнуть в уходящий поезд ― не ждать ядро Hurd, а сконцентрироваться на комбинации программ GNU и ядра Linux. Однако это спорный шаг ― сообщество GNU/Linux довольно проблемно с точки зрения философии свободного ПО. Хотя само ядро лицензировано под GPL, многие представители сообщества не стремятся к полностью свободной операционной системе. На конец 1993 года численность пользователей GNU/Linux колеблется от 20 до 100 тысяч человек. Linux вырос из игрушки в серьёзное ядро, и теперь готов к промышленному использованию, и многие не видят ничего плохого в том, чтобы запускать на нём несвободные программы. Неудивительно, что Столлман смотрит на "победу" GNU/Linux со смешанными чувствами ― наверное, так же Черчилль смотрел на победу над Гитлером, видя советскую армию в Берлине.

Столлман опоздал к пирушке победителей, но всё ещё очень влиятелен. Фонд свободного ПО объявляет о финансовой и моральной поддержке проекта Мёрдока, и вслед за этим его окатывает волна поддержки из других источников. Мёрдок называет свой проект Debian ― сокращение от имени его жены Деборы и его собственного имени Ян ― и уже через несколько недель выкатывает первую версию дистрибутива. "Поддержка Ричарда буквально катапультирует Debian к пику внимания сообщества", ― говорит Мёрдок.

В январе 1994 года Мёрдок составляет *Манифест Debian*. В духе столлмановского *Манифеста GNU* он объясняет важность тесного сотрудничества с фондом свободного ПО:

Фонд свободного программного обеспечения чрезвычайно важен для будущего проекта Debian. Тот простой факт, что этот фонд распространяет дистрибутив, говорит миру, что Linux *sic* ― не коммерческий продукт, и не должен быть таковым, но не значит, что Linux не может соперничать с коммерческими продуктами. Если вы не согласны с этим ― объясните рационально успех GNU Emacs и GCC, которые не относятся к коммерческим продуктам, но серьёзно влияют на рынок по факту.
Пришло время позаботиться о будущем Linux *sic*, а не о деструктивном обогащении за счёт Linux и его сообщества. Может быть, разработка и раздача Debian не решат поднятой в *Манифесте* проблемы, но, надеюсь, хотя бы привлечёт к ней достаточно внимания.

Вскоре после выхода *Манифеста* фонд свободного ПО делает первый важный запрос. Столлман просит Мёрдока называть систему "GNU/Linux". Сначала, впрочем, Ричард предлагает комбинированный вариант ― "Lignux", но это название никому не нравится, и Столлман возвращается к более длинному, но не такому критикуемому названию GNU/Linux.

Мёрдок принимает просьбу Столлмана, однако многие продолжают игнорировать приставку "GNU", считая её попыткой запоздало приписать себе заслуги. Сам Мёрдок так не считает. По его словам, это попытка примирить разработчиков проекта GNU с теми программистами, что адаптируют программы GNU к ядру Linux. "Был серьёзный раскол, ― вспоминает он, ― и он беспокоил Ричарда".

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

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

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

На посту лидера проекта GNU Столлман уже сталкивался с печальными последствиями ветвления кода. В 1991 году компания Lucid нанимает несколько программистом для улучшения GNU Emacs, они пишут ряд новых функций и предлагают их Столлману. Как это обычно бывает, половину этих функций Ричард принимает, а другую половину отклоняет. Программисты настаивают на том, чтобы Столлман принял все функции, но он говорит, что может принять лишь половину, да и то лишь после доработки. Тогда программисты Lucid вообще отказываются помогать ему даже с этой одобренной половиной функций, и ветвят код GNU Emacs, выпуская собственную версию ― Lucid Emacs. Это вызывает бурю эмоций в сообществе.

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

"Мы видим, что людям, которые называют себя 'пользователями Linux', неинтересен проект GNU, ― рассказывает Столлман, ― они говорят: 'Почему я должен этим заниматься? Мне плевать на GNU. У меня программа работает, у других пользователей Linux она работает, а остальное нас не волнует'. Удивительно ― люди используют одну из версий системы GNU, и им всё равно на проблемы GNU". Называя систему "Линуксом", они сами себя запутали и забыли, что их система больше GNU, чем Linux.

Ради того, чтобы сохранить единство свободного сообщества, Столлман просит сопровождающих делать то, что должны делать разработчики ― исправлять правки кода в пользу поддержки множества платформ. Как правило, это помогает, но с glibc такой номер не проходит. GNU C Library, glibc ― стандартная библиотека языка С во многих системах. Через неё общаются программы с ядром системы ― так было заведено в Unix, так заведено в Unix-подобных системах. Понятное дело, что в разных системах это общение через glibc проходит по-разному, но во всех системах glibc должна работать одинаково хорошо.

Разработчики Linux адаптируют glibc к своему ядру и предлагают массу изменений в эту библиотеку ― как обычно, очень "эгоистичных" изменений, который учитывают только их ядро. Сопровождающий glibc говорит, что исправить их все слишком сложно, и тогда фонд свободного ПО нанимает его почти на год, чтобы он с нуля воссоздал функциональность для Линукса. Так появляется 6 версия glibc, для которой GNU/Linux уже "родная" система.

Именно после этого Столлман настаивает, чтобы в название системы Debian добавили приставку GNU. "Нам удалось избавиться от другой ветки glibc, но уже понятно, что сообщество Linux может в любой момент пойти своим путём", ― говорит Мёрдок.

Многие считают, что называть комплект программ GNU и ядра Linux "вариантом" GNU ― потакать алчной политике, но Мёрдок уже открыто симпатизирует проекту GNU. Он говорит, что просьба Столлмана справедлива. "Это больше желание сохранить единство, чем отдать почести".

После этого начался поток просьб технического характера. Мёрдок, полностью соглашаясь с GNU в политике, жёстко возражает Столлману в проектировании и разработке программ. Солидарность тонет в разногласиях.

"Признаться, мы с ним постоянно спорили, ― смеётся Мёрдок, ― работать с Ричардом бывает трудно". Так, они принципиально не согласны друг с другом касательно отладки. Столлман хочет включить отладочную информацию во все программы, чтобы пользователям легче было находить ошибки. Мёрдок считает, что это сделает программы большими и медленными. Уступать не хочет никто.

В 1996 году Мёрдок заканчивает университет и передаёт правление растущим проектом Debian в руки Брюса Перенса ― хакера, который создал программу Electric Fence для Unix. Перенс, как и Мёрдок, влюбился в GNU/Linux, как только попробовал его. Как и Мёрдок, он симпатизирует проекту GNU, хотя и не так сильно.

"После того, как Столлман выпускает *Манифест GNU*, создаёт GNU Emacs и GCC, я вдруг читаю статью, где говорится, что он работает консультантом в Intel, ― вспоминает Перенс первый контакт со Столлманом в конце 80-х годов, ― я пишу ему, мол, как ты можешь бороться за свободу ПО и работать при этом в Intel? Он отвечает мне только: 'Я консультирую их насчёт свободного ПО'. Исчерпывающий и вежливый ответ".

Перенс ― выдающийся разработчик, и его тревожат баталии Мёрдока и Столлмана о программировании. Став лидером проекта, он решает дистанцировать Debian от фонда свободного ПО. "Я думаю, нам ни к чему микроменеджмент Ричарда".

Столлман озадачен и огорчён этим, но теперь он воспринимает это с мудрой сдержанностью. Выждав время, чтобы все остыли, Ричард пишет Перенсу, что не стоит рвать отношения, и что просит лишь называть систему GNU/Linux, больше ничего. "Я решил, что это хорошо, и согласился, ― говорит Перенс, ― все вздохнули с облегчением".

Идут годы, и Debian получает репутацию хакерской версии GNU/Linux, подобной Slackware. Но в Slackware есть несвободные программы, и Debian после отхода от GNU тоже включает в коллекции программ собственнический софт. Хотя он явно помечен как nonfree или несвободный, и вынесен в отдельную секцию, предлагать такие программы ― всё равно, что одобрять их. Проект GNU больше не может рекомендовать Debian и Slackware людям.

Но вне хакерских сообществ это всё мало кому интересно. GNU/Linux захватывает рынок, который когда-то занимал Unix. В Северной Каролине появляется компания Red Hat и начинает строить бизнес исключительно на основе GNU/Linux. Исполнительный директор Red Hat ― Роберт Янг, именно он в интервью *Linux Journal* спросил Торвальдса, не жалеет ли тот о переводе ядра под GPL. Уверенный ответ Линуса впечатлил Янга настолько, что он пересмотрел свои представления о Линуксе. Янг задумался, нельзя ли создать компанию на основе того же, что делает Debian ― поставки свободного ПО. Ведь в 1990 году Майкл Тиманн и Джон Гилмор создали компанию Cygnus Solutions, которая зарабатывает на поддержке свободных программ. Может, у Red Hat тоже получится заработать на поддержке GNU/Linux?

"Западная научная традиция гласит, что мы стоим на плечах гигантов, ― говорит Янг, повторяя слова Торвальдса и Ньютона, ― бизнес тоже говорит, что не нужно изобретать колесо, чтобы двигаться вперёд. Прелесть GPL в том, что вы помещаете код в общественное достояние. Допустим, вы независимый производитель софта, и вам для своего приложения нужна программа дозвона. Зачем создавать её заново? Просто используйте программу PPP из Red Hat Linux. Нужна графическая библиотека? Берите GTK. Так вы получаете уже готовые компоненты, причём самые качественные компоненты на рынке. И вы больше не тратите силы и деньги на воссоздание инструментов с нуля. Вы сразу решаете задачи клиентов". Впрочем, Янг тоже не прочь включить собственнические программы в систему.

Янг ― не единственный, кого волнуют деловой потенциал свободного ПО. Осенью 1996 года компании вовсю принюхиваются к аппетитным запахам с кухни открытого программного кода. Процессор Intel 386, глобальная сеть и веб-сайты накатили на рынок огромными волнами, но всего через год или два накатит настоящее цунами в виде GNU/Linux. Её приближение некоторые чувствуют уже сейчас.

Для Мёрдока это цунами видится и наградой, и наказанием Столлману ― человеку, который столько лет своей жизни вложил в движение за свободное ПО. Как и многие пользователи Linux, Мёрдок помнит, с чего всё начиналось. Как Торвальдс говорил, что изначально Linux был "просто игрушкой", и как признавался Таненбауму, что если бы тогда появилось ядро GNU, то он быстро забросил бы Linux. Мёрдок видит, как много возможностей упущено. И как ещё больше возможностей находят люди из глубин интернета.

"Работать над Linux в первые годы было весело, ― вспоминает Мёрдок, ― с другой стороны, с ним работали, чтобы только переждать, пока не появится ядро Hurd ― это видно, если почитать обсуждения в группе comp.os.minix. Если бы Hurd появился быстрее, о Linux бы все забыли".

Но вот кончился 1996 год, и любые "если бы" потеряли смысл. Окно размером в 36 месяцев захлопнулось, и теперь даже если появится ядро Hurd, оно останется в тени Linux. Шансы, что его заметит кто-то кроме гиков, очень малы. Linux как будто бы выполнил задачу проекта GNU, заняв последний пробел свободной операционной системы. Только для большинства пользователей вся эта система ― Линукс. На их компьютерах стоят несвободные программы, и они не видят в этом ничего плохого.

И всё-таки мечта хакеров GNU сбылась ― полностью свободная система существует, как бы тернист ни был путь пользователя к ней.