Подготовлено Крейгом Морхаусом
Copyright (C) 2002 Сэм Уильямс.
Свободны как в смысле свободы: крестовый поход Ричарда Столлмана за свободное программное обеспечение.
Сэм Уильямс
Доступно в Интернете по адресу: http://www.faifzilla.org/
Подготовлено в соответствии с Лицензией на свободную документацию
Table of Contents Глава 1 За неимением принтера Глава 2 2001: Одиссея хакера Глава 3 Портрет хакера в юности Глава 4 Объявить импичмент Богу Глава 5 Маленькая лужа свободы Глава 6 Коммуна Emacs Глава 7 Суровый моральный выбор Глава 8 Святой Игнуциус Глава 9 Стандартная общественная лицензия GNU Глава 10 GNU/Linux Глава 11 Открытый исходный код Глава 12 Краткое путешествие по хакерскому аду Глава 13 Продолжение борьбы Глава 14 Эпилог: Глава 15 Приложение А: Терминология Глава 16 Приложение B Хак, хакеры и хакинг Глава 17 Приложение C Лицензия GNU на свободную документацию (GFDL) Предисловие
Труд Ричарда М. Столлмана в буквальном смысле говорит сам за себя. Судя по документированному исходному коду, опубликованным статьям и записям выступлений, мало кто проявлял столь высокую готовность выставить напоказ свои мысли и свою работу.
Такая открытость — если позволить себе минутное нестоллмановское определение — освежает. В конце концов, мы живем в обществе, которое относится к информации, особенно к личной информации, как к ценному товару. Сразу возникает вопрос: почему кто-то захотел бы расстаться с таким объемом информации и при этом не требовать ничего взамен?
Как мы увидим в последующих главах, Столлман расстается со своими словами и трудами не альтруистически. Каждая программа, речь и записанный на пленку афоризм имеют свою цену, пусть и не ту, которую большинство людей привыкло платить.
Я поднимаю этот вопрос не в качестве предупреждения, а как признание. Для человека, который потратил последний год на раскопки фактов из личной истории Столлмана, идти против творческого наследия Столлмана более чем немного пугающе. «Никогда не затевайте драку с человеком, который покупает чернила бочками», — гласит старая мудрость Марка Твена. В случае со Столлман: никогда не пытайтесь создать исчерпывающую биографию человека, который доверяет каждую свою мысль публичным архивам.
Для читателей, которые решили доверить несколько часов своего времени изучению этой книги, я могу с уверенностью заявить, что здесь есть факты и цитаты, которых не найдешь ни в одной статье на Slashdot или в поисковой выдаче Google. Однако получение доступа к этим фактам сопряжено с определенной платой. В случае с печатной версией вы можете заплатить за эти факты традиционным способом, то есть купив книгу. В случае с электронными версиями вы можете заплатить за эти факты так, как принято в мире свободного программного обеспечения. Благодаря сотрудникам O'Reilly & Associates эта книга распространяется по Лицензии GNU на свободную документацию, что означает, что вы можете помочь улучшить эту работу или создать персональную версию и выпустить ее под той же лицензией.
Если вы читаете электронную версию и предпочитаете принять второй вариант оплаты, то есть если вы хотите улучшить или расширить эту книгу для будущих читателей, я приветствую ваш вклад. Начиная с июня 2002 года я буду публиковать базовую HTML-версию книги на веб-сайте http://www.faifzilla.org. Моя цель — регулярно обновлять ее и расширять историю «Свободны как в смысле свободы» по мере развития событий. Если вы выберете второй путь, пожалуйста, ознакомьтесь с Приложением C этой книги. В нем представлена копия ваших прав по Лицензии GNU на свободную документацию.
Для тех, кто просто планирует откинуться на спинку кресла и читать в сети или где-либо еще, я считаю ваше внимание столь же ценной формой оплаты. Однако не удивляйтесь, если вы тоже обнаружите, что ищете другие способы отблагодарить за ту добрую волю, которая сделала эту работу возможной.
Одно последнее примечание: это произведение журналистики, но это также и техническая документация. В процессе написания и редактирования этой книги редакторы и я взвесили комментарии и фактический вклад различных участников этой истории, включая самого Ричарда Столлмана. Мы понимаем, что в этой истории есть много технических деталей, которые могут выиграть от дополнительной или уточненной информации. Поскольку эта книга выпускается под лицензией GFDL, мы принимаем патчи точно так же, как и для любой программы свободного программного обеспечения. Принятые изменения будут опубликованы в электронном виде и со временем будут включены в будущие печатные версии этой работы. Если вы хотите внести свой вклад в дальнейшее улучшение этой книги, со мной можно связаться по адресу sam@inow.com. Комментарии и вопросы пожалуйста, направляйте издателю: O'Reilly & Associates, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 (800) 998-9938 (в США и Канаде) (707) 829-0515 (международный/местный) (707) 829-0104 (факс) Существует веб-страница этой книги, на которой указаны опечатки, примеры и любая дополнительная информация. На сайте также есть ссылка на форум, где вы можете обсудить книгу с автором и другими читателями. Вы можете посетить этот сайт по адресу: http://www.oreilly.com/catalog/freedom/ Чтобы прокомментировать или задать технические вопросы по этой книге, отправьте электронное письмо по адресу: bookquestions@oreilly.com Для получения дополнительной информации о книгах, конференциях, ресурсных центрах и сети O'Reilly посетите веб-сайт O'Reilly по адресу: http://www.oreilly.com Благодарности Особая благодарность Хеннингу Гутману за поддержку этой книги. Особая благодарность Аарону Оасу за то, что он вообще подал эту идею Трейси. Спасибо Лори Петрицки, Джеффри Холкомбу и всем остальным сотрудникам O'Reilly & Associates. Спасибо Тиму О'Рейли за поддержку этой книги. Спасибо всем рецензентам первого варианта: Брюсу Перенсу, Эрику Рэймонду, Эрику Оллману, Джону Оруанту, Джули и Джеральду Джей Сассманам, Хэлу Абельсону и Гаю Стилу. Надеюсь, вам понравится эта версия без опечаток. Спасибо Алис Липпман за интервью, печенье и фотографии. Спасибо моей семье: Стив, Джейн, Тиш и Дэйв. И наконец, что не менее важно: спасибо Ричарду Столлману за смелость и выносливость, позволившую нам «увидеть код».
Сэм Уильямс
За неимением принтера
Я боюсь греков, даже когда они приносят дары. — Вергилий, «Энеида»
Новый принтер снова застрял.
Ричард М. Столлман, штатный программист Лаборатории искусственного интеллекта Массачусетского технологического института (Лаборатории ИИ), обнаружил неисправность самым неприятным образом. Спустя час после отправки 50-страничного файла на офисный лазерный принтер 27-летний Столлман прервал продуктивную работу, чтобы забрать свои документы. Прибыв на место, он обнаружил в лотке принтера всего четыре страницы. К еще большему разочарованию, эти четыре страницы принадлежали другому пользователю, а это означало, что задание на печать самого Столлмана и незавершенная часть чьего-то чужого задания все еще застряли где-то в электрических лабиринтах компьютерной сети лаборатории.
Ожидание машин — это профессиональный риск для программиста, поэтому Столлман отнесся к своему разочарованию философски. И все же разница между ожиданием машины и обслуживанием машины весьма существенна. Это был не первый раз, когда ему приходилось стоять у принтера, наблюдая, как страницы выходят одна за другая. Будучи человеком, который проводил большую часть своих дней и ночей, повышая эффективность машин и управляющих ими программ, Столлман испытывал естественное желание вскрыть машину, заглянуть в ее внутренности и докопаться до корня проблемы.
К сожалению, навыки Столлмана как компьютерного программиста не распространялись на область машиностроения. По мере того как из машины сыпались свежераспечатанные документы, у Столлмана была возможность подумать о других способах обхода проблемы с замятием бумаги.
Столлман задался вопросом: сколько времени прошло с тех пор, как сотрудники Лаборатории ИИ с распростертыми объятиями встретили новый принтер? Машина была пожертвованием от Корпорации Xerox. Будучи передовым прототипом, она представляла собой модифицированную версию популярного копировального аппарата Xerox. Только вместо того, чтобы делать копии, она использовала программные данные, передаваемые по компьютерной сети, чтобы превращать эти данные в документы профессионального вида. Созданная инженерами всемирно известного исследовательского центра Xerox в Пало-Альто, она была, проще говоря, предвестником революции настольной печати, которая охватит остальную часть компьютерной индустрии к концу десятилетия.
Движимые инстинктивным стремлением повозиться с лучшим новым оборудованием, программисты Лаборатории ИИ незамедлительно интегрировали новую машину в сложную вычислительную инфраструктуру лаборатории. Результаты оказались приятными незамедлительно. В отличие от старого лазерного принтера лаборатории, новый аппарат Xerox работал быстро. Страницы вылетали со скоростью одна в секунду, превращая 20-минутную печать в 2-минутную. Новая машина также была более точной. Круги выглядели как круги, а не как овалы. Прямые линии выглядели как прямые линии, а не как низкоамплитудные синусоиды.
По всем параметрам это был слишком щедрый подарок, чтобы от него отказываться.
Лишь через несколько недель после появления машины начали всплывать ее недостатки. Главным из них была присущая машине склонность к замятию бумаги. Программисты с инженерным складом ума быстро поняли причину этого изъяна. Будучи копировальным аппаратом, машина обычно требовала непосредственного контроля со стороны человека-оператора. Полагая, что такие операторы всегда будут рядом, чтобы устранить замятие бумаги, если оно произойдет, инженеры Xerox потратили свое время и силы на устранение других надоедливых проблем. На языке инженеров, усердие пользователя было заложено в саму систему.
Модифицируя машину для использования в качестве принтера, инженеры Xerox изменили отношения между пользователем и машиной тонким, но глубоким образом. Вместо того чтобы сделать машину подчиненной отдельному человеку-оператору, они сделали ее подчиненной всей соединенной в сеть популяции людей-операторов. Вместо того чтобы стоять непосредственно над машиной, пользователь на одном конце сети отправлял свою команду печати через длинную цепочку машин в надежде, что желаемый контент прибудет в пункт назначения в надлежащем виде. Лишь когда он наконец шел проверить окончательный результат, он понимал, сколь малая часть желаемого контента дошла до цели.
Сам Столлман был одним из первых, кто выявил проблему и предложил решение. Годами ранее, когда лаборатория все еще использовала старый принтер, Столлман решил аналогичную проблему, открыв программу, которая управляла принтером на лабораторной машине PDP-11. Столлман не мог устранить замятие бумаги, но он мог вставить программную команду, которая приказывала PDP-11 периодически проверять принтер и докладывать об этом на PDP-10, центральный компьютер лаборатории. Чтобы чья-то халатность не стопорила всю очередь заданий на печать, Столлман также вставил программную команду, которая предписывала PDP-10 уведомлять каждого пользователя с ожидающим заданием на печать о том, что принтер застрял. Уведомление было простым, что-то вроде «Принтер застрял, пожалуйста, исправьте», и поскольку оно рассылалось людям, больше всего нуждающимся в решении проблемы, шансы на то, что проблема будет вовремя устранена, возрастали.
Что касается исправлений, решение Столлмана было окольным, но изящным. Оно не устраняло механическую сторону проблемы, но делало следующее по эффективности движение, замыкая информационный цикл между пользователем и машиной. Благодаря нескольким дополнительным строкам программного кода сотрудники Лаборатории ИИ могли избавиться от 10 или 15 минут, впустую тратившихся каждую неделю на беготню туда-сюда для проверки принтера. С точки зрения программирования, исправление Столлмана использовало усиленный интеллект всей сети в целом.
«Если вы получали такое сообщение, вы не могли полагаться на то, что кто-то другой это исправит», — говорит Столлман, вспоминая ту логику. — «Вам приходилось идти к принтеру. Через минуту-две после того, как у принтера возникали проблемы, те два или три человека, которым приходили сообщения, являлись чинить машину. Из этих двух или трех людей по меньшей мере один обычно знал, как решить проблему».
Подобные остроумные исправления были визитной карточкой Лаборатории ИИ и ее коренного населения — программистов. Действительно, лучшие программисты Лаборатории ИИ презирали термин «программист», предпочитая ему более сленговое профессиональное название «хакер». Эта должность охватывала множество видов деятельности — от творческого веселья до улучшения существующего программного обеспечения и компьютерных систем. Однако в самом названии было неявно заложено старомодное понятие янки-изобретательности. Чтобы быть хакером, нужно было принять философию, согласно которой написание программы — это лишь начало. Улучшение программы было истинным испытанием навыков хакера. Подробнее о термине «хакер» см. в Приложении B.
Такая философия была главной причиной, почему такие компании, как Xerox, сделали за правило жертвовать свои машины и программные продукты местам, где обычно собирались хакеры. Если хакеры улучшали программное обеспечение, компании могли заимствовать улучшения обратно, включая их в обновления для коммерческого рынка. На корпоративном языке хакеры были ценным общественным ресурсом, вспомогательным отделом исследований и разработок, доступным с минимальными затратами.
Именно благодаря этой философии взаимообмена, когда Столлман заметил дефект замятия бумаги в лазерном принтере Xerox, он не запаниковал. Он просто искал способ обновить старое исправление или «хак» для новой системы. Однако в процессе поиска программного обеспечения лазерного принтера Xerox Столлман сделал тревожное открытие. У принтера не было никакого программного обеспечения, по крайней мере ничего такого, что Столлман или другой программист могли бы прочитать. До тех пор большинство компаний делало правилом хорошего тона публикацию файлов исходного кода — читаемых текстовых файлов, в которых документировались отдельные программные команды, говорившие машине, что делать. В данном случае Xerox предоставила программные файлы в предварительно скомпилированном или бинарном виде. Программисты могли свободно открывать файлы, если хотели, но если только они не были экспертами в расшифровке бесконечного потока единиц и нулей, полученный текст представлял собой чистую бессмыслицу.
Хотя Столлман много знал о компьютерах, он не был экспертом в переводе бинарных файлов. Однако как хакер он имел в своем распоряжении другие ресурсы. Сама идея обмена информацией была настолько центральной для хакерской культуры, что Столлман знал: это лишь вопрос времени, когда какой-нибудь хакер в университетской лаборатории или корпоративной компьютерной комнате предложит версию исходного кода лазерного принтера с нужными файлами.
После первых нескольких замятий принтера Столлман утешал себя воспоминанием о похожей ситуации многолетней давности. Лаборатории требовалась межсетевая программа, которая помогала бы PDP-11 эффективнее работать с PDP-10. Хакеры лаборатории вполне справлялись с этой задачей, но Столлман, выпускник Гарварда, вспомнил похожую программу, написанную программистами из компьютерного департамента Гарварда. Компьютерная лаборатория Гарварда использовала ту же модель компьютера, PDP-10, хотя и с другой операционной системой. В гарвардской компьютерной лаборатории также действовало правило, согласно которому все программы, устанавливаемые на PDP-10, должны были сопровождаться опубликованными файлами исходного кода.
Воспользовавшись своим доступом к компьютерной лаборатории Гарварда, Столлман зашел туда, сделал копию межсетевого исходного кода и принес ее обратно в Лабораторию ИИ. Затем он переписал исходный код, чтобы сделать его более подходящим для операционной системы Лаборатории ИИ. Без лишних хлопот Лаборатория ИИ закрыла крупный пробел в своей программной инфраструктуре. Столлман даже добавил несколько функций, которых не было в оригинальной гарвардской программе, сделав ее еще более полезной. «В конце концов мы использовали ее несколько лет», — говорит Столлман.
С точки зрения программиста 1970-х годов, эта транзакция была программным эквивалентом того, как сосед заходит одолжить электроинструмент или чашку сахара у другого соседа. Разница была лишь в том, что, позаимствовав копию программного обеспечения для Лаборатории ИИ, Столлман никоим образом не лишил гарвардских хакеров возможности использовать их оригинальную программу. Во всяком случае, хакеры из Гарварда выиграли от этого процесса, поскольку Столлман внедрил в программу свои собственные дополнительные функции, которые гарвардские хакеры могли совершенно свободно позаимствовать взамен. Хотя никто из Гарварда никогда не приходил заимствовать программу обратно, Столлман вспоминает, как программист из частной инженерной фирмы Bolt, Beranek & Newman позаимствовал программу и добавил несколько дополнительных функций, которые Столлман в конечном итоге реинтегрировал в собственный архив исходного кода Лаборатории ИИ.
«Программа развивалась так же, как развивается город», — говорит Столлман, вспоминая программную инфраструктуру Лаборатории ИИ. — «Части заменялись и перестраивались. Добавлялось что-то новенькое. Но всегда можно было посмотреть на определенную часть и сказать:
Благодаря этой простой системе интеллектуального прироста хакеры из Лаборатории ИИ и других мест создавали мощные системы. На западном побережье компьютерные ученые из Калифорнийского университета в Беркли, работая в сотрудничестве с несколькими рядовыми инженерами из AT&T, создали целую операционную систему с помощью этой системы. Прозванная Unix — игра слов, отсылающая к более старой и академически респектабельной операционной системе под названием Multics, — эта программная система была доступна любому программисту, готовому оплатить стоимость копирования программы на новую магнитную ленту и ее отправку. Не каждый программист, участвовавший в этой культуре, называл себя хакером, но большинство разделяли настроения Ричарда М. Столлмана. Если программа или программная заплатка годились для решения ваших проблем, они годились и для решения чьих-то чужих проблем. Почему бы не поделиться ими из простого стремления к хорошей карме?