Free as in Freedom на русском: Глава 7. Дилемма абсолютной морали
Free as in Freedom на русском: Глава 1. Роковой принтер
Free as in Freedom на русском: Глава 2. 2001: Хакерская одиссея
Free as in Freedom на русском: Глава 3. Портрет хакера в юности
Free as in Freedom на русском: Глава 4. Развенчай бога
Free as in Freedom на русском: Глава 5. Ручеёк свободы
Free as in Freedom на русском: Глава 6. Коммуна Emacs
Дилемма абсолютной морали
В половину первого ночи 27 сентября 1983 года в Usenet-группе net.unix-wizards появилось необычное сообщение за подписью rms@mit-oz. Сообщение называлось коротко и крайне заманчиво: «Новая реализация UNIX». Но вместо некой готовой новой версии Unix читатель обнаруживал призыв:
В этот День Благодарения я начинаю писать новую, полностью совместимую с Unix операционную систему, которая будет называться GNU (GNU’s Not Unix). Я буду свободно раздавать её всем желающим. Мне очень нужны ваше время, деньги, код, оборудование – любая помощь.
В глазах опытного Unix-разработчика сообщение выглядело смесью идеализма с высоким самомнением. Автор не просто брался воссоздать с нуля целую операционную систему, весьма развитую и мощную, но ещё и улучшить её. Система GNU должна была вмещать в себя все нужные компоненты вроде текстового редактора, командной оболочки, компилятора, а также «ряд других вещей». Обещались и крайне привлекательные возможности, которых не было в существующих Unix-системах: графический интерфейс на языке программирования Lisp, устойчивая к сбоям файловая система, сетевые протоколы на основе сетевой архитектуры МТИ.
«GNU сможет запускать Unix-программы, но не будет идентичен системе Unix, – писал автор, – мы сделаем все нужные улучшения, которые назрели за годы работы в различных операционных системах».
Предвидя скептическую реакцию на своё сообщение, автор дополнил его кратким автобиографическим отступлением под заголовком: «Кто я такой?»:
Я Ричард Столлман, создатель оригинального редактора EMACS, один из клонов которого вы наверняка встречали. Работаю в Лаборатории ИИ Массачусетского технологического института. Имею большой опыт разработки компиляторов, редакторов, отладчиков, командных интерпретаторов, операционных систем ITS и Lisp Machine. Реализовал независимую от терминалов поддержку экрана в ITS, а также отказоустойчивую файловую систему и две оконные системы для Lisp-машин.
Так уж вышло, что затейливый проект Столлмана стартовал не в День Благодарения, как обещалось. Только в январе 1984 года Ричард с головой погрузился в разработку программного обеспечения в стиле Unix. С точки зрения системного архитектора ITS, это было всё равно что перейти от возведения мавританских дворцов к строительству пригородных торговых центров. Впрочем, разработка Unix-системы открывала и преимущества. ITS, при всей своей мощи, имела слабое место – работала лишь на компьютере PDP-10 от компании DEC. В начале 80-х годов Лаборатория отказалась от PDP-10, и ITS, которую хакеры сравнивали с оживлённым городом, превратилась в город-призрак. Unix же был изначально разработан с прицелом на переносимость с одной компьютерной архитектуры на другую, так что подобные беды ему не грозили. Разработанный младшими научными сотрудниками AT&T, Unix проскользнул мимо корпоративных радаров и нашёл спокойное пристанище в некоммерческом мире научных центров. Имея меньше ресурсов, чем их собратья-хакеры в МТИ, разработчики Unix приспособили свою систему к работе на зоопарке разносортного оборудования. Главным образом – на 16-битной PDP-11, которую хакеры Лаборатории считали непригодной для серьёзных задач, но также и на 32-битных мейнфреймах вроде VAX 11/780. К 1983 году такие компании, как Sun Microsystems, создали относительно компактные настольные компьютеры – «рабочие станции», сравнимые по мощности со старым мейнфреймом PDP-10. На этих рабочих станциях тоже поселился вездесущий Unix.
Переносимость Unix обеспечивалась дополнительным слоем абстракции между приложениями и оборудованием. Вместо того, чтобы писать программы в машинных кодах конкретного компьютера, как это делали хакеры Лаборатории, разрабатывая программы для ITS на PDP-10, разработчики Unix использовали высокоуровневый язык программирования С, который не был привязан к конкретной аппаратной платформе. При этом разработчики сосредоточили внимание на стандартизации интерфейсов, через которые части операционной системы взаимодействовали друг с другом. В итоге получилась система, где любую часть можно было переделать, не затрагивая все остальные части и не нарушая их работу. И чтобы перенести систему с одной аппаратной архитектуры на другую, тоже достаточно было переделать только одну часть системы, а не переписывать её всю целиком. Специалисты по достоинству оценили такой фантастический уровень гибкости и удобства, поэтому Unix быстро распространился по компьютерному миру.
Столлман решил создать систему GNU из-за кончины ITS, любимого детища хакеров Лаборатории ИИ. Смерть ITS была ударом для них, в том числе и для Ричарда. Если история с лазерным принтером Xerox открыла ему глаза на несправедливость собственнических лицензий, то кончина ITS подтолкнула его от неприятия закрытого софта к активному противодействию ему.
Причины гибели ITS, как и её код, уходили далеко в прошлое. К 1980 году большинство хакеров Лаборатории уже работали над Lisp-машиной и операционной системой для неё.
Lisp – элегантный язык программирования, прекрасно подходящий для работы с данными, структура которых заранее неизвестна. Его создал пионер исследований искусственного интеллекта и создатель самого термина «искусственный интеллект» Джон Маккарти, который работал в МТИ во второй половине 50-х годов. Название языка – сокращение от «LISt Processing» или «обработка списков». После того, как Маккарти ушёл из МТИ в Стэнфорд, хакеры Лаборатории несколько изменили Lisp, создав его местечковый диалект MACLISP, где первые 3 буквы обозначали проект MAC, благодаря которому, собственно, и появилась Лаборатория ИИ в МТИ. Под руководством системного архитектора Ричарда Гринблатта хакеры Лаборатории разработали Lisp-машину – специальный компьютер для выполнения программ на языке Lisp, а также операционную систему для этого компьютера – тоже, конечно, написанную на Lisp.
К началу 80-х годов конкурирующие группы хакеров основали две компании по производству и продаже Lisp-машин. Компания Гринблатта называлась Lisp Machines Incorporated или просто LMI. Он рассчитывал обойтись без внешних инвестиций и создать чисто «хакерскую компанию». Но большинство хакеров присоединились к Symbolics, обычному коммерческому стартапу. В 1982 году они уже полностью покинули МТИ.
Тех, кто остался, можно было по пальцам одной руки пересчитать, так что программы и машины чинились всё дольше и дольше, или не чинились вовсе. И что хуже всего, по словам Столлмана – в Лаборатории начались «демографические изменения». Хакеры, которые и раньше были в меньшинстве, почти исчезли, оставив Лабораторию в полное распоряжение преподавателей и студентов, чьё отношение к PDP-10 было откровенно неприязненным.
В 1982 году Лаборатория ИИ получила замену своему 12-летнему PDP-10 – DECSYSTEM 20. Приложения, написанные для PDP-10, работали на новом компьютере без проблем, потому что DECSYSTEM 20 был, по сути, обновлённым PDP-10, но вот прежняя операционная система совсем не подходила – ITS нужно было портировать на новый компьютер, а значит – почти полностью переписать. И это в то время, когда из Лаборатории ушли почти все хакеры, которые могли бы этим заняться. Так что на новом компьютере быстро воцарилась коммерческая операционная система Twenex. Немногие хакеры, что остались в МТИ, могли только смириться с этим.
«Без хакеров, которые потянули бы создание и сопровождение операционной системы, мы обречены, – говорили сотрудники факультета и студенты, – нам нужна коммерческая система, которую поддерживает какая-нибудь компания, чтобы она сама решала проблемы с этой системой». Столлман вспоминает, что этот аргумент оказался жестокой ошибкой, но в тот момент он звучал убедительно.
Поначалу хакеры видели в Twenex очередное воплощение авторитарной корпократии, которое так и хотелось сломать. Даже в названии отразилась неприязнь хакеров – вообще-то, система называлась TOPS-20, указывая на преемственность с TOPS-10, тоже коммерческой системой DEC для PDP-10. Но архитектурно TOPS-20 не имела ничего общего с TOPS-10. Её сделали на основе системы Tenex, которую компания Bolt, Beranek and Newman разработала для PDP-10. . Называть систему «Twenex» начал Столлман, просто чтобы не называть её TOPS-20. «Системе было далеко до топовых решений, так что называть её официальным именем язык не поворачивался, – вспоминает Столлман, – поэтому я вставил в ‘Tenex’ букву ‘w’, чтобы получилось ‘Twenex’». (Это название обыгрывает слово «twenty», т.е. «двадцать»)
Компьютер, на котором работал Twenex/TOPS-20, иронично называли «Оз». Дело в том, что DECSYSTEM 20 требовал маленькую машину PDP-11 для работы терминала. Один хакер, впервые увидев подключение PDP-11 к этому компьютеру, сравнил это с пафосным представлением Волшебника из страны Оз. «Я великий и ужасный Оз! – продекламировал он. – Только не смотрите на мелюзгу, от которой я работаю».
А вот в операционной системе нового компьютера не было уже ничего смешного. Безопасность и контроль доступа были встроены в Twenex на базовом уровне, и её утилиты с приложениями тоже были разработаны с учётом безопасности. Снисходительные шутки над системами безопасности Лаборатории превратились в серьёзную битву за управление компьютером. Администраторы утверждали, что без систем безопасности Twenex будет нестабильна и неустойчива к ошибкам. Хакеры уверяли, что стабильности и надёжности куда быстрее можно достигнуть редактированием исходного кода системы. Но их в Лаборатории было уже так мало, что к ним никто не прислушивался.
Хакеры подумали, что обойти ограничения безопасности можно, выдав всем пользователям «рулевые привилегии» – повышенные права, дающие возможность делать многое из того, что обычному пользователю запрещено. Но в этом случае любой пользователь мог отобрать «рулевые привилегии» у любого другого пользователя, и тот не мог вернуть их себе за неимением прав доступа. Поэтому хакеры решили получить контроль над системой, отобрав «рулевые привилегии» у всех, кроме себя.
Подбор паролей и запуск отладчика во время загрузки системы ничего не дали. Потерпев неудачу в «государственном перевороте», Столлман разослал сообщение всем работникам Лаборатории.
«До сих пор аристократы были повержены, – писал он, – но теперь они взяли верх, и попытка захватить власть не увенчалась успехом». Ричард подписал сообщение: «Radio Free OZ», чтобы никто не догадался, что это он. Отличная маскировка, если учесть, что все в Лаборатории знали об отношении Столлмана к системам безопасности и его издевательствах над паролями. Впрочем, отвращение Ричарда к паролям было известно далеко за пределами МТИ. На компьютеры Лаборатории под учётной записью Столлмана ходил чуть ли не весь ARPAnet – прообраз интернета тех времён. Таким «туристом» был, например, Дон Хопкинс, программист из Калифорнии, который через хакерское сарафанное радио узнал, что войти в прославленную систему ITS в МТИ можно просто введя 3 буквы инициалов Столлмана в качестве логина и пароля.
«Я бесконечно благодарен МТИ за то, что я и многие другие люди могли свободно пользоваться их компьютерами, – говорит Хопкинс, – это очень много значило для всех нас».
Эта «туристическая» политика длилась много лет, пока жила система ITS, и руководство МТИ смотрело на неё снисходительно. . Но когда машина Оз стала основным мостом из Лаборатории в ARPAnet, всё изменилось. Столлман всё так же предоставлял доступ к своему аккаунту под известными логином и паролем, но администраторы потребовали от него изменить пароль и никому его больше не давать. Ричард, ссылаясь на свою этику, вообще отказался работать на машине Оз..
«Когда пароли начали появляться на компьютерах Лаборатории ИИ, я решил следовать своему убеждению, что паролей быть не должно, – говорил позже Столлман, – а поскольку я считал, что компьютерам не нужны системы безопасности, я не должен был поддерживать эти меры по их внедрению».
Отказ Столлмана преклонить колени перед великой и ужасной машиной Оз показывал, что между хакерами и начальством Лаборатории росла напряжённость. Но напряжённость эта была лишь бледной тенью того конфликта, что бушевала в самом хакерском коллективе, который разделился на 2 лагеря: LMI (Lisp Machines Incorporated) и Symbolics.
Symbolics получила немало вложений извне, чем привлекла многих хакеров Лаборатории. Они работали над системой Lisp-машины и в МТИ, и за его пределами. К концу 1980 года компания наняла 14 сотрудников Лаборатории в качестве консультантов для разработки собственной версии Lisp-машины. Остальные хакеры, не считая Столлмана, работали на LMI. Ричард решил не занимать ничью сторону, и по привычке был сам по себе.
Первое время хакеры, нанятые Symbolics, продолжали работать и в МТИ, совершенствуя систему Lisp-машины. Они, как и хакеры от LMI, использовали для своего кода лицензию MIT. Она требовала возвращать изменения в МТИ, но не требовала от МТИ распространять эти изменения. Тем не менее, в течение 1981 года хакеры придерживались джентльменского соглашения, по которому все их улучшения вносились в Lisp-машину от МТИ и распространялись среди всех пользователей этих машин. Такое положение вещей ещё сохраняло какую-то стабильность хакерского коллектива.
Но 16 марта 1982 года – Столлман хорошо помнит этот день, потому что это был его день рождения – джентльменскому соглашению пришёл конец. Это произошло по воле руководства Symbolics, оно таким образом хотело придушить своего конкурента – компанию LMI, на которую работало намного меньше хакеров. Руководители Symbolics рассудили так: если у LMI в разы меньше сотрудников, то получается, что общая работа над Lisp-машиной выгодна именно ей, и если прекратить этот обмен наработками, то LMI будет уничтожена. С этой целью они решили злоупотребить буквой лицензии. Вместо того, чтобы вносить изменения в МТИ-версию системы, которой могла воспользоваться LMI, они начали поставлять в МТИ Symbolics-версию системы, которую они могли править как угодно. Выходило, что любое тестирование и редактирование кода Lisp-машины в МТИ шло только в пользу Symbolics.
Как человек, ответственный за сопровождение лабораторной Lisp-машины (первые несколько месяцев – при помощи Гринблатта), Столлман пришёл в ярость. Хакеры Symbolics предоставили код с сотнями изменений, которые вызывали ошибки. Расценив это как ультиматум, Столлман отключил линию связи Лаборатории с Symbolics, поклялся больше никогда не работать на машинах этой компании, и объявил о присоединении к работе над Lisp-машиной МТИ для поддержки LMI. «В моих глазах Лаборатория была нейтральной страной, как Бельгия во Вторую Мировую войну, – рассказывает Столлман, – и если Германия вторгается в Бельгию, та объявляет Германии войну и присоединяется к Британии и Франции».
Когда руководители Symbolics заметили, что их последние новшества всё так же появляются и на МТИ-версии Lisp-машины, они разозлились и стали обвинять хакеров Лаборатории в воровстве кода. Но Столлман нисколько не нарушал закона об авторском праве. Он изучил код, предоставленный Symbolics, и сделал логичные предположения о будущих исправлениях и усовершенствованиях, которые и стал реализовывать с нуля для Lisp-машины МТИ. Руководители Symbolics не верили этому. Они установили шпионскую программу на терминал Столлмана, которая записывала всё, что Ричард делал. Так они надеялись собрать улики воровства кода и показать их администрации МТИ, но даже к началу 1983 года показывать было почти нечего. Всё, что у них было, это какая-то дюжина мест, где код двух систем выглядел немного схоже.
Когда администраторы Лаборатории показали доказательства Symbolics Столлману, он опроверг их, сказав, что код был именно похожим, но не одинаковым. И обратил логику руководства Symbolics против него самого: если эти крупицы похожего кода – всё, что на него смогли накопать, то это лишь доказывает, что Столлман на самом деле не воровал код. Этого было достаточно, чтобы управляющие Лабораторией одобрили работу Столлмана, и он продолжал её до конца 1983 года. .
Но свой подход Столлман изменил. Чтобы максимально обезопасить себя и проект от претензий Symbolics, он совсем перестал смотреть в их исходные коды. Он стал писать код исключительно по документации. Самые большие новшества Ричард не ждал от Symbolics, а реализовывал сам, потом лишь добавлял интерфейсы для совместимости с реализацией Symbolics, опираясь на их документацию. Также он читал список изменений в коде Symbolics, чтобы понять, какие ошибки они исправляли, и исправлял эти ошибки самостоятельно, другими способами.
Происходящее укрепило решимость Столлмана. Создав аналоги новых функций Symbolics, он склонил сотрудников Лаборатории к МТИ-версии Lisp-машины, что обеспечило хороший уровень тестирования и поиска ошибок. А МТИ-версия была полностью открыта для LMI. «Я хотел наказать Symbolics любой ценой», – рассказывает Столлман. Это заявление говорит не только о том, что характер Ричарда далёк от пацифизма, но и о том, что конфликт вокруг Lisp-машины задел его за живое.
Отчаянную решимость Столлмана можно понять, если учесть, как происходящее выглядело для него – «разрушением» его «дома», то есть хакерского сообщества и культуры Лаборатории ИИ. Позднее Леви брал у Столлмана интервью по электронной почте, и Ричард там сравнивал себя с Иши – последним известным представителем индейской народности Яхи, которую истребили в индейских войнах 1860-1870-х годов. Эта аналогия придаёт излагаемым событиям эпический, почти мифологический размах. Хакеры, что работали на Symbolics, видели это в несколько другом свете: их компания не разрушала и не истребляла, а только делала то, что давно нужно было сделать. Переместив Lisp-машину в поле коммерции, Symbolics сменила подход к проектированию программ – вместо кройки их по твердолобым лекалам хакеров стали использоваться более мягкие и человечные нормы менеджеров. И Столлмана они расценивали не как противника-бойца на страже правого дела, а как носителя устаревшего мышления.
Масла в огонь подлили и личные раздоры. Ещё до появления Symbolics многие хакеры сторонились Столлмана, а теперь ситуация ухудшилась многократно. «Меня больше не звали в поездки до Чайна-тауна, – вспоминает Ричард, – Гринблатт дал начало обычаю: когда ты хочешь пообедать, ты обходишь коллег и зовёшь их с собой, или же шлёшь им сообщение. Где-то в 1980-1981 году меня перестали звать. Они не только не приглашали меня, но и, как признался мне потом один человек, давили на остальных, чтобы никто не говорил мне о планируемых поездах на обед».
>>> Подробности
()