Дорога в GNU
Ричард Столмен рассказывает об опыте, который подготовил его к борьбе за мир свободных программ.
Приблизительно в апреле 1983 года Столмен написал введение в Счастливый хакер — словарь компьютерного жаргона. В нем он говорит о своем опыте работы в Лаборатории искусственного интеллекта МТИ и войнах Лисп-машин. Он также приводит подробности истории развития Emacs. Нижеприведенный текст представляет обновленную версию конца 1983 года, вскоре после первоначального объявления GNU.
Содержание
- Лаборатория искусственного интеллекта
- Проявления философии в достижениях лаборатории
- Как зовут твой принтер?
- Лабораторию предали
- Объявлена война
- Куда мне теперь?
Народные танцы в машинном зале, четверг, 8 вечера.
Праздновали радость от программирования
на приятнейших в мире компьютерах.
Танцевало только пятеро, но время мы провели хорошо.
Впервые я соприкоснулся с компьютерами, когда брал почитать руководства по разным языкам у преподавателей в студенческом городке. Я писал программы на бумаге просто под впечатлением от идеи программирования. Мне приходилось напрягаться, чтобы подумать, что бы такое делать программам, потому что меня не могло снабдить целью ничто, кроме желания программировать. В разное время я написал программы сложения кубов чисел в таблице на нескольких языках ассемблера.
Первыми настоящими компьютерами, с которыми я встретился, были IBM 360 в Нью-Йоркском научном центре IBM, когда я был студентом училища. Там у меня быстро развился интерес к проектированию языков, операционным системам и текстовым редакторам. Нанятый на лето, чтобы написать скучную программу численного анализа на Фортране, я удивил своего начальника, закончив ее за пару недель, и провел остальное лето за написанием текстового редактора на APL.
Я также скоро выказал отсутствие должного почтения к авторитетам. Весь центр перестали допускать к компьютеру IBM в здании, и нам пришлось пользоваться медленными телефонными соединениями в Кембриджском научном центре. Однажды один из руководителей IBM пришел рассказать нам о работе, выполняемой различными научными центрами IBM, и закончил словами: “Конечно, все вы знаете, какая важная работа ведется здесь”. Я спросил его: “Если наша работа так важна, почему нам больше нельзя пользоваться компьютером в этом здании?” После собрания знакомые говорили мне, что хотели сказать что-нибудь в этом роде, но побоялись последствий! Почему? Со мной, конечно, ничего не случилось. Кажется, они приучились юлить перед авторитетом, даже когда им не грозят. Как мило для авторитета! Я решил этому конкретно не учиться.
Лаборатория искусственного интеллекта
Нью-Йоркский научный центр закрылся как раз вовремя, чтобы мне перейти оттуда в колледж. Я обнаружил, что Кембриджский научный центр во мне не заинтересован, что было для меня большой удачей, потому что это уберегло меня от незнания гораздо превосходнейших компьютеров, которые выпускала не IBM, особенно PDP-10 и PDP-11 компании Digital. Открыв теперь для себя тот факт, что не все компьютеры одинаково занимательны, я вынюхивал самые приятные из них и нашел их в Лаборатории искусственного интеллекта МТИ. Там куча народа, называвшего себя “хакерами”, создала свою собственную систему разделения времени, Несовместимую систему разделения времени, спроектированную специально для облегчения хакерства. Система и все ее утилиты (включая отладочную программу DDT, которая была также “оболочкой” под названием HACTRN) сопровождались прямо здесь. Я пришел в поисках документации на их систему (наивный!). Я ушел без документации, потому что ее не было, но вместо этого получил работу на лето. Меня нанял инженер-администратор Рассел Нофтскер“— как ни грустно, это был тот самый человек, который сыграл впоследствии главную роль в развале лаборатории. Работа стала постоянной и длится до сегодняшнего дня.
Когда я показал, что я компетентен, я получил все бразды правления целой операционной системы, возможность учиться и выполнять работу. Мало было лабораторий и не было компании, в которых мне дали бы такое. Хакеры смотрели на это так: “Можешь хорошо работать, ну и работай — какая разница, кто ты?”
В сравнении с Лабораторией искусственного интеллекта, я видел, как мало свободы и как много ненужных трудностей было у людей в других местах. В IBM и в Гарварде власть была распределена очень неравномерно. Несколько человек отдавали приказы, а остальные (если это был не я) подчинялись им. У профессоров были собственные терминалы, которые обычно простаивали, а остальные часто не могли работать, потому что общих терминалов было слишком мало. Люди спрашивали: “Тебе это разрешено?“ вместо того, чтобы спрашивать: “Ты знаешь, как это сделать? Это будет работать?” Они предпочитали, чтобы работу делал уполномоченный болван, чем неизвестный гений. Я перестал захаживать в гарвардскую компьютерную лабораторию, потому что в МТИ было гораздо лучше. (Я специализировался в физике; хакеру от природы не нужно было проходить особые курсы по компьютерам, поскольку занятие хакерством на сложных программах среди хороших хакеров обучает лучше.)
В Лаборатории искусственного интеллекта отношение было другое. У нас была традиция взлома двери любого профессора, который смел запереть терминал в своем кабинете. Когда они приходили, дверь была открыта, и они видели записку: “Пожалуйста, не заставляйте нас тратить время на то, чтобы открыть этот терминал”. Терминалы существуют, чтобы ими пользовались, а не чтобы они простаивали без толку. Мы распространяли это отношение на компьютерное время. PDP-10 выполняет 300 тысяч операций в секунду. Если никакой пользователь их не запрашивает, машина тратит их на то, чтобы считать, сколько времени ей было нечего делать. Лучше, если это время кто-нибудь использует на что-то конструктивное, чем если оно пропадет. Так что мы пускали “туристов” — пользователей-гостей — пока они не мешались. Мы поощряли их изучать систему, ожидая, что некоторые станут хакерами и присоединятся к нам. По меньшей мере два штатных сотрудника лаборатории и один профессор МТИ начинали именно так.
Я обнаружил, что компьютерные системы отражали эти различия в отношении между организациями. Например, большинство компьютерных систем спроектировано с функциями защиты, которые позволяют немногим диктовать всем остальным, что они могут, а чего не могут делать. У этих немногих есть власть, которую никто не может оспаривать. Мы, хакеры, называли это “фашизмом”, потому что такие компьютерные системы и организованы социально, как тоталитарные полицейские государства.
Чтобы не давать пользователям отключить защиту, вокруг системных программ нужно воздвигнуть крепость. Всякий возможный проход сквозь стены нужно охранять, или низложенные массы просочатся через него. Для компьютера оказывается невозможно различить проскальзывание сквозь стены от многих других видов деятельности, которую людям часто нужно вести, чтобы выполнять свою работу. Поскольку поддержание защиты важнее, чем выполнение работы, вся такая деятельность запрещена. В результате вы должны то и дело просить кого-нибудь из элиты сделать для вас что-нибудь, что вам не разрешено. Если вы или что-то в вас ему не нравится или если он ждет взятки, он может безо всяких усилий сделать вашу работу вдвое труднее, чем она должна быть.
Само собой, только элите разрешено изменять или устанавливать любые системные программы, если только подчиненным не удастся провести “троянского коня“, чтобы отключить защиту (это ограничение реализуется “защитой файлов”). А в Лаборатории искусственного интеллекта, наоборот, если турист работал над системными программами, это значило, что он сделался полезен и стал хакером. У них меньше людей могло внести вклад в улучшение системы, а пользователи приучались к фаталистическому, обезнадеживающему отношению к недостаткам системы. Они приучались к рабскому взгляду на вещи.
В таких местах, как Digital Equipment, даже тем, чьей работой было улучшать систему, приходилось преодолевать столько бюрократии, что это уполовинивало их работоспособность и дух. Как сказал Роберт Таунсенд в “Верхах организации”, большинство институтов деморализуют своих работников и губят их потенциал, мешая им делать работу хорошо. Защита и права доступа — так это делается на компьютерной системе.
Большинство принимает такие режимы, потому что ожидает, что работа будет обременительной и не надеется получить от нее ничего, кроме денег. Но для хакеров хакерство было больше чем “просто” работой, это был образ жизни. Первые хакеры позаботились, чтобы у них не было таких проблем, исключив ограничения и защиту файлов из архитектуры системы. Пользователи нашей системы были свободными людьми, которых просили вести себя ответственно. Вместо элиты власти у нас была элита знания, составленная изо всех, у кого только был мотив учиться. Поскольку на нашей машине никто не мог господствовать над другими, лаборатория работала в режиме анархии. Очевидный успех этого обратил меня в анархизм [1]. Для большинства слово “анархия” значит “расточительный, деструктивный беспорядок”, но для такого анархиста, как я, оно означает добровольную организацию по мере необходимости с упором на цели, а не правила, и без принуждения к единообразию ради единообразия. Анархизм не означает дикий лес, где каждый поедает каждого. Американское общество уже представляет собой такой лес, и его законы утверждают его в таком состоянии. Мы желаем заменить эти законы, заботясь о конструктивном сотрудничестве.
Защита файлов в большинстве компьютерных систем означает, что большое внимание уделяется тому, как можно ограничить то, кто и что может делать с твоими файлами. Пользователей учат думать, что именно защита файлов не дает уничтожить их труд в любой момент. Мы, хакеры, которые спокойно жили много лет без защиты файлов и не ощущали, что нам чего-то не хватает, называли их отношение “паранойей”. Было крайне полезно, что все в системе было доступно; это означало, что ошибка не могла укрыться в файле, который тебе не позволено исправить.
Мы внесли такие взгляды и в структуру языка программирования. Рассмотрим движение “структурного программирования” с его платформой “запрета на GOTO”. Они говорили: “Все вы, программисты, кроме нас, немногих, [не]компетентны. Мы знаем, как вы должны программировать. Мы спроектируем языки, которые вынудят вас программировать именно так, а затем мы вынудим вас пользоваться ими”. Мы, хакеры, чувствовали, что более подходящим способом улучшения языков программирования было идентифицировать и предоставлять конструкции, которыми было проще пользоваться; помогать пользователю писать хорошие программы, а не сковывать его, если он, возможно, писал плохую. И мы предоставляли средства, чтобы пользователи могли создавать свои собственные конструкции, если им не нравилось то, что предоставили мы.
Проявления философии в достижениях лаборатории
Нравы Лаборатории искусственного интеллекта коренятся в моей самой известной работе — полноэкранном редакторе EMACS (в который также внес вклад Гай Стил и другие). Сегодня полноэкранные редакторы (программы-“текстовые процессоры”) — не редкость, они есть на каждом домашнем компьютере. В 1973 году дисплейные терминалы были дороже принтеров, и те, у кого были дисплейные терминалы, обычно пользовались ими так, как если это были печатающие терминалы (т.е. как “GLASS TTY”). У Лаборатории искусственного интеллекта были дисплеи, но еще не было экранного редактора.
EMACS отличается необычной для экранных редакторов мощностью и расширяемостью. В EMACS есть свое собственное средство программирования, которым я пользовался, чтобы сделать команды, которых нет в других редакторах и которые пользователи применяют, чтобы делать любые команды, которые им не дал я. Пользователи могут составлять библиотеки команд и делиться ими друг с другом, а когда у них выходит хорошо, библиотеки становятся частью стандартной системы EMACS, их просто включают в руководство пользователя.
Во многих других редакторах введены средства “макросов”. В EMACS есть язык программирования для составления команд редактора, полностью отдельный от обычного языка редактирования. Поскольку ему не нужно быть языком редактирования, он может быть гораздо лучшим языком программирования, хорошим для составления сложных программ. Второй ингредиент — отсутствие различий между программистом и пользователем. Почти все “встроенные” команды EMACS написаны точно так же, как пользовательские расширения. Каждый пользователь может заменять их или править их под себя.
Развитие EMACS следовало по пути, который иллюстрирует природу лаборатории. Когда я пришел в лабораторию, редактором был TECO, редактор для печатающего терминала с несколько большими средствами программирования, чем у других редакторов. Пользователь печатал командную строку из множества команд, а затем TECO выполнял ее. На дисплейном терминале TECO умел перепоказывать текст из файла после каждой командной строки. Естественным способом получить экранное редактирование было добавить его в TECO и приспособить к существующему механизму перепоказа.
Первоначально экранный редактор был просто одной из команд TECO. Его возможности были весьма ограничены, и если тебе нужно было что-нибудь этакое, например сохранить файл на диске или поискать строку, ты выходил из экранного редактора и пользовался какое-то время обычным TECO. Потом один пользователь предложил мне сделать пару команд экранного редактора, к которым пользователь мог прицепить сохраненную командную строку TECO, или “макрос”. Реализуя это, я обнаружил, что было бы так же просто дать пользователю заменять любые команды экранного редактора на сохраненную командную строку TECO.
Это породило взрыв. Все кому не лень составляли свою собственную коллекцию переопределенных команд экранного редактора, по команде на все, что ему обычно хотелось делать. Люди передавали их другим и улучшали их, делая их более мощными и более универсальными. Коллекции переопределений постепенно сами по себе становились системными программами. Их охват ширился, так что было все меньше и меньше причин когда-либо пользоваться TECO собственно для редактирования. Он стал просто языком программирования для написания редакторов. Мы начали мысленно относить его к языкам программирования, а не редакторам с программированием как дополнительной функцией, а это означало сопоставление его с другими языками программирования, а не с другими редакторами. Как результат возникла потребность во многих возможностях, бывших в других языках программирования. Я улучшал TECO в этом направлении, а другие хакеры пользовались новыми возможностями, чтобы улучшать свои редакторы, написанные на TECO.
После примерно двух лет такой дикой эволюции Гай Стил решил, что время написать один редактор, который бы сочетал лучшие идеи из всех остальных. Мы начали вместе, но он вскоре отошел к другим своим интересам. Я назвал редактор EMACS, сокращение от “редактирующие макросы”. Кроме того, я хотел, чтобы у названия редактора было однобуквенное сокращение, и “E” была одной из еще не занятых букв.
Итак, стандартный командный язык EMACS был результатом нескольких лет экспериментов множества пользователей-соразработчиков над своими собственными редакторами, что стало возможным только благодаря расширяемости и поощрению Лабораторией искусственного интеллекта пользователей к дополнению системы. В тот знаменательный день, когда я дал пользователям власть переопределять их собственные экранные редакторы, я не знал, что это приведет к новому сногсшибательному редактору. Я следовал эвристике Лаборатории искусственного интеллекта, что всегда хорошо давать пользователям больше власти. Затем отношение Лаборатории искусственного интеллекта поощряло пользователей применять эту власть и обмениваться получаемыми результатами.
Я работал над EMACS около пяти лет, передавая его всем бесплатно с условием, что они будут возвращать все расширения, которые сделают, чтобы помочь улучшать EMACS. Я называл это установление “коммуной EMACS”. Раз я делился, их обязанностью было делиться, работать друг с другом, а не друг против друга. Сейчас EMACS применяется на всех лучших факультетах информатики, а также во многих других местах. Ему также подражали около десяти раз. Как ни печально, во многих из этих подражаний нет настоящей сущности EMACS — расширяемости; это “эрзац-EMACS'ы”, которые только поверхностно подражают внешнему виду.
Сегодня пользователи EMACS почти никогда не редактируют в TECO, и большинство даже не знает TECO. Я даже забыл, как редактировать в TECO. Я так привык думать в терминах программирования на TECO, что в тех редких случаях, когда мне нужно было редактировать им, я запинался на минуту-другую. Все рефлексы пропали.
Я заметил, что одним из признаков того, что улучшение редактора ценно, является то, что после пользования им пару недель я забываю, как обходиться без него. Это доказывает, что для сохранения старой практики требовались большие усилия.
Я не думаю, что что-то подобное EMACS могло бы быть разработано коммерчески. Предприятия нацелены не на то. Первая аксиома мира коммерции в отношении пользователей — что они некомпетентны и что если у них будет хоть какой-то контроль над их системой, то они приведут ее в полный беспорядок. Первичная цель — не давать им ничего конкретного, на что можно пожаловаться, вместо того чтобы дать им средства помогать самим себе. Точно так же FDA скорее пошлет на смерть тысячи людей, не пуская препараты на рынок, чем одного человека, выпустив препарат по ошибке. Вторичная цель — дать руководителям власть над пользователями, потому что именно руководители, а не пользователи решают, какую систему купить. Если в редакторе предприятия есть любые средства расширения, они, вероятно, позволят вашему руководителю решать за вас и не давать вам вообще никакого контроля. По обеим этим причинам компания никогда не спроектировала бы редактор, с которым пользователи могли бы экспериментировать так, как это делали пользователи МТИ, и они не смогли бы опереться на результаты этих экспериментов, чтобы произвести EMACS. Кроме того, компании не хотелось бы давать вам исходный текст, а без него писать расширения гораздо труднее.
Как зовут твой принтер?
Когда я устанавливал новый шрифт для руководства по EMACS в системе лазерного принтера в лаборатории, я заметил, что в меню инициализации было место для изменения имени принтера, который появлялся на обложке каждого документа пользователя (эта функция была важна, когда у вас было больше одного принтера и нужно было знать, на котором из них производилась печать). У нашего принтера было игриво-бессмысленное имя “Tremont”. Как хакер я просто обязан был заменить это на что-то более занятное. Я выбрал имя “Kafka”, чтобы вызвать беспокойные ассоциации (вы слышали от человеке, проснувшимся однажды лазерным принтером?).
Несколько следующих дней другие хакеры обсуждали новое имя и предлагали дополнительные забавные имена (“Treemunch”, Thesiscrunch”, Cthulhu”...). Я пробовал каждое имя день-другой, собирая одновременно другие предложения. Почти для всех это было дико увлекательно. Единственным исключением был профессор, который сказал мне, что я не был уполномочен это делать и что я должен это прекратить. Я ответил, что знаю из первых рук, что люди получают от этого удовольствие, а следовательно, я обязан продолжать по крайней мере до тех пор, пока поступают предложения. В конце концов я сказал ему в жестких и официальных выражениях, что он не уполномочен говорить, что хакерство не санкционировано.
Бедняга не оставил этого так. Он сказал: “Если вы думаете, что переименовывать принтер так увлекательно, почему бы вам не переименовать машины PDP-10?” Это была поистине блестящая мысль, за которую я до сих пор благодарен. На другой день PDP-10 DM (дом Зорка) была переименована в “Донжонское моделирование” вместо “Динамического моделирования“; PDP-10 ML (применявшаяся для исследований в области математики и принятия медицинских решений) была названа “Медицинской ответственностью” вместо “Математической лаборатории”; PDP-10 MC стала “Максимумом путаницы” вместо “Консорциума MACSYMA”; а PDP-10 AI была названа “Анархистским интернационалом” вместо “Искусственного интеллекта”. Больше я жалоб не слышал.
Лабораторию предали
И сейчас есть учреждение под названием Лаборатория искусственного интеллекта МТИ, и я по-прежнему работаю там, но она уже не та. Она получила убийственный удар со стороны отпочковавшейся компании, и это изменило ее природу коренным образом и (я полагаю) навсегда.
Долгие годы только мы в Лаборатории искусственного интеллекта и немногих других лабораториях ценили по достоинству лучшее, что было в программах. Когда мы говорили о достоинствах Лиспа, другие программисты смеялись над нами, хотя ничего не понимали в том, о чем они говорили. Мы не обращали на них внимания и продолжали свою работу. Они говорили, что мы живем в сказочной башне.
Потом часть “реального мира” осознала, что мы все это время были правы насчет Лиспа. Появился колоссальный коммерческий интерес к Лиспу. Это было начало конца.
Лаборатория искусственного интеллекта только что разработала компьютер под названием Лисп-машина, персональный компьютер с большим виртуальным адресным пространством, так что он мог выполнять очень большие программы на Лиспе. Теперь люди хотели, чтобы эту машину поставили на поток и ее могли получить все остальные. Изобретатель Лисп-машины, архихакер Ричард Гринблетт, задумывал образовать необычную хакерскую компанию, которая росла бы медленно, но верно, без громкой рекламы, и была бы не такой прожорливой и беспощадной, как ваша стандартная американская корпорация. Его целью было дать хакерам и хакерству альтернативный способ поддержки, а миру — Лисп-машины и хорошие программы, а не просто максимизировать доходы. Это значило работу без привлечения основного капитала извне, поскольку вкладчики настаивали бы на общепринятых методах. Эта компания — Лисп-машины инкорпорейтед, обычно называемая ЛМИ.
Другие люди из проекта Лисп-машины считали, что это не получится, и указывали на отсутствие у Гринблетта делового опыта. В ответ Гринблетт привлек своего приятеля Нофтскера, ушедшего из лаборатории на производство несколько лет назад. Нофтскер считался опытным в предпринимательстве. Он быстро продемонстрировал верность этого впечатления самым предпринимательским ударом в спину: он и другие хакеры бросили Гринблетта и сформировали другую компанию. Они планировали собрать большое количество капиталовложений, расти как можно стремительнее, произвести большую вспышку, и черт с ними со всеми и со всем, что в ней утонет. Хотя хакерам досталась бы только небольшая часть барышей, которые получила бы эта компания, даже на этом они бы разбогатели! Им не пришлось бы даже работать больше, чем раньше. Им просто нужно было прекратить сотрудничать с другими так, как они привыкли.
Это привело к двум конкурирующим компаниям по производству Лисп-машин: Гринблеттовой ЛМИ и Нофтскеровой Symbolics (обычно называемой Слизью или Месивом в Лаборатории искусственного интеллекта). Все хакеры в Лаборатории искусственного интеллекта были связаны с той или другой, кроме меня, потому что даже ЛМИ предполагала нравственные компромиссы, на которые мне не хотелось идти. Например, Гринблетт против несвободных программ в операционной системе, но одобряет прикладные несвободные программы; я не хочу отказываться обмениваться ни теми, ни другими[2].
Symbolics перешла прямо к собиранию миллионов долларов капиталовложений и переманиванию всякого в МТИ, кого только было можно. Гринблетт предполагал, что люди будут работать по совместительству в ЛМИ и в Лаборатории искусственного интеллекта, чтобы по возможности смягчить удар по лаборатории. Компания Symbolics выдвинула обвинения в конфликте интересов, принуждая людей из ЛМИ тоже увольняться из МТИ. Внезапно я оказался последним хакером, а одного человека было недостаточно. Лаборатория погибала.
Я сильно подозреваю, что разрушение Лаборатории искусственного интеллекта было делом преднамеренным. Как только предприниматель находит золотое яйцо, он убивает курицу, чтобы гарантировать себе монополию.
Мне больно вспоминать эти дни. В лаборатории остались профессора, студенты и исследователи-нехакеры, которые не умели обслуживать ни систему, ни аппаратуру, да и не хотели уметь. Машины стали навсегда выходить из строя [3]; иногда их просто выбрасывали. Нужные изменения в программах нельзя было сделать. Нехакеры реагировали на это, обращаясь к коммерческим системам, принося с ними фашизм и лицензионные соглашения. Я стал слоняться по лаборатории, помещения, которые раньше по вечерам бывали заполнены, были теперь так пусты, что я думал: “Бедная моя Лаборатория искусственного интеллекта, ты погибаешь, а я не могу тебя спасти”. Все считали, что если обучать новых хакеров, Symbolics их переманит к себе, так что не стоило даже пробовать. Администрация лаборатории не прилагала никаких усилий, чтобы поддержать нас, а администрация МТИ была так же падка на наживу, как какая-нибудь коммерческая компания, и это еще больше деморализовывало.
В прошлом хакеры время от времени уходили, но те, кто оставался, обучали на их место новых. Теперь вся эта культура была сметена, новым людям было не с чего брать пример, не было энтузиазма, который привлекал бы сюда лучших из лучших. К примеру, хакеры имели обыкновение вместе поедать обед (обычно китайский) каждый день. Не было человека, который бы был каждый день, но можно было рассчитывать найти других, с которыми можно было бы поесть в обеденное время. Теперь эта практика развалилась, и когда уже нельзя было ожидать найти других, чтобы вместе поесть, люди не планировали появиться голодными в обычное время, тем самым усугубляя эффект.
Раньше у всей Лаборатории искусственного интеллекта был один общий телефонный номер и система внешней адресации (добавочный телефон был 6765, и мы отвечали: “6765” или “Фибоначчи двадцати”, потому что 6765 — это двадцатое число Фибоначчи). Можно было просто позвонить и найти всех и каждого. Теперь большинство людей и терминалов перешло на другие этажи, вне досягаемости 6765, а девятый этаж, изначальное сердце лаборатории, заполнялся машинами. Эта перемена еще больше снижала социальное единство лаборатории. Теперь я не могу даже позвонить и узнать, не хочет ли кто поесть, и со мной никто не может связаться по телефону.
Таким образом, я сразу потерял всю свою социальную сеть, возможность продолжать карьеру честным образом и большую часть из того, что я помогал строить. Я чувствовал себя последним из вымершего племени, обреченным проводить свою жизнь среди непонимающих чужаков. Шансов построить новую лабораторию с теми же качествами, что и у Лаборатории искусственного интеллекта, не было, раз уже существовавшая и здоровая некогда лаборатория не смогла пережить давления. Компьютерная промышленность не была расположена давать мне обмениваться с другими хакерами, как требует золотое правило. Я стал искать новую работу, которая не была бы связана с компьютерами, но не думал, что найду, и не видел будущего, кроме работы над программами вроде бухгалтерских, к которым никакой хакер (в том числе я) не чувствовал интереса. Эта жизнь была бы бессмысленна, но по крайней мере на мне не было бы позора отказа обмениваться с другими хакерами, раз моя работа не была им нужна. Я не уверен, что это было лучше, чем более прямая форма самоубийства.
Около года были ЛМИ, Symbolics и остаток Лаборатории искусственного интеллекта. Операционная система Лисп-машин у всех трех была общей. Время от времени хакеры Symbolics отвечали на отчет об ошибке: “В нынешней системе исправить это нельзя. Дождитесь нашей новой машины”. Делали это, чтобы новая машина больше походила на улучшение. Мне было дико забавно объявлять вскоре после этого, что эту ошибку я уже исправил.
Объявлена война
Но положение еще ухудшилось, потому что ЛМИ не прогорела, как во всеуслышание предрекала Symbolics. Она производила и продавала Лисп-машины — и продавала их куда дешевле, чем Symbolics, которой нужно было окупать колоссальные капиталовложения и уйму зарплат. Примерно через год Symbolics осознала, что ее неизбежный триумф, о котором так широко растрезвонили, не произойдет без насильственных мер. Вот их план: закончить трехсторонний обмен улучшениями программ. Поскольку ЛМИ была меньше, они ожидали, что ЛМИ не сможет за ними поспевать (Лаборатория искусственного интеллекта больше не считалась значительным соразработчиком).
Symbolics потребовала, чтобы Лаборатория искусственного интеллекта подчинилась новым условиям: пользоваться улучшениями, сделанными в Symbolics, но не делиться ими с ЛМИ [4]. Это требование было преподнесено, в стиле новояза, как выдающийся акт великодушия. На деле уже позволение МТИ пользоваться их улучшениями было еще одним тактическим ходом, задуманным, чтобы поставить лабораторию в безвыходное положение, когда институт вынужден отправлять им отчеты об ошибках и примеры, демонстрирующие ошибки, а также производить закупки только у них. В этом нет ничего необычного. Многие компании дарили МТИ компьютеры, которые они производили, ровно по этой причине. Но обычно они пытались заполучить сотрудничество МТИ великодушием, а не щелчками кнута.
Symbolics, несомненно, ожидала, что лаборатория немедленно поддастся давлению и полностью перейдет на их марку программ. Но я отказался капитулировать, отказался подписываться на то, чтобы помогать Symbolics против ЛМИ. ЛМИ была более достойна моей помощи. Поскольку мне не позволяли больше оставаться нейтральным, я стал драться против тех, кто вынуждал меня драться [5].
Вместо того чтобы пользоваться улучшениями из Symbolics, я делал сходные улучшения в последней общей системе. Большинство пользователей лаборатории продолжали применять систему МТИ; некоторые из-за неприязни к Symbolics, некоторые потому, что у них было больше свободы изменять ее. Последние полтора года я делал это, и система МТИ оставалась ничем не хуже, а в чем-то и лучшей. Поскольку ЛМИ будет получать все улучшения, которые я делаю, система у ЛМИ тоже ничем не хуже. Главным результатом отказа от обмена со стороны Symbolics была масса канители для пользователей из-за несовместимости между двумя системами.
Обычно я даю Symbolics спроектировать новую возможность, потом просматриваю их документацию и реализую что-нибудь по большей части совместимое. Я мог бы улучшать систему и не обращая на них внимания, но это была бы плохая стратегия. Они могли бы копировать мои улучшения один-в-один и тратить свое время на дополнительные улучшения. Или они могли бы игнорировать мою архитектуру и реализовать что-то сходное, но несовместимое, доставляя всем пользователям неприятности. Точно так же, как в велогонке гораздо легче висеть на хвосте у другого. Как человек, соревнующийся с большой командой, я нуждался в этом преимуществе. Я легко могу вырваться вперед, но это не будет эффективным применением моих сил.
Symbolics дает отпор, угрожая судами (хотя в суд они не подали) и пытаясь меня уволить. По слухам, они по нескольку раз на дню читают мою компьютерную почту, выискивая что-нибудь, чтобы обвинить меня; однажды их застукали за этим, и это вышло им боком (не в моих правилах останавливать их мерами безопасности, которые наказывают всех). Они думают, что плохо, когда кто-либо получает что-то за просто так; лучше это что-то выбросить, чем если их конкуренты получат от этого такую же выгоду, как и они. Именно такого рода раздробленность парализовала нашу страну.
Работая таким образом против Symbolics, я не только избегаю необходимости подчиниться их условиям — я также помогаю восстановить справедливость и наказать их по заслугам за разрушение старой Лаборатории искусственного интеллекта. Но ко мне никто не присоединился; сейчас каждый занимается своей темой.
Куда мне теперь?
Symbolics так и не достигла превосходства в программах, но их новая, более быстрая машина была готова раньше, чем новая, более быстрая машина ЛМИ. Так вот, они поставили множество этих машин в МТИ, и мои пользователи переходят на них. Пользоваться версией системы МТИ на этих машинах практически невозможно, потому что машины различаются слишком сильно.
Потеря пользователей затрудняет для меня проверку, что мои новые программы как следует работают. Но если повезет, я смогу продержаться достаточно долго, чтобы не дать Symbolics в конечном счете победить. ЛМИ только что приступила к поставкам. Скоро дела у них пойдут в гору, и они станут сами поддерживать развитие системы, а Symbolics останется со своей жилистой и агрессивной конкуренцией. Как только ЛМИ сможет обходиться без моей помощи, окончательное наказание Symbolics будет полностью устроено. Тогда я смогу перестать работать над Лисп-машинами. Я решил, что остановлюсь в этот день Благодарения.
И поскольку я устроил наказание злодеев, мне пора начать отстраивать то, что они разрушили.
В Лаборатории искусственного интеллекта это отстроить нельзя. МТИ старается лицензировать все полезное, что здесь делается, так что оставаться здесь и продолжать обмен — само по себе подвиг. Да и быть окруженным машинами Symbolics и полукомпетентными торгашами радости мало. Мне нужно начать жизнь с начала, и первый шаг — уйти от развалин прошлого. Вот я и собираюсь уволиться.
Это нельзя отстроить, работая над Лисп-машинами. МТИ заявляет, что владеет программами Лисп-машины, так что обмениваться ими можно только втайне (ЛМИ — исключение; у них есть контракт с МТИ). Такое подпольное сотрудничество лучше, чем ничего, но нового образа жизни из этого не выйдет. Для этого требуется открытое, публичное, широкое сотрудничество. Казалось более верным работать над системой Лисп-машины, чем дать Symbolics победить, не вмешиваясь, но нехорошо жить так дольше, чем необходимо. По этой же причине я не могу работать в ЛМИ, хотя они не прочь дать моей работе быть частично публичной. Я могу идти на компромиссы, когда воюю, но когда речь идет о построении чего-то доброго, такой компромисс бесполезен, поскольку все, что я бы ни построил, не смогло бы быть добрым.
Вместо этого я задумал смелый проект, поражающий в самое сердце того, как поддерживается коммерческий, враждебный образ жизни. Я собираюсь написать GNU, полную замену программной системы Unix (ядро, компиляторы, утилиты и документацию), чтобы раздавать ее каждому.
GNU упростит хакерам принятие решения о жизни в обмене и сотрудничестве. Пользование компьютером требует операционной системы. Так вот, раз свободную программную систему взять негде, отказаться от пользования программами, которыми кто-то владеет, представляет потрясающую жертву. Но как только желательная программная система станет свободно доступной, это давление будет снято навсегда. Хакеры будут вольны обмениваться.
Я приступаю в день Благодарения. Я прошу производителей компьютеров пожертвовать на это дело, но я собираюсь делать это, даже если мне придется работать официантом. Другие программисты, которым не хватает былого, уже поддерживают мое дело. Присоединяйтесь и помогайте! И возможно, старый дух Лаборатории искусственного интеллекта будет жить снова.
Доброго хакерства
Ричард Столмен
Счастливый хакер
Примечания
- Я полюбил анархические образ жизни и методы работы Лаборатории искусственного интеллекта, но это не значит, что я стал заправским анархистом. Я не призывал к упразднению государства со всеми его полезными функциями, а также возможностью принятия общественных решений демократическим путем. См. Почему нам нужно государство.
- Лаборатория искусственного интеллекта поддерживала нейтралитет между двумя компаниями; я присоединился к нему, меня это устраивало.
- PDP-10 Лаборатории искусственного интеллекта вышла из строя в феврале 1982 года и так и не была налажена.
- Symbolics выдвинула свой ультиматум 16 марта 1982 года, что совпало с днем моего рождения. Для меня это стало днем, когда Symbolics напала на Лабораторию искусственного интеллекта и ЛМИ с целью подчинить первую и уничтожить последнюю.
- Как ни парадоксально, открытый конфликт покончил с моим отчаянием, открыв мне нечто положительное, к чему я мог стремиться. Я больше не оставался в растерянности, не зная, куда идти. Борьба свалилась на меня, как снег на голову — агрессия, победа над которой стоила привлечения всех моих способностей.