Содружество Emacs
АрхивСегодняшняя публикация - сокращенный перевод шестой главы книги Сэма Уильямса "Свободный - от слова "свобода". Крестовый поход Ричарда Столлмена за свободу софта".
Сегодняшняя публикация - сокращенный перевод шестой главы книги Сэма Уильямса «Свободный - от слова «свобода». Крестовый поход Ричарда Столлмена за свободу софта» (Sam Williams. Free as in Freedom. Richard Stallman’s Crusade for Free Software. - O’Reilly & Associates, Inc., 2002).
© Sam Williams, 2002; © O’Reilly & Associates, Inc., 2002. Оригинал доступен по адресу www.oreilly.com/openbook/freedom. © Марина Оборина, Максим Отставнов, 2002, перевод. Этот перевод также публикуется на сайте «Компьютерры». Оригинал и перевод разрешается использовать на условиях Лицензии на свободную документацию GNU (GNU FDL). Текст GNU FDL, содержащий условия и ограничения такого использования, а также тексты других свободных лицензий GNU доступны по адресу www.gnu.org/copyleft, его неофициальный (справочный) перевод - по адресу www.libertarium.ru/libertarium/tiapkina.
В семидесятых новаторские проекты и умнейшие ученые снискали Лаборатории искусственного интеллекта Массачусетского технологического института заслуженную славу в мире информатики, а внутренняя хакерская культура и анархические порядки привносили бунтарскую таинственность. «Это было похоже на райский сад, - говорит Столлмен. - Нам не приходило в голову, что можно не сотрудничать» 1.
Девятый этаж на Тех-сквер, 545 для многих был не просто рабочим местом. Для хакеров типа Столлмена он стал домом. «Дом» - особое слово в лексиконе Столлмена. Как ни обидно родителям, он отказывается признавать домом любое место до общежития, в котором он жил, учась в Гарварде.
Известно, что свое расставание с этим домом Столлмен вспоминает в трагикомических тонах, сожалея лишь, что его «выгнали». В ответ на мой вопрос о том, как это случилось, он ответил: «В Гарварде есть правило: если ты прослушаешь слишком много лекций, тебе говорят, что пора и честь знать».
Без места в общежитии и без желания возвращаться в Нью-Йорк Столлмен пошел по стопам многих других хакеров: поступив в МТИ обычным студентом, снял квартирку в близлежащем Кембридже, но скоро понял, что сама Лаб ИИ стала его домом.
В 1986 г. он так вспоминал о ней: «Каждый год или два я по той или иной причине оставался без жилья и проводил в Лаборатории несколько месяцев. В том, что кто-то оставался ночевать, не было ничего необычного: сидишь за монитором, пока хватает сил, и пишешь, поскольку не хочется останавливаться. А когда выбиваешься из сил, падаешь на ближайшую мягкую горизонтальную поверхность. Атмосфера была очень неформальной».
Неформальная атмосфера Лаборатории порой порождала проблемы. Одни смотрели на Лаб ИИ, как на общежитие, а другие - как на электронный притон. Ученый из МТИ Джозеф Вайценбаум резко критиковал «компьютерных оборванцев», как он называл хакеров, населявших компьютерные центры, подобные Лаб ИИ: «Их потрепанная одежда, немытые волосы и небритые лица свидетельствуют, что они забыли о своем теле и том мире, в котором находятся. Они живут… лишь компьютерами и для компьютеров» 2.
И через четверть века после публикации книги Столлмен вскипает, слыша это описание: «Вайценбаум хочет, чтобы люди были только специалистами, работающими за деньги и мечтающими при первой возможности покончить с работой и забыть о ней. То, что ему кажется нормой, я рассматриваю как трагедию».
Хакерская жизнь, однако, не обходилась без своих трагедий. Столлмен описывает перевоплощение из хакера по выходным в завсегдатая Лаб ИИ как серию болезненных неудач.
Первой из них было окончание Гарварда. Стремясь продолжить изучение физики, он поступил в МТИ. Выбор факультета был естественен: это давало шанс не только последовать по стопам великих - Уильяма Шокли (1936), Ричарда Фейнмана (1939) и Мюррея Гелл-Манна (1939) 3, - но и жить на пару миль ближе к Лаб ИИ с ее новой PDP-11. «Я все больше увлекался программированием, но надеялся, что смогу параллельно заниматься и физикой».
Нагружая себя научными занятиями днем и программированием в обители Лаб ИИ ночью, Столлмен стремился найти равновесие, а точкой опоры стала студия народных танцев - единственные его светские мероприятия. Но к концу первого года из-за травмы колена пришлось уйти из студии.
Социальный мир Столлмена, покинувшего общежитие и переставшего плясать, схлопнулся. Как космонавт, испытывающий последствия невесомости, он обнаружил, что его способность общаться с нехакерами атрофировалась. После шестнадцати недель в Лаб ИИ уверенность в себе, обретенная за четыре гарвардских года, исчезла.
«Я почувствовал, что лишился практически всей энергии. У меня ни на что не было сил, кроме самого интересного. <…> Я был очень несчастен».
Столлмен сконцентрировался исключительно на работе в Лаб ИИ. К октябрю 1975 г. он ушел из студентов. Хакерство, бывшее раньше развлечением, стало его призванием.
Оглядываясь назад, Столлмен полагает, что рано или поздно пение сирен хакерства все равно пересилило бы его интерес к другим занятиям. «В физике или математике я так и не нашел способа, которым я могу внести свой вклад, - вспоминает он о своих усилиях до повреждения колена. - Я был бы горд достижениями в любой из этих наук, но так и не нашел способа что-то сделать, не знал, с чего начать. В программировании я сразу увидел, как писать вещи, которые будут работать и будут полезны. Радость от этого знания пробудила желание делать это еще и еще».
Столлмен не первый приравнял хакерство к радости. Многие обитатели Лаб ИИ могли похвастаться неоконченным высшим образованием - большинство начинало с изучения математики или электроники, но приносило карьеру и амбиции в жертву нечаянной радости от решения еще нерешенных задач. Как св. Фома Аквинский (схоласт, известный тем, что, работая над теологическими трактатами, достигал мистического экстаза), хакеры от умственного сосредоточения и физического истощения впадали в трансцендентальное состояние. Хотя Столлмен, как и большинство, избегал наркотиков, он получал удовольствие от «прихода» в конце двадцатичасового сеанса работы.
Но самые приятные эмоции порождались чувством осуществившегося предназначения: Столлмен был прирожденным хакером. Детская привычка сидеть допоздна за книгами породила способность работать без сна много часов подряд. Нелюдимый с десятилетнего возраста, он мог спокойно работать в одиночестве. Как математику с врожденным даром логики, ему легко давались концептуальные барьеры.
«Он был необычен», - вспоминает Джеральд Сассмен, преподаватель МТИ и бывший сотрудник Лаб ИИ. Поняв, что Столлмен «чистый мыслитель и чистый дизайнер», Сассмен нанял его в 1975 г. ассистентом в исследовательский проект. Проект был сложным и включал в себя программу ИИ, анализировавшую электронные схемы. Он требовал не только совершенного владения языком LISP, но и понимания того, как человек подходит к решению таких задач.
Свободное время Столлмен посвящал своим любимым программам. В интересах хакеров было развитие инструментария, и одним из любимцев Столлмена стал TECO (от Text Editor and Corrector - текстовый редактор и корректор).
История работы над TECO неразрывно связана с будущим лидерством Столлмена в движении свободного программного обеспечения. Она также является значимой вехой в развитии компьютеров, так что без краткого описания этой истории не обойтись.
В пятидесятых-шестидесятых программирование было весьма отвлеченным занятием. Программист общался с машиной посредством перфокарт, на каждой из которых была представлена отдельная команда. Карты передавались администратору, вводившему их в машину и ждавшему, пока она выплюнет очередную колоду карт, в которой программист угадает вывод своей программы. Этот процесс, известный как пакетная обработка, был запутан, долог и чреват злоупотреблениями.
В 1962 г. ученые и хакеры из проекта MAC (предтечи Лаб ИИ) предприняли шаги для преодоления власти, сосредоточенной у операторов ранних компьютерных систем, диктовавших порядок, в котором будут выполняться задания. Разделение времени (первоначально именовавшееся «похищением времени») сделало возможным использование компьютера несколькими программами. Телетайпы и диалоговое общение с машиной позволяли обойтись без перфокарт: программист вводил команды и читал генерируемый машиной построчный вывод.
В 1970 г. телетайпы начали заменять дисплеями, дававшими возможность полноэкранного (в отличие от построчного) редактирования.
Одной из первых программ, реализовавших эту возможность, стал TECO, созданный в Лаб ИИ на базе старого построчного редактора, использовавшегося на PDP-6.
TECO был существенным шагом вперед, но и у него были свои недостатки. Программисту требовалось вводить последовательности команд, характеризующих каждую правку. Это было абстрактным процессом. В отличие от современных редакторов, обновляющих отображаемый текст с каждым нажатием клавиши, TECO нуждался в длинных строках инструкций, завершающихся последовательностью «конец команды». Со временем хакер выучивался вводить в таком режиме целый файл, но, как отмечал позднее сам Столлмен, этот процесс требовал «умственных навыков как для игры в шахматы вслепую».
Для облегчения процесса хакеры построили систему, разделяющую экран и отображающую одновременно «исходную» строку и результирующий текст, но переключение из режима в режим оставалось неудобным.
TECO был не единственным полноэкранным редактором. Посетив в 1976 г. Стэнфордский вычислительный центр, Столлмен обнаружил программу под названием E. Она содержала встроенную функцию, позволявшую пользователю обновлять дисплей с каждым нажатием клавиши. E был одним из первых рудиментарных безрежимных 4 редакторов. Это означало, что пользователь может манипулировать файлом, «перемещаясь» по отображаемому тексту, а не общаясь с фоновой редактирующей программой.
Впечатленный увиденным, Столлмен по возвращении в МТИ захотел подобным образом расширить и функциональность TECO. Он обнаружил функцию Control-R, добавленную Карлом Миккельсоном и названную по запускавшей ее двухклавишной комбинации. Она переключала TECO из обычного режима исполнения абстрактных команд в более интуитивный режим поклавишного редактирования. Столлмен модифицировал эту функцию, сделав возможным вызов «макросов» (командных строк TECO) с помощью других комбинаций клавиш. Однажды введя строку, пользователь, благодаря столлменову хаку, мог сохранить ее и вызывать при необходимости. Миккельсонов хак поднял TECO на уровень безрежимного редактора, а столлменов - превратил его в программируемый пользователем редактор. «Это было настоящим прорывом», - вспоминает Гай Стил, тогдашний хакер в Лаб ИИ.
По собственным воспоминаниям Столлмена, «макрохак» привел к взрыву дальнейших инноваций. «Всяк и каждый писал собственные наборы тех команд, которые он часто выполнял, - вспоминал позднее Столлмен. - Люди обменивались ими, улучшали их, делая более мощными и более общими. Коллекции определений постепенно превращались в своего рода программы».
Макроопределения оказались полезными для столь многих, что сам редактор стал чем-то вторичным по сравнению с манией, которую он породил. «Мы начали думать о TECO скорее как о языке программирования, чем о редакторе, - замечает Столлмен. - Люди начали получать от модификаций и от обмена ими особое удовольствие».
Через два года темпы инноваций привели к опасным побочным эффектам. Взрывной рост послужил убедительным свидетельством в пользу хакерского подхода к сотрудничеству, но он же привел и к «эффекту Вавилонской башни».
Хакеры разрабатывали систему для поощрения возможностей программистов обмениваться знаниями и улучшать работу друг друга. Макрофункциональность на втором году жизни начала изменять тенденцию: в своем стремлении использовать новые возможности пользователи изменяли свои версии TECO до состояния, когда коллеге-хакеру требовался час только для того, чтобы понять, какая команда что делает.
Стил взял на себя поиск решения. Он собрал четыре разных пакета макросов и начал составлять таблицу, описывающую наиболее полезные макрокоманды.
Для Стила, скромного хакера, нечасто общавшегося со Столлменом, это до сих пор живое воспоминание. Заглядывать через плечо соседа было нормальным для Лаборатории, и Столлмен, ответственный за поддержку TECO в Лаб ИИ, нашел работу Стила интересной и присоединился. «Как я часто повторяю, я сделал первые 0,001 процента работы, а Столлмен остальное», - смеется Стил.
Новое имя проекта, Emacs, было придумано Столлменом. Будучи сокращением от «editing macros» (редактирование макросов), оно знаменовало качественные изменения, произошедшие после «взрыва» макросов за два года до того, но также было призвано заткнуть дыру в программистском лексиконе - Столлмен заметил, что в ITS нет программ на букву E, так что программу можно было называть и одной буквой. И здесь тяга хакеров к эффективности оставила свой след.
Но стандартизация системы макрокоманд очевидным образом нарушала фундаментальную хакерскую догму поощрения децентрализации. Под угрозой разрушения оказалась и та самая гибкость, которая стала причиной взрыва инноваций.
«С одной стороны, мы пытались опять создать единый набор команд, с другой - стремились оставить его открытым, поскольку была важна дальнейшая программируемость», - вспоминает Стил.
Чтобы решить эту дилемму, Столлмен, Стил (и их коллеги Дэвид Мун и Дэн Вайнрайб) ограничили стандартизацию командами, управляющими отображением текста на экране. Остальная часть проекта была посвящена сохранению расширяемости программы в стиле детского «конструктора».
Теперь Столлмен столкнулся с другим противоречием: если пользователи будут вносить изменения, но не будут делиться ими, эффект Вавилонской башни просто проявится в других местах. Возвращаясь к хакерской доктрине свободного обмена информацией, Столлмен включил в исходный код положения, определяющие правила использования. Пользователи могли свободно изменять и распространять код при условии, что они вернут все изменения, которые сделали. Столлмен назвал это «Содружеством Emacs».
Так же, как TECO стал большим, чем просто редактором, Emacs стал большим, чем просто программа. Для Столлмена это было общественным договором. В ранней записке, документирующей проект, Столлмен выписал условия этого контракта. «Emacs, - писал он, - распространялся на основе дружеского обмена информацией, то есть все изменения должны были возвращаться мне, чтобы быть включенными в программу и распространяться дальше».
Договор приняли не все. Инновации продолжались целое десятилетие, что привело к появлению целого семейства похожих на Emacs программ с разной степенью взаимной совместимости. Как приверженец хакерской этики, Столлмен не видел причины препятствовать этим инновациям юридическими мерами. Однако сам факт того, что кто-то брал от сообщества код, изменял его и не возвращал, а переименовывал результат, свидетельствовал о прискорбном отсутствии чести.
Такое грубое поведение сочеталось с другими неприятными событиями в хакерском сообществе. Недобрым знаком для Столлмена стало в 1979 г. решение Брайана Рейда встроить «бомбу замедленного действия» в Scribe, что давало Unilogic возможность ограничивать доступ к программе не заплатившим пользователям. «Для него это было самой фашистской штукой, которую он видел в своей жизни», - вспоминает Рейд. Рейд говорит, что несмотря на свою славу как одного из создателей иерархии alt в Usenet, он чувствует необходимость загладить вину за тот поступок, по крайней мере перед Столлменом. «Он говорил, что программы должны быть свободны и попытки вымогать деньги за пользование программами - преступление против человечности» 5.
Со временем Emacs стал средством рекламы хакерской этики. Гибкость, встроенная в программу, не только поощряла, но и требовала сотрудничества. Пользователи, не поспевавшие за обновлением Emacs или не возвращавшие свои изменения Столлмену, рисковали выпасть из развития. А развитие было: за двадцать лет пользователи внесли в Emacs такую массу возможностей (включая управление электронными таблицами, калькуляцию, управление базами данных и просмотр WWW), что позднее в качестве символа разработки была принята переполненная кухонная мойка 6. «В этом и была идея. Количество того, что содержится внутри, и восхищает, и ужасает», - комментирует Столлмен.
Хэл Абельсон, работавший со Столлменом в семидесятых, будучи студентом МТИ, а позже помогавший ему в качестве соучредителя Фонда свободного программного обеспечения, говорит об Emacs как о «несомненно блестящей работе». Предоставив программистам возможность добавлять новые библиотеки и функции, не разрушая системы, Столлмен, по словам Абельсона, проложил путь для будущего массового сотрудничества в программных проектах: «Структура Emacs была достаточно жесткой для того, чтобы поддержать массу слабо связанных между собой разработчиков со всего мира, вносящих свой вклад. Я не знаю прецедентов таких проектов».
Гай Стил, работая сейчас в Sun Microsystems исследователем, вспоминает Столлмена прежде всего как «блестящего программиста, способного выдавать много относительно безошибочного кода». Не будучи близкими друзьями, они сотрудничали достаточно, чтоб первый составил себе четкое представление о стиле работы второго.
Стил вспоминает примечательный эпизод конца семидесятых, когда они вдвоем сели писать функцию «красивой печати». Эта функция форматировала код Emacs для большей читабельности и компактного представления. Функция очень заинтересовала Столлмена, и вскоре они со Стилом сели писать улучшенную версию.
«Мы сели за монитор с утра, - вспоминает тот. - Я печатал, а Столлмен смотрел. Его вполне устраивало, что писал я, особенно если учесть, что диктовал мне он».
Работы длилась десять часов. За все это время, вспоминает Стил, они не делали перерывов и ни на что не отвлекались. К концу сеанса им удалось уложить код «красивой печати» в сотню строк. «Мои руки не отрывались от клавиш, - вспоминает Стил, - но я чувствовал, что на экран выливаются наши общие мысли».
Длина сеанса была осознана Стилом, только когда он вышел на улицу и обнаружил, что уже темно. Работа со Столлменом заставила его забыть обо всем и сосредоточить все силы на решении задачи. Свои впечатления он вспоминает одновременно с радостью и опаской: «Моей первой мыслью было, что это исключительный, очень пронзительный опыт и что я ни в коем случае не хотел бы его повторения».
1 (обратно к тексту) - Josh McHugh, For the Love of Hacking // Forbes, August 10, 1998 (www.forbes.com/forbes/1998/0810/6203094a.html).
2 (обратно к тексту) - Joseph Weizenbaum, Computer Power and Human Reason: From Judgment to Calculation. - W. H. Freeman: 1976, p. 116.
3 (обратно к тексту) - Перечисленные выпускники Факультета естественных наук и ремесел Гарварда - лауреаты Нобелевской премии по физике. - Прим. пер.
4 (обратно к тексту) - В оригинале ошибка - WYSIWYG вместо modeless. - Прим. пер.
5 (обратно к тексту) - В интервью 1996 г. онлайновому журналу MEME Столлмен продолжал говорить о сделке, но не называл Рейда по имени: «Проблемой было то, что никто не одернул и не наказал студента за такой поступок, и другие почувствовали искушение последовать этому примеру» (MEME 2.04. memex.org/meme2-04.html).
6 (обратно к тексту) - Общеупотребительные программы называются утилитами (utilities); первичное значение этого слова - «посуда», «кухонная утварь», отсюда - «мойка». - Прим. перев.