В Linux, где ядро монолитно, каждый из пяти процессов пошлет системный вызов ядру. Ядро должно действовать очень осторожно, чтобы не перепутать вызовы, но при этом оно очень естественно готово к обслуживанию любого числа процессов, выполняя все, что им нужно. Поэтому Linux работает намного быстрее и эффективнее.
Плохо было и то, что с исходниками Minix – согласно лицензионному соглашению – почти ничего нельзя было делать. Вот, например, Брюс Эванс провел коренную переделку Minix, которая ее значительно улучшила. Однако нельзя было намертво встроить эти изменения в систему. Разрешалось только приделывать заплатки. Просто кошмар какой-то! По закону он не мог сделать загрузочный модуль, чтобы облегчить людям модернизацию. Поэтому для получения сколько-нибудь полезной системы модернизацию приходилось проводить в несколько этапов, что было крайне неудобно.
Единственный раз я принялся отвечать Эндрю Таненбауму в начале 1992 года. Представьте себе, что в одно вьюжное утро вы получаете такое нелицеприятное письмо:
From: ast@cs.vu.nl (Andy Tanenbaum)
То: Newsgroups: comp.os.minix
Subject: LINUX устарела
Date: 29 Jan 92 12:12:50 GMT
Я тут на пару недель уезжал в США, поэтому не писал особенно о LINUX (не то чтобы я стал писать, если бы и был здесь). Однако теперь хочу сделать несколько замечаний.
Как большинство из вас знает, для меня MINIX – хобби, которым я занимаюсь по вечерам, когда мне надоедает писать книжки, а по CNN не показывают никаких войн, революций или парламентских слушаний. Моя основная работа – преподавание и исследования в области операционных систем.
По роду своей деятельности, мне кажется, я знаю кое-что о будущем операционных систем в ближайшие лет десять. Здесь возникают две проблемы:
1. МИКРОЯДРО ИЛИ МОНОЛИТ
Раньше большинство операционных систем были монолитными, то есть вся операционная система представляла собой единый исполняемый файл «a.out», работающий в режиме ядра. В этот бинарник входит управление процессами, управление памятью, файловая система и все остальное. Примерами таких систем могут служить UNIX, MS-DOS, VMS, MVS, OS/360, MULTICS и многие другие. Альтернативой является система с микроядром, в которой большая часть операционной системы разбивается на отдельные процессы, находящиеся вне ядра. Они обмениваются между собой сообщениями. В задачи ядра входит управление передачей этих сообщений, обработка прерываний, управление процессами низкого уровня и, возможно, ввод-вывод. Примерами такой архитектуры служат RC4000, Amoeba, Chorus, Mach и еще не выпущенная Windows /NT. Я мог бы многое рассказать о сравнительных преимуществах этих двух подходов, но достаточно сказать, что среди специалистов по разработке операционных систем споры уже закончились. Микроядро победило. Minix – система с микроядром. Файловая система и управление памятью – это отдельные процессы, которые работают вне ядра. Ввод-вывод тоже выполняется отдельно. LINUX – монолитная система. Это большой шаг назад, в 70-е. годы.
2. ПЕРЕНОСИМОСТЬ
MINIX задумана как переносимая система и была перенесена с машин на базе Intel-процессоров на 680x0 (Atari, Amiga, Macintosh), SPARC и NS32016. LINUX тесно связана с 80x86. Тупиковый путь.
Поймите меня правильно. Я ничего не имею против LINUX. Она снимает с меня заботу о тех, кто хочет превратить MINIX в BSD UNIX. Но я с полной ответственностью заявляю, что те, кому нужна **СОВРЕМЕННАЯ** **бесплатная** ОС, должны искать переносимую ОС на базе микроядра, типа GNU или чего-то в этом роде.
Энди Таненбаум (ast@cs.vu.nl)
Я знал, что должен защитить свою честь, поэтому написал ответ.
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Subject: Re: LINUX устарела
Date: 29 Jan 92 23:14:26 GMT
Organization: University of Helsinki
На сообщение с таким заголовком нельзя не ответить. Прошу прощения у пользователей minix, которые уже досыта наслушались о linux. Я хотел бы просто *проигнорировать вызов*, но… Настало время серьезного спора!
В сообщении <12595@star.cs.vu.nl> ast@cs.vu.nl (Энди Таненбаум) пишет:
>Я тут на пару недель уезжал в США,поэтому не
>писал особенно о LINUX (не то чтобы я стал
>писать, если бы и был здесь). Однако теперь я
>хочу сделать несколько замечаний.
>Как большинство из вас знает, для меня MINIX —
>хобби, которым я занимаюсь по вечерам, когда мне
>надоедает писать книжки, а по CNN не показывают
>никаких войн, революций или парламентских
>слушаний. Моя основная работа – преподавание и
>исследования в области операционных систем.
Вы хотите этим оправдать ограниченность minix? Извините, но вы не правы. У меня оправданий гораздо больше, и все-таки linux побеждает minix почти по всем параметрам. Не говоря уж о том, что большая часть хороших кодов для minix, похоже, написана Брюсом Эвансом.
Re 1: Для вас minix хобби – но ведь minix приносит доход, a linux раздается бесплатно. Теперь по поводу хобби. Поместите minix в свободный доступ, и одна из моих главных претензий к ней отпадет. Linux для меня в большой степени хобби (серьезное хобби, самого высшего сорта). Я не беру за нее денег, и она даже не является частью моей учебной работы. Я сделал ее в свободное время на собственной машине.
Re 2: Вы работаете преподавателем и исследователем. Прекрасное объяснение для умственной неполноценности minix. Остается надеяться, что Amoeba не такая фигня, как minix.
>1. МИКРОЯДРО ИЛИ МОНОЛИТ
Да, linux – монолитная система, и я согласен, что микроядро лучше. Если бы у вашего сообщения не был такой спорный заголовок, я бы, вероятно, согласился с большинством ваших высказываний. С теоретической (и эстетической) точки зрения linux проигрывает. Если бы ядро GNU было готово прошлой весной, я бы и не взялся за свою разработку: беда в том, что оно не было готово тогда и не готово до сих пор. Linux выигрывает прежде всего потому, что она уже готова.
>MINIX – система с микроядром [пропущено, но без >потери смысла]. LINUX – монолитная система.
Если бы это было единственным критерием качества ядра, вы были бы правы. Однако вы не пишете о том, что микроядро в minix сделано плохо и возникают проблемы с многозадачностью (в ядре). Если бы я сделал ОС, у файловой системы которой были бы проблемы с многозадачностью, я бы не стал так поспешно осуждать других: наоборот, я бы из кожи вон лез, чтобы все забыли о моем провале. Да, я знаю, что для minix есть масса заплаток, обеспечивающих многопоточную работу, но это лишь заплатки, и Брюс Эванс говорит, что все равно остается множество проблем синхронизации.
>2. ПЕРЕНОСИМОСТЬ
«Переносимость нужна людям, которые не умеют писать новые программы» – это я только что придумал. В шутку.
На самом деле linux легче переносится, чем minix. Что? – слышу я ваш возглас. Это верно, но не в том смысле, какой имеет в виду ast: я сделал linux в максимальном соответствии со стандартами (хотя у меня перед глазами не было стандарта POSIX). Перенос программ в linux обычно гораздо проще, чем перенос их в minix. Я согласен, что переносимость – хорошее дело, но только если она имеет реальный смысл. Нет причин делать операционную систему полностью переносимой: достаточно, чтобы она была согласована с переносимым API. Основная идея операционной системы заключается в том, чтобы воспользоваться аппаратными возможностями, спрятав их под слоем обращений высокого уровня. Именно это и делает linux: она просто использует больше возможностей 386, чем другие ядра. В результате само ядро, конечно, становится не переносимым, но зато существенно упрощается архитектура. Вполне приемлемый компромисс, который и сделал возможным появление linux. Я согласен, что в linux машинная зависимость доведена до предела: я купил себе 386-й в январе прошлого года и занялся linux отчасти для того, чтобы его изучить. Многие вещи нужно было бы сделать более машинно-независимыми, если бы это был настоящий проект. Но я не особенно оправдываюсь: это было конструктивное решение, и когда в апреле прошлого года я начинал писать linux, то не думал, что программой захочет воспользоваться кто-то другой. К счастью, я ошибся, а поскольку мои исходники всем доступны, каждый может попробовать перенести ее, хотя это будет и непросто.
Линус
PS> Прошу прощения за слишком резкие высказывания: minix – неплохая система, если нет ничего другого. Amoeba, может быть, неплоха, если у вас валяется 5—10 лишних 386-х, но у меня их нет. Обычно я не вступаю в перепалки, но linux – мое больное место:)
В этой переписке (одной из немногих виртуальных ссор, в которых я участвовал) было еще несколько обменов репликами. Однако основную идею вы уже уловили: у системы с самого начала были противники. (А может быть, основная идея в другом: будьте осторожны, выступая на электронном форуме. Все ваши опечатки и ошибки останутся с вами навсегда.)
Оставив родных и друзей на стоянке, мы с Линусом отправляемся в поход вдоль ручья. Наш лагерь расположился в парке «Гровер-Хот-Спрингс» в восточной части Сьерра-Невады. Дело происходит в выходные по случаю Дня независимости (4 июля). Место настолько живописное, что кажется картинкой из географического журнала «National Geographic». "Это момент для «Кодака», – провозглашает Линус, окидывая взглядом заросший полевыми цветами луг и суровые скалы на заднем плане. Мы усаживаемся возле ручья, и я прошу его рассказать о том времени, когда чары Linux стали распространяться далеко за пределы исходного сообщества участников телеконференции, с некоторыми из которых Линус даже встречался.
«Вот было классно, наверное, – говорю я. – Столько лет ты сидел без всякой связи с внешним миром, с головой погрузившись в процессор. И вдруг люди из разных уголков планеты признают, что ты занимаешься важным делом. Ты становишься центром растущего сообщества, которое смотрит на тебя, как на…»
"Не помню, чтоб это для меня много значило, – отвечает Линус. – Вряд ли. Я все время об этом думал, но в основном потому, что постоянно возникали проблемы, требовавшие разрешения. Думал-то я много, но без особых эмоций. Мне нравилось, что множество людей подталкивают меня к продолжению работы. Я думал, что конец уже виден – момент, когда практически все будет готово. Но этот момент все не наступал, потому что мне подкидывали все новые стимулы и новые проблемы.
Поэтому работать было интересно. Иначе я бы, наверное, занялся чем-то другим, потому что мне нравилось работать именно так. А эмоций у меня больше вызывал мой нос или еще что-нибудь в этом роде".
Через несколько недель мы бродим по Стенфордскому торговому центру, где Линус выбирает себе кроссовки, поражаясь их разнообразию. «Сколько миль в неделю вы обычно пробегаете?» – спрашивает его продавец. Линус улыбается – за последние десять лет он не пробежал и мили. Физкультура не входила в сферу его приоритетов. Но в минуты слабости Линус признается, что хотел бы избавиться от лишнего веса.
«Это, наверное, Туве попросила тебя помочь мне сбавить вес», – шутит он, поглаживая свой животик.
«Передай ей, что на этой неделе я еще не получил от нее чека», – откликаюсь я.
Вскоре мы начинаем кружить по Стенфордскому городку в поисках места для стоянки. Примерно через полчаса нам удается втиснуть свой автомобиль. После небольшой разминки мы принимаемся бежать по грязным тропинкам вдоль высохшего озера в глубь леса к нашей цели – огромной спутниковой тарелке на холме. Нам так и не удается ее достичь. Я беру слишком высокий темп и с удивлением отмечаю, что километра полтора Линус умудряется бежать прямо за мной. После этого он теряет дыхание. Через несколько минут мы растягиваемся на траве возле озера.
«А как реагировала твоя семья на происходящее с Linux? – спрашиваю я. – Они, наверное, пришли в восторг».
«Вряд ли они что-то заметили, – отвечает он. – Я не хочу сказать, что никому не было дела. Просто я почти всю свою жизнь программировал, для них-то ничего не изменилось».
«Разве ты им ничего не сказал? Например, отец тебя куда-то везет, а ты ему и говоришь, как бы между прочим: помнишь, я все возился с этой компьютерной штукой? Так ей теперь пользуются сотни людей…»
«Нет, – отвечает он. – У меня просто не было потребности обсуждать это с родными и друзьями. Мне никогда не приходило в голову навязываться с этим. Помню, примерно в то время, когда я писал Linux, Ларе Вирцениус собрался купить XENIX – версию Unix, разработанную SCO. Он тогда пытался извиняться: „Пойми меня правильно“, но меня это не трогало. Он потом перешел на Linux, но для меня это не имело особого значения. Мне нравилось, что люди ей пользуются и присылают мне свои отзывы, но в то же время это было не так уж важно. Я не стремился пропагандировать ее. Я гордился, что люди используют мою программу, но не помню, чтобы мне хотелось об этом рассказывать. Мне не казалось, что это самое важное дело на свете. То, что программой пользовались сотни людей, не придавало ей особого веса в моих глазах. Я просто развлекался. У меня и сейчас такой же настрой».
«И тебе не хотелось рассказать об этом родным и друзьям? Тебя не волновало то, что происходит?» – спросил я, не скрывая недоверия.
Прежде чем ответить, он несколько секунд молчит.
«Не помню, чтоб я вообще тогда что-то чувствовал».
Линус покупает новую машину – двухместный «BMW-Z3» с откидывающимся верхом, который, по его словам, просто олицетворяет «развлечение». Он выбрал голубой металлик – идеальный цвет для игрушечных машин – потому что эта модель не бывает его любимого – ярко-желтого – цвета. Желтые «BMW», объясняет он, имеют цвет мочи. Годами он парковал свой «Понтиак» как можно ближе ко входу в штаб-квартиру Transmeta в деловом центре Санта-Клары. Но «BMW» стоит под окном его кабинета якобы для того, чтобы он был в тени. Теперь, сидя за компьютером, Линус может любоваться своим новым автомобилем.
Чуть больше года назад мы впервые поехали вместе через горы в Санта-Круз в белом «Мустанге» с откидывающимся верхом, который я специально для этого взял напрокат. Во время той поездки Линус просил останавливаться, чтобы он мог рассмотреть спортивные машины, которые стояли возле сауны и пивоварни. Теперь мы едем через перевал в его собственной спортивной машине. Он блаженно улыбается на поворотах.
«Ты этого заслуживаешь», – говорю я.
Я вытаскиваю из бардачка стопку дисков.
«Пинк Флойд»? – спрашиваю я. – «Ху? Джанис Джоплин?»
«Это музыка, на которой я вырос. В детстве я сам не покупал записей, но все это было у нас в квартире. Наверное, мама их слушала. Хотя, помню, ей очень нравился Элвис Костелло».
Дело происходит в пятницу, во второй половине дня. Все вокруг насыщено калифорнийским великолепием, ласкающим все органы чувств: кобальтовые небеса радуют глаз, теплые солнечные лучи – кожу, благоухание горных эвкалиптов, сладкий вкус чистого воздуха, убаюкивающий мотив «Пинк Флойд» через навороченные динамики. Вероятно, для обгонявших нас автомобилистов мы – разбрызгивая солнечных зайчиков и оглашая окрестности классическим роком – олицетворяем своего рода молодежный стандарт счастья. Однако мало кто обгоняет новый «BMW-Z3» Линуса.
Мы ставим свой автомобиль среди менее дорогих машин, стоящих вдоль шоссе номер 1, чуть севернее Санта-Круз, и спускаемся вниз на полупустынный пляж. Несколько минут мы блаженствуем, лежа на полотенцах под теплым солнцем, а потом я достаю из рюкзака диктофон. И снова прошу рассказать о тех временах. Линус рисует на песке прямоугольник, изображая свою комнату, отмечает расположение постели и компьютера.
«Я скатывался с постели и немедленно проверял свою почту, – говорит он, водя пальцем по своему чертежу. – В некоторые дни я вообще не выходил из квартиры. Получая почту, я прежде всего интересовался не тем, кто мне пишет, а тем, решена ли та или иная проблема. Я гадал: какие увлекательные вопросы возникли сегодня, решил ли кто-нибудь вчерашнюю проблему?»
Линус говорит, что его социальная жизнь в то время была «ничтожной». Потом, понимая, что это звучит чересчур жалобно, поправляется: «Ну, скажем, почти ничтожной».
«Не то чтобы я жил полным затворником, – рассказывает он, – но даже когда я уже работал над Linux, я оставался таким же антисоциальным, как всегда. Ты заметил, что я никогда не звоню людям по телефону? И так было всегда. Я никогда не звонил. Большинство моих друзей общительны, а я – нет. Можешь себе представить, каково ухаживать за девушкой, если ты никогда не звонишь ей по телефону. В то время у меня было всего несколько друзей, которые стучали мне в окно, если хотели зайти на чашку чая. Не думаю, что кто-то тогда замечал во мне что-то особенное. Мол, он делает нечто грандиозное и когда-нибудь перевернет мир. Мне кажется, так никто не думал».
В то время единственным общественным мероприятием для Линуса были еженедельные собрания «Спектрума», где он общался с другими студентами. Эти встречи гораздо больше волновали Линуса, чем все, связанное с программированием.
"Что меня тогда заботило? Общение с людьми. Может быть, «заботило» – не совсем верное слово: там упор был на эмоции. Я просто думал О девушках. Linux не имела такого большого значения. Ар некоторой степени это и сейчас так. Ар некоторой степени я по-прежнему могу ее игнорировать. В те первые годы учебы в университете для меня большое значение имела социальная жизнь. Не то чтобы я чувствовал себя горбуном, над которым все смеются. Просто мне хотелось иметь друзей и все такое. «Спектрум» нравился мне, в частности, тем, что позволял вести светскую жизнь без особых усилий. Один вечер в неделю я вращался в обществе, а все остальные вечера сидел за компьютером. Это гораздо больше затрагивало мои чувства, чем Linux. Из-за Linux я никогда по-настоящему не расстраивался, не терял сна. Как тогда, так и теперь, меня в основном волнуют не сами технологии, а социальные отношения вокруг них. Послание Эндрю Таненбаума огорчило меня в первую очередь не поднятыми в нем техническими вопросами. Если бы это был кто-то другой, я бы его просто проигнорировал. Беда была в том, что он отправил его в список рассылки и выставил меня… Меня волновало мое социальное положение среди этих людей, а он его подрывал. Что меня особенно увлекало в Linux – это обратная связь.
Она показывала, что Linux что-тo значит, что я вхожу в какую-то социальную группу. Причем в этой группе я был лидером. Вот что было для меня очень важно. Гораздо важнее, чем рассказывать маме с папой, чем я занят. Пользователи Linux меня волновали намного больше. Я создал социальную группу и заслужил уважение ее членов. Тогда я об этом так не думал, да и сейчас не думаю. Но это, наверное, было самым важным. Поэтому я так резко среагировал на письмо Эндрю Таненбаума".
Солнце начинает сползать в Тихий океан – время уходить с пляжа. На обратном пути Линус уговаривает меня вести машину (чтобы я почувствовал, как она слушается руля) и возвращаться в Кремниевую Долину длинным и извилистым путем, по шоссе номер 9.
Линус говорит, что спор с создателем Minix вскоре перешел в обмен личными посланиями – перепалка была слишком резкой, чтобы вести ее публично. Несколько месяцев было тихо. Потом Таненбаум прислал Линусу ссылку на пятистрочное объявление в журнале «Byte» о выпуске коммерческой версии Linux.
«В своем последнем сообщении Эндрю спрашивал, этого ли я хотел – чтобы кто-то продавал мой труд. Я ему ответил коротко: „Да“, и больше он мне не писал», – рассказывает Линус.
Примерно через год, когда Линус приехал в Нидерланды на свое первое публичное выступление, он отправился в университет, где преподавал Таненбаум, надеясь получить от него автограф на своем экземпляре книги «Проектирование и реализация операционных систем» – книги, которая перевернула его жизнь. Он ждал под дверью, но Таненбаум так и не появился. Профессор был в отъезде, и встреча не состоялась.
XI
Температура в номере гостиницы была чуть выше нуля, и накануне своего первого выступления я лежал в постели, дрожа от холода. В Нидерландах, в отличие от Финляндии, не принято отапливать помещения, а в этой мерзкой комнате были еще и огромные сплошные окна, как будто жить в ней предполагалось только летом. Однако ночью 4 ноября 1993 года я не мог спать не только из-за холода. Я страшно волновался.
Публичные выступления мне всегда давались с трудом. В школе нас заставляли делать доклады по темам, которые мы изучали, – о крысах или еще о чем-нибудь, – и для меня это было совершенно непереносимо. Я стоял, не мог вымолвить ни слова и только хихикал. Хотя – поверьте мне – я вовсе не такой смешливый. Мне было трудно даже просто выйти к доске рассказать, как я решил задачу.
И вот теперь я оказался в Эде (Нидерланды), в часе езды на поезде от Амстердама, потому что меня пригласили выступить на десятой годовщине Нидерландской группы пользователей Unix. Я хотел сам себе доказать, что справлюсь. За год до этого меня пригласили выступить перед аналогичной организацией в Испании, но я отказался, потому что страх перед публичными выступлениями пересилил любовь к путешествиям. А в то время я очень любил путешествовать. (Я и сейчас люблю, но уже нет той остроты впечатлений, которая была у мальчика, практически не выезжавшего из Финляндии. Я бывал только в Швеции, куда мы несколько раз ездили с палатками на каникулы, и в Москве, где мы навещали папу, когда мне было шесть лет.)
Жалея, что упустил шанс поехать в Испанию, я решил принять следующее приглашение. Но теперь, лежа в постели, я уже сомневался, что смогу когда-нибудь преодолеть свой страх перед большой аудиторией, боялся, что не смогу открыть рта или – хуже того – начну хихикать перед 400 участниками собрания.
Мне было тошно.
Я говорил себе все, что обычно говорят в подобных случаях. Что аудитория желает мне успеха – ведь если бы они меня не любили, то просто не пришли бы. Что я хорошо знаком с темой: причины выбора тех или иных технических решений при создании ядра Linux, причины предоставления исходников в свободное пользование. Но я все равно сомневался, что доклад удастся, и мысли у меня в голове проносились со стуком и скрежетом, как бесконечный товарный состав. Я буквально дрожал и далеко не от одного только холода.
Как прошел доклад? Аудитория была дружелюбна к заметно трепещущему перед ней докладчику, вцепившемуся в свои PowerPoint-слайды как в спасательный круг (слава Microsoft!), а потом с запинкой отвечавшему на вопросы. На самом деле вопросы и ответы прошли лучше всего. Как бы то ни было, после доклада ко мне подошел Маршал Кирк Маккусик – один из главных разработчиков BSD Unix – и сказал, что с интересом выслушал мое выступление.
Я был так благодарен ему за этот жест, что готов был встать на колени и целовать его ноги. Для меня есть всего несколько авторитетов в компьютерной области, и Кирк – один из них. За то, что он был так мил после моего первого выступления.
Тот первый доклад стал для меня своего рода шоковой терапией. И следующие за ним тоже. Зато они постепенно помогли мне приобрести некоторую уверенность в себе.
Дэвид все спрашивает, изменилось ли мое положение в университете после того, как Linux получила известность? Я никогда не слышал, чтобы кто-то из преподавателей упоминал о ней или кто-то из студентов показывал меня своим друзьям. Ничего такого не было. Мое университетское окружение знало о Linux, но большинство линуксоидов жило за пределами Финляндии.
Осенью 1992-го меня назначили ассистентом в шведских классах факультета информатики. (Это произошло так. Им был нужен говорящий по-шведски преподаватель для базовых компьютерных курсов. В университете специализировались по информатике всего два шведа-старшекурсника: Ларе и Линус. Особого выбора не было.) Первое время я со страхом выходил к доске решать задачи, но вскоре увлекался и переставал волноваться. Кстати, спустя три года меня перевели в научные сотрудники – я стал получать деньги не за преподавание, а за исследования в компьютерной лаборатории, которые по существу сводились к разработке Linux. Этим было положено начало доброй традиции: мне стали платить за работу над Linux. Именно так в сущности обстоит дело и в Transmeta.
Дэвид: «Ну, и когда это стало важным?»
Я: «До сих пор не стало».
Хорошо, отвечу подробнее. Дело приняло новый оборот, когда я понял, что Linux не просто игрушечная операционная система – на нее всерьез стало полагаться множество людей. Вначале многие ставили себе Linux, просто чтобы поковыряться в ней, а вот когда ее стали использовать как настоящую операционную систему, я понял, что несу ответственность, если что-то случится. Или по крайней мере начал это понимать. (Я и сейчас чувствую такую ответственность.) За 1992 год Linux превратилась из увлекательной игры в важную составляющую жизни людей, стала источником их доходов, средством ведения коммерции.
Скачок произошел весной 1992-го – примерно через год после того, как я занялся программой эмуляции терминала, – когда под Linux заработала первая версия оконной системы X Window. Это значило, что операционка может поддерживать графический интерфейс пользователя и что пользователи могут работать в нескольких окнах одновременно благодаря проекту X Window, зародившемуся в Массачусетском технологическом институте. Это было существенное новшество. Помню, за год до его внедрения я шутил на эту тему с Ларсом: говорил, мол, когда-нибудь мы сможем запустить X Window, и все заработает. Я совершенно не ожидал, что это произойдет так быстро. Хакер по имени Орест Збровски сумел перенести X Window под Linux.
Система X Window работает с помощью Х-сервера, который берет на себя всю графику. Сервер общается с клиентами, чья задача говорить: «Мне нужно окно такой-то величины». Обмен информацией происходит на уровне сокетов, или, точнее, Unix Domain Sockets. Это способ обмена информацией внутри Unix, но он же используется и для передачи информации по Интернету. Орест написал первый уровень сокетов для Linux, просто чтобы перенести под нее X Window. Интерфейс Ореста был сметан на живую нитку и не интегрирован с остальным кодом. Это тот случай, когда я согласился на грубо сработанную заплатку, потому что она была нам нужна.
Я не сразу привык к тому, что у нас есть графический интерфейс пользователя. Думаю, около года я им вообще редко пользовался. А сейчас уке не могу без него: во время работы у меня всегда открыт миллион окон.
Орест не только дал возможность работать с окнами, но и вообще открыл дорогу в будущее. Domain Sockets использовались для организации локальной сети, которая позволяла работать системе X Window. Мы могли воспользоваться теми же самыми Domain Sockets, чтобы обеспечить Linux большой рывок во внешние сети – получить возможность связывать компьютеры. Без включения в сеть Linux была полезна только тем, кто сидел дома и выходил в большой мир по модему или вообще делал все локально. Поэтому мы с большим воодушевлением принялись разрабатывать сети для Linux поверх этих самых Domain Sockets, хотя они вовсе не были для этого предназначены.
Я был настолько уверен, что все получится, что даже сделал скачок в нумерации версий. В марте 1992 года я планировал выпустить версию 0.13. А вместо этого, получив графический интерфейс пользователя, уверился, что мы на 95 % достигли цели – выпуска полноценной, надежной операционной системы, пригодной к тому же для работы в сети. И поэтому выпустил версию 0.95.
Господи, как же это было преждевременно! Чтобы не сказать, глупо.
Работа в сети – поганое дело, и в итоге на ее организацию ушло почти два года – только тогда ее можно было выпустить в свет. Переходя в сеть, получаешь целый букет новых проблем. Во-первых, защита. Ты не знаешь, кто работает в сети и что он затеял. Нужно быть очень осторожным, чтобы никто не мог повесить твой компьютер, посылая тебе кучи хлама. Ты уже не можешь контролировать, кто вступает в контакт с твоей машиной. Причем у разных людей могут быть совершенно разные настройки. Используя стандартный сетевой протокол TCP/IP, трудно правильно установить все тайм-ауты. Казалось, процесс будет бесконечным. К концу 1993 года у нас уже была почти работоспособная сетевая система, хотя у некоторых возникали серьезные проблемы с ее использованием. Мы не умели работать с сетями, в которых адрес не укладывался в 8-битные границы.
Из-за своего чрезмерного оптимизма при выпуске версии 0.95 я оказался в ловушке. В течение тех двух лет, что ушли на разработку и выпуск версии 1.0, с номерами творилось что-то невообразимое. Между 95 и 100 не так много чисел, но мы продолжали постоянно выпускать новые версии – то ошибку поправишь, то функцию добавишь. Добравшись до 0.99, мы были вынуждены начать добавлять номера, чтобы указать на уровень заплат, а потом перешли на алфавит. В какой-то момент мы выпустили версию 0.99, уровень заплаток 15А. Потом появилась версия 0.99, уровень заплаток 15В и так далее. Так мы добрались до уровня заплаток 15Z. А вместо уровня 16 была выпущена версия 1.0 – в этот момент система наконец стала работоспособной. В марте 1994-го Linux 1.0 была с большой помпой представлена в аудитории факультета информатики Университета Хельсинки.
Этому предшествовал довольно беспорядочный период, но уже ничто не могло нанести урона популярности Linux. У нас была своя собственная телеконференция в Интернете – comp.os.linux, выросшая из пепла нашей с Эндрю Таненбаумом перепалки. И она привлекала орды участников. В те времена Internet Cabal (группа администраторов некоторых узлов Интернета) ежемесячно подводила неофициальную статистику: сколько человек участвует в каждой конференции. Данные были не очень точные, но они лучше всего говорили о популярности твоего сайта – в данном случае, сколько людей интересовалось Linux.