Free as in Freedom на русском: Глава 7. Дилемма абсолютной морали

good-penguin.png

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 году меня перестали звать. Они не только не приглашали меня, но и, как признался мне потом один человек, давили на остальных, чтобы никто не говорил мне о планируемых поездах на обед».

>>> Подробности

©  Linux.org.ru