«Один – даже если очень важный – не поднимет и простое пятивершковое бревно, тем более дом пятиэтажный.»
Владимир Маяковский
25 августа - особая дата в индустрии свободного ПО. Именно этот день считается датой рождения ОС Linux, обосновавшейся сегодня в миллионах устройств под личиной Android'а. Давайте вспомним, каким было рождение Linux'а в далеком 1991 году.
Предыстория, США
В начале 1970-х несколько головастых парней из AT&T Bell Labs (Б.Керниген, Д.Ритчи, К.Томпсон + команда), разработавших язык С, написали на C новую операционную систему для малых ЭВМ. Многозадачную и многопользовательскую. И увидели, что это хорошо, и назвали её Unix. Она была сетевой, что ускорило развитие Сети, а малые ЭВМ стали отлично продаваться. Unix имела всего 6 базовых системных вызовов. Процессы взаимодействовали между собой при помощи «каналов», а периферия ассоциировалась с файлами. Красота Unix пленяла многих.
Спустя некоторое время, некто Ричард Столлмен, занимаясь проблемами ИИ в MIT, обнаружил, что возможности Unix и языка LISP недостаточны для его задач. Требовалось модифицировать код. Но не тут-то было: всё поставлялась без исходников. Сейчас это обычный бизнес, но тогда закрытость раздражала учёных: они привыкли делиться достижениями; всё, что их волновало – это приоритет. И Столлмен, забросив исследования ИИ, начинает разрабатывать собственную Unix-подобную ОС GNU, которую он решил сделать свободной и поставляемой под лицензией GNU Public License (GPL). По замыслу Столлмена, следовало утвердить стандарт, который бы описывал команды Unix и её системные вызовы, инвариантные к коду. Столлмен назвал его POSIX'ом. В 1983 году Столлмен уходит из MIT и основывает Free Software Foundation (FSF), как правозащитную группу, а также как группу разработчиков ОС GNU. Работа кипела, группа росла, был написан новый свободный компилятор с языка С (gcc), множество Unix-совместимых утилит, годы шли, а ядро… А ядро не появлялось. Столлмен до сих пор сетует, что причина крылась в самой концепции: для увязки наработок c микроядром требовалась жёсткая синхронизация потоков.
Небольшое отступление
Тут надо пояснить, что такое микроядро. Грубо говоря, оставляем в ядре самое необходимое – получается махонькое ядрышко, а остальное выносим в совокупность модулей, подгружаемых по мере надобности и автоматически перезагружаемых при падениях. Микроядро содержит на пару порядков меньше команд, чем монолитное ядро, что делает возможной самопроверку для обнаружения искажений, в том числе и взлома. ОС получается и защищённой, и не загораживает собою железо, что для некоторых применений жизненно важно.
Плата за микроядерность – трудность отладки ОС. Во время тестировании сборок ОС GNU часто выяснялось, что запускаемые процессы не синхронизировались. Однако, думается, дело было не только и не столько в микроядерности, сколько в желании охватить все задачи, решаемые «генуинной» Unix с монолитным ядром, а также в отсутствии единоначалия. GNU с микроядром и по сей день не готова к употреблению.
Предыстория, Европа
Параллельно Столлмену на другом конце планеты профессор Амстердамского университета Эндръю Танненбаум разрабатывает однозадачную ОС Minix и выкладывает её микроядро, как иллюстацию к своей книге. Minix придерживалась подмножества стандарта POSIX. ОС была простой – 12000 строк кода – и не поддерживала виртуальную память. Но Minix работала на компьютерах IBM XT/AT!
После выхода книги Танненбаума вокруг телеконференции comp.os.minix собрались энтузиасты, предлагавшие улучшить Minix. Патчи далеко не всегда были совместимыми. Хитрый Танненбаум не выложил всю ОС. Хотя она и была дешёвой, но оставалась платной. Танненбаум планировал её развивать, развивает и сейчас, добравшись до Minix3. Замечательная идея – эмулировать Unix на x86, буксовала. Требовалось нечто иное.
«Мы пойдём другим путём»
Один из энтузиастов, студент Хельсинкского Университета, Линус Торвальдс, влюблённый в С и Unix, ознакомившись с архитектурой процессора 80386 купленного им в кредит компьютера, решил попробовать написать собственные утилиты Unix, используя Minix, как рабочую лошадку. Что им двигало?
1. Линусу явно понравились идеи Столлмена, посетившего Хельсинки в начале 1991-го года.
2. В учебную программу входило пособие, основанное на книге Танненбаума.
3. Линус увидел то, чем не воспользовался Танненбаум: защищённый режим. Это переносило защиту ядра в аппаратную плоскость. (Впрочем, в ранних x86 защищённого режима не было, и упрекать профессора никак нельзя.)
4. Разработчики 80386 хорошо приспособили его для переключения задач.
5. Высшее образование в Финляндии было бесплатным, и учиться можно было сколь угодно долго.
6. Девушки не интересовали Линуса.
Старт!
Наконец, куплена Minix – 16 дискет. В апреле 1991-го года работа началась. Первым делом Линус переписал «под себя» столлменовский компилятор gcc, использовав все обнаруженные особенности 386-го. Затем взялся за эмулятор терминала Minix. На изучение аппаратного переключения задач ушёл месяц. После реализации переключения удалось переработать эмулятор в консоль Telnet. Правда, чтобы «кодить», Minix по-прежнему была необходима. Получаемые данные надо было где-то сохранять, и Линус добавляет драйвер диска. К счастью, файловая система Minix хорошо документирована, и Линус пишет свою с ней совместимую. Эмулятор обрастал наворотами, число системных вызовов перевалило за 30, появилась страничная адресация памяти, пока без диска. Количество перешло в качество: Линус понял, что программа превращается в подобие ОС. Возникло желание привести её к стандарту.
В начале июля 1991 года Линус обращается в телеконференцию comp.os.minix с просьбой помочь добыть описание POSIX. Не получилось. Тогда Линус начинает исследовать системные вызовы по документации Unix, стоявшей на университетском сервере. К концу июля 1991 года программа Линуса всё ещё называлась «эмулятором» и ей недоставало оболочки. Линус выбрал bash, потратив почти весь август на реализацию её базовых возможностей. Теперь «эмулятор», хотя всё ещё и компилировался в Minix'e, обрёл черты настоящей ОС. Про себя Линус называл её «Линукс».
Линус сознавал, как далеко его детищу до полномасштабной ОС, но горел желанием заявить о себе. Поэтому 25-го августа 1991 года он оповестил о своей разработке «миниксное» сообщество. Эта дата считается знаковой. 17-го сентября Линус, написав по своему разумению лицензию, оговаривавшую авторство, выкладывает исходники – всего 10000 строк – на университетский FTP-сервер, как версию 0.01.
Октябрь, ноябрь – версия растёт: 0.02, 0.03. Теперь Linux компилировался внутри себя, и каждый раз, когда требовалась Minix, Линус просто добавлял в Linux недостающий функционал. Так путём эволюции в середине декабре появилась версия 0.11, оторванная от «матки» Minix. В первых числах января 1992-го года вышла версия 0.12 со страничной подкачкой на диск (свопинг). Minix осталась позади.
Начало технического социализма
Linux'ом заинтересовались: разработчики предлагали деньги за право вносить изменения. Линус пересмотрел свой девиз «Linux не продаётся». GPL больше устраивала: полученный продукт разрешалось модифицировать и использовать в своих целях, но результат следовало выкладывать в исходниках для общего пользования. Так Линус, не теряя контроль над Linux'ом, получал в своё распоряжение армию бесплатных разработчиков. И он отказался от своей лицензии в пользу GPL.
Танненбаум негодовал. Как?! Юнец, воспользовавшись его телеконференцией и разработкой, посягнул на канон, согласно которому микроядро лучше монолита, а непереносимость нетерпима. Перепалка между Танненбаумом и Торвальдсом общеизвестна, вряд ли стОит на ней останавливаться.
GPL приносила свои плоды: в апреле 1992-го года украинец Орест Зборовский прикрутил к ядру оконную систему XWindow. Теперь Linux мог работать и с графикой. Воодушевлённый Линус поднял версию с 0.13 сразу до 0.95. Появилась телеконференция comp.os.linux, в которой участвовали тысячи человек. Линусу собрали деньги, чтобы он выплатил купленный в кредит компьютер. 5-го ноября 1993 года в Нидерландах состоялось первое публичное выступление Линуса перед разработчиками Unix. Работа Линуса получила от мэтров высокую оценку.
Паразитизм на социализме?
В середине 1994-го года после выхода версии 1.0 Linux'ом всерьёз заинтересовались корпорации. Их привлекала не бесплатность, а возможность получать исходники и модифицировать их. В августе Линус по приглашению от Novell и Digital посещает США и знакомится с архитектурой процессоров, отличных от 80386. В марте 1995-го выходит версия 1.2, содержащая 250 тысяч строк кода и Linux портируется на процессоры Digital и SPARC. Стал выходить Linux Jouгrnal тиражом 10 000 экземпляров. В 1994 году в США была организована Linux International, помогавшая распространению Linux'а. А Линус возвращается на родину, чтобы закончить образование.
ВНЕЗАПНО проблема: один американец зарегистрировал товарный знак «Linux» и претендовал на 5% доходов. Linux Journal и несколько других компаний решили вложить деньги в Linux International, чтобы добиться справедливости. В результате мирового соглашения право владения знаком перешло к Линусу.
В начале 1996-го года. Линус заканчивает учёбу в университете и получает приглашение на работу в США сразу от пяти компаний. Но он, не желая работать на какую-то конкретную Linux-компанию, выбирает нейтральную Transmeta. Женившись на своей подруге, Линус вместе с ней уезжает на ПМЖ в США . По прибытии в США его пытались переманить к себе и Apple, и IBM, и Sun. Линус устоял. В июне 1996-го было выпущено ядро 2.0.
Идея открытых исходников стала использоваться и как маркетинговое оружие. Так, проигравшая Майкрософту Netscape открыла свой браузер под названием Mozilla. Затем IBM открыла коды веб-сервера Apache. Apache прекрасно работал под Linux'ом и в отличие от аналогов мог поддерживать срезу несколько сайтов. Провайдеры предпочитали Linux Windows'у. В июле 1998-го года Infomix объявила о переносе своей СУБД под Linux, через пару недель об этом же объявила и Oracle.
Забить на политику!
В 2001 году или чуть раньше Линукс-сообществом был взят курс на многоядерность процессоров. В середине декабря 2003 года выходит ядро 2.6. Оно могло работать с 32-мя процессорами. Одновременно шло портирование Linux'a на процессоры RISC-архитектур, развивалась поддержка аппаратного ускорения карт nVidia, виртуализации гипервизора KVM. Вероятно, если бы Google не опиралась на Linux, она бы не стала той Google, которую мы знаем.
Параллельно многочисленные энтузиасты двигали Linux в сторону настольных компьютеров. Стали появляться бесплатные дистрибутивы ОС, основанные на ядре Linux'а, как наборы: ядро + утилиты GNU + установщик + оболочка + приложения + документация. В дистрибутивах и портированных машинных кодах было полно бесплатных, но закрытых модулей. Линус не возражал, понимая, что не ко всему можно подходить с мерками GPL.
В настоящее время рыночная доля всех электронных устройств, основанных на Linux'e, превышает 40%. Даже «Майкрософт», паникуя, заявила, что любит Linux. «Двадцать процентов Azure уже на Linux. Я хочу, чтобы это все узнали», — сообщил Сатья Наделла . Кроме того, «Майкрософт» принимает участие в совершенствовании ядра Linux. Для неё коды Linux'а – ценнейший питательный субстрат. Не оттого ли Windows'ы всё больше походят на линуксные дистрибутивы? Разработчики открытого софта – ресурс для работодателей. Компании просматривают списки благодарностей за вклад в разработку и приглашают потенциальных работников, не скупясь на подъёмные.
Что дальше?
Нынче руке Линуса принадлежит лишь один процент кода ядра. Но он остаётся самым авторитетным членом сообщества Linux. Сын коммуниста сумел создать огромную сеть людей, которым доверяет. Теперь ядро содержит более 60 миллионов строк и 40 тысяч файлов. Один человек не может это охватить. За использование товарного знака Линус, конечно, имеет солидный профит. Сколько? По-разному пишут. Вбейте в поисковик «Torvalds net worth» – узнаете. Хотя футболисты зарабатывают и больше.
А что же Столлмен? Он требует, чтобы Linux именовался GNU/Linux, и в отличие от Линуса не признаёт использования в дистрибутивах любого бесплатного софта, который не подпадает под GPL. Из-за чего стал почти маргиналом. Возможно, он был им изначально. Хотя Линус Торвальдс считает, что Столлмену следует поставить памятник за изобретение GPL.
Дальнейшую судьбу Linux'a мы не знаем. Но пока что Linux и открытые исходники – мощнейший инструмент социализации технарей-программистов.
С Днём рождения, Linux! Три байта лет – разве это не юбилей?