Архивы: по дате | по разделам | по авторам

Дело о лазерном принтере

Архив
автор : Сэм Уильямс   21.05.2002

Сегодняшняя публикация - сокращенный перевод первой главы книги Сэма Уильямса "Свободный - от слова "свобода". Крестовый поход Ричарда Столлмена за свободу софта" (Sam Williams. Free as in Freedom. Richard Stallman’s Crusade for Free Software. - O’Reilly & Associates, Inc., 2002).

Боюсь данайцев, даже дары приносящих.
Вергилий. «Энеиды»


Сегодняшняя публикация - сокращенный перевод первой главы книги Сэма Уильямса «Свободный - от слова «свобода». Крестовый поход Ричарда Столлмена за свободу софта» (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. Оригинал доступен по адресу. © Марина Оборина, Максим Отставнов, 2002, перевод. Этот перевод также публикуется на сайте «Компьютерры». Оригинал и перевод разрешается использовать на условиях Лицензии на свободную документацию GNU (GNU FDL). Текст GNU FDL, содержащий условия и ограничения такого использования, а также тексты других свободных лицензий GNU доступны по адресу, его неофициальный (справочный) перевод - по адресу.

Новый принтер опять зажевал бумагу. Ричард М. Столлмен, штатный программист ЭВМ Лаборатории искусственного интеллекта Массачусетского технологического института (Лаб ИИ), столкнулся с неприятной проблемой. Через час после того, как многостраничный файл был отправлен на офисный лазерный принтер, двадцатисемилетний Столлмен прервал работу, чтобы забрать распечатку, но нашел только четыре страницы, относящиеся вдобавок к заданию другого пользователя. Все остальное застряло где-то в недрах компьютерной сети лаборатории.

Ждать машину неприятно, но привычно для программиста, и Столлмен отнесся к этому с иронией. Однако ждать машину и ждать у машины - существенная разница. Ему большую часть рабочих дней и ночей приходилось тратить на повышение эффективности работы машины и управляющих ею программ, и он испытывал естественное желание заглянуть внутрь устройства и найти причину сбоя.

К сожалению, навыки Столлмена как программиста не распространялись на механику. Пока принтер выдавал документ, у Столлмена было время поразмыслить над другими способами обойти проблему «зажевывания» бумаги.

Еще недавно персонал Лаб ИИ с распростертыми объятиями встречал новый принтер - подарок от корпорации Xerox. Новейшая модель была модифицированной версией популярного копира Xerox, но вместо изготовления копий бумажных листов она брала данные из сети и превращала их в профессионально отпечатанные документы. Созданный инженерами прославленного исследовательского центра Xerox в Пало-Альто, принтер позволял почувствовать вкус революции настольных типографий, охватившей компьютерную отрасль лишь в конце десятилетия.

Ведомые инстинктом игры с новейшим оборудованием, программисты Лаб ИИ немедленно включили новое устройство в свою развитую компьютерную инфраструктуру: в отличие от старого принтера, новый печатал очень быстро. Из него вылетало по странице в секунду, и на получасовое задание теперь уходило две минуты. К тому же он печатал точнее: окружности были круглыми, а не овальными, а отрезки - прямыми, а не волнистыми. С какой стороны ни посмотри, на такой подарок грех жаловаться.

И только спустя недели стали всплывать недостатки. Самым заметным была прирожденная склонность «жевать» бумагу. Программисты, привыкшие мыслить инженерно, сразу обнаружили, в чем дело. Будучи по происхождению копиром, устройство было предназначено для работы под присмотром оператора, который всегда мог поправить бумагу, поэтому сей недостаток был сочтен второстепенным, и разработчики занялись другими проблемами. Говоря по-инженерски, контроль со стороны пользователя был встроен в систему.

Превратив копир в принтер, разработчики внесли тонкое, но важное изменение во взаимоотношения с пользователем: теперь устройство подчинялось не одному оператору, а всему «населению» целой компьютерной сети. Пользователь уже не стоял у машины, а посылал ей данные с другого конца сети, и, чтобы появиться в задуманном виде из принтера, информация должна была пройти через стройные ряды машин. И пока пользователь не дойдет до принтера, он не узнает, что распечатать удалось лишь малую толику ожидаемого.

Столлмен оказался одним из первых, кто обнаружил проблему, и первым, кто предложил способ ее обойти. Когда в лаборатории еще использовался старый принтер, Столлмен решил подобную проблему, покопавшись в программе, управлявшей принтером, подключенным к PDP-11. Столлмен ничего не мог поделать с зажевыванием бумаги, но он смог вставить в программу команду, инструктирующую компьютер периодически проверять состояние принтера и передавать его PDP-10, основному компьютеру лаборатории. Чтобы один пользователь не создавал очередь из заданий других операторов, Столлмен также заложил в программу простое оповещение всех пользователей, чьи задания стояли в очередь на распечатку, что-то вроде «Бумага застряла, поправьте ее», и поскольку оно попадало ровно к тем пользователям, больше всех были заинтересованным в решении проблемы, шансы на то, что она будет решена быстро, возрастали.

Как и все подобного рода решения, столлменовская «заплатка» была неочевидной, но элегантной. Она не исправляла механический недостаток, но устраняла информационный барьер между устройством и пользователем. Благодаря нескольким строкам кода сотрудники Лаб ИИ экономили каждую неделю 10-15 минут, уходивших на то, чтобы бегать от рабочего места к принтеру, проверяя, все ли в порядке. В программистских терминах, решение Столлмена делало всю сеть «умнее».

«Получив такое сообщение, ты уже не будешь думать, что кто-то другой исправит ситуацию, - вспоминает Столлмен логику решения. - Приходится идти к принтеру, через минуту-две у него соберется пара-тройка пользователей, и обычно как минимум один из них окажется в состоянии разрешить затруднение».

Такие хитрые приемы стали визитной карточкой Лаб ИИ и обживших ее программистов. Лучшие из них не любили, когда их называли «программистами», предпочитая, чтобы их называли словом из сленга: «хакер». Это звание распространялось на целый букет занятий: от нетривиальных шуток до постоянного совершенствования программ и компьютерной системы. Однако термин предполагал и старомодную изобретательность янки: чтобы стать хакером, нужно было принять философию, согласно которой написать программу - лишь начало, а настоящей проверкой хакерских способностей является ее совершенствование.

Эта философия и была главной причиной, по которой компании типа Xerox любили дарить свое «железо» в места, где обычно кучковались хакеры. Если хакеры «прошлись» по программе, компания могли забрать ее назад уже улучшенной, улучшая и свое рыночное предложение. В терминах корпоративного управления, хакеры были ценным общим активом, еще одним исследовательско-проектным подразделением, доступным за минимальную плату.

Именно из-за распространенности философии «давай, и вернется сторицей» Столлмен не запаниковал, столкнувшись с дефектом. Он просто стал думать, как бы ему применить ранее найденное решение (или «хак») к новой системе. Xerox, однако, на этот раз предоставил программы в уже скомпилированном («двоичном») виде.

Столлмен успокаивал себя тем, что несколько лет назад он уже сталкивался с ситуацией, когда лаборатории понадобилась программа, работающая через сеть и помогающая PDP-11 более эффективно взаимодействовать с PDP-10. Хакеры из лаборатории были более чем готовы приступить к программированию, но Столлмен, выпускник Гарварда, вспомнил, что в Гарвардском вычислительном центре подобную программу уже писали. Там стояла такая же PDP-10 (хотя и под другой ОС), а еще там было правило, согласно которому на машине не устанавливалось ни одной программы, исходный код которой не был бы доступен.

Воспользовавшись доступом в компьютерный центр Гарварда, Столлмен съездил туда, взял исходный код программы и привез его в Лаб ИИ. Затем он переписал код под используемую там ОС. Без всякой суеты и волокиты Лаб ИИ сделала большой шаг в развитии своей вычислительной инфраструктуры. Столлмен даже добавил к программе несколько весьма полезных возможностей, отсутствующих в оригинальной версии. «Мы использовали ее много лет», - вспоминает он.

С точки зрения программиста семидесятых, такие отношения были эквивалентом добрососедства, когда можно занять у приятеля какой-нибудь инструмент или горсть сахара. Единственное отличие составляло то, что, «заняв» программу для Лаб ИИ, Столлмен не лишил гарвардских хакеров возможности самим пользоваться ею. Если такие отношения и влияли на них, то только положительно, поскольку они точно так же могли в свою очередь позаимствовать столлменовские добавки в программу. Хотя никто из Гарварда и не пришел за программой, ее брал программист из частной разработческой фирмы Bolt, Beranek & Newman. А когда этот программист добавил в нее новые функции, и они легли в архив исходного кода Лаб ИИ.

«Программы развиваются так же, как строится город, - говорит Столлмен, вспоминая программную инфраструктуру Лаб ИИ. - Отдельные «кварталы» заменяются и перестраиваются. Но всегда можно, глядя на ту или иную часть, сказать: «Ага, судя по стилю, этот кусок был написан в начале шестидесятых, а этот - в середине семидесятых».

На Западном побережье в Университете Калифорнии в Беркли ученые-информатики в сотрудничестве с рядовыми инженерами из AT&T построили таким образом целую операционную систему. Прозванная Unix 1 (с иронией по поводу более академически респектабельной ОС под названием Multics), эта система была доступна любому программисту, согласному заплатить за копирование ее на новую магнитную ленту и пересылку. Если программа или исправление ошибки годились для решения вашей проблемы, они могли пригодиться и другим для решения их проблем. Даже простого нежелания портить свою карму уже было достаточно, чтобы поделиться.

То, что в Xerox не захотели делиться исходным кодом, не казалось такой уж большой проблемой. В поисках этого файла Столлмен, как он вспоминает, даже не удосужился обратиться в компанию: «Они и так подарили нам лазерный принтер, неудобно было их беспокоить».

Однако, когда файл упорно не захотел отыскиваться, у Столлмена зародилось подозрение. За год до этого он уже имел стычку с аспирантом в Университете Карнеги-Меллона. Бриан Рейд был автором полезной программы для форматирования текста под названием Scribe. Это была одна из первых программ, позволявших пользователю определять шрифты и стили набора, отправляя документ на печать через сеть. В 1979 г. Рейд решил продать свою программу компании Unilogic, - он вспоминает, что ему хотелось передать программу группе разработчиков, которые изъяли бы ее из общественного достояния. Для того, чтобы облегчить сделку, Рейд согласился вставить в программу несколько «бомб замедленного действия», которые дезактивировали свободно распространявшиеся копии через девяносто дней. Чтобы избежать дезактивации, пользователи платили софтверной компании, которая передавала им код, обезвреживающий «бомбы».

Для Столлмена это было просто-напросто предательством этики программистов. Вместо действия в соответствии с представлениями о свободном обмене, Рейд мостил путь компаниям, принуждающим программистов платить за доступ к информации.

Шли недели, и все попытки найти исходный код программы для лазерного принтера упирались в глухую стену. Но до него дошла хорошая новость: один из сотрудников Университета Карнеги-Меллона только что уволился из исследовательского центра в Пало-Альто. Согласно слухам, он работал с этим принтером не только в Xerox, но и в университете.

Отбросив подозрения, Столлмен решил найти этого человека. Через несколько месяцев у него появился повод поехать туда в командировку, и он не преминул зайти на кафедру информатики, где сотрудники проводили его в кабинет члена факультета, возглавлявшего проект.

Как водится у инженеров, разговор вышел искренний, но резкий. Коротко представившись, Столлмен попросил копию исходного кода программы, чтобы перенести ее на PDP-11. Столлмен вспоминает: «Он сказал, что обещал не делиться кодом».

Человеческая память - странная вещь. За двадцать лет из памяти Столлмена начисто стерлись некоторые фрагменты: он не только забыл, зачем ездил, но и не может вспомнить имя своего собеседника. Согласно Рейду, человеком, к которому Столлмен обратился с просьбой, скорее всего был Роберт Спраулл, бывший исследователь в PARC, а сейчас - директор Sun Laboratories, исследовательского подразделения компьютерного объединения Sun Microsystems. В семидесятые Спраулл, работая в PARC, был основным разработчиком злополучного программного обеспечения для лазерных принтеров Xerox. Примерно в 1980 г. Спраулл поступил на должность исследователя в Карнеги-Меллон, где он, помимо других проектов, продолжал свою работу над лазерными принтерами.

«Код, который попросил Столлмен, был новейшей и наисовременнейшей программой, написанной Спрауллом примерно за год до этого, - вспоминает Рейд. - Я подозреваю, что Спраулл не проработал и месяца, когда к нему обратились с этой просьбой».

Однако сам Спраулл ничего не может вспомнить: «Откомментировать этот факт не могу, так как совершенно не помню этого случая», - ответил он на вопрос по электронной почте.

В публичных выступлениях Столлмен неоднократно ссылался на этот случай, подчеркивая, что нежелание Спраулла предоставить исходный код проистекало из соглашения о неразглашении, заключенного между ним и корпорацией Xerox, давшей Спрауллу и другим подписантам доступ к исходному коду в обмен на обещание держать его в тайне. Теперь обычное дело в программной отрасли, соглашения о неразглашении были в то время внове, отражая коммерческую ценность для компании как лазерного принтера, так и информации, необходимой для управления им. «Xerox как раз в то время пыталась вывести свой лазерный принтер на рынок, - вспоминает Рейд. - Было бы безумием, если бы они отдали исходный код».

Для Столлмена, однако, неразглашение означало совсем другое - как крестьянин, чье поле веками снабжалось водой из канала, и который вдруг обнаружил, что канал пересыхает, Столлмен поднялся вверх по течению и увидел, что путь воде преграждает новая сверкающая плотина гидроэлектростанции с логотипом «Xerox».

Для Столлмена, испытывавшего сложности в большинстве ситуаций обыденного общения, прийти без приглашения к коллеге было жестом добрососедства. После того, как он столкнулся с отказом, жест оказался серьезным промахом. «Я был так зол, что даже не нашел способа это выразить. Я просто повернулся и вышел без единого слова, - вспоминает Столлмен. - Может быть, я хлопнул дверью, теперь не вспомнишь. Все, что я помню, - мне хотелось поскорее убраться оттуда».

Двадцать лет спустя злость все еще жива, настолько, что Столлмен придает этому эпизоду значение поворотного пункта. До сих пор, если вы спросите Столлмена о событиях, превративших его в воинствующего активиста, прилагающего традиционные понятия свободы, равенства и братства к разработке программ, он особо подчеркнет свою поездку в Карнеги-Меллон.

С точки зрения Столлмена, принтер был «троянским конем». После десятилетия неудачных попыток, в Лаб ИИ проникло «частное» программное обеспечение (следующее поколение хакеров назовет его «проприетарным»), причем проникло самым хитрым методом: под видом подарка.

«Это стимулировало обдумывание вопросов, над которыми я уже размышлял, - замечает Столлмен. - У меня уже сложилась мысль о том, что программы должны быть в совместном пользовании, но мои идеи не были ясны и организованы достаточно, чтобы последовательно изложить их публично».

Ричард Столлмен
(Richard M. Stallman)
- соучредитель и первый президент Фонда свободного программного обеспечения, инициатор проекта GNU. Лауреат Макартуровской премии 1990 г., лауреат Хопперовской премии Ассоциации вычислительной техники (ACM) того же года, один из лауреатов Такедовской премии 2001 г.

То, что Xerox предложила программистам доступ к дополнительным благам в обмен на тайну, было неприятно, но Столлмен не боится признаться в том, что если бы такую сделку предложили ему, когда он был моложе, возможно, он бы и согласился. Но то, что произошло в Карнеги-Меллон, сыграло укрепляющую роль для уставшего чувства морали Столлмена, не только придав ему злости, которая впоследствии позволила ему с подозрением относиться к будущим «подаркам», но и заставила его задать самому себе неприятный вопрос: а что, если завтра коллега-хакер зайдет в его офис, и Столлмен вынужден будет отказать ему в выдаче исходного кода?

«Это был первый раз, когда я столкнулся с соглашением о неразглашении, и я сразу увидел, что у такого соглашения есть жертвы, - твердо говорит Столлмен. - В этом случае жертвой оказался я. Моя лаборатория и я».

Этот урок Столлмен пронесет через все неспокойные восьмидесятые - десятилетие, во время которого множество его коллег по МТИ покинут Лаб ИИ и подпишутся под неразглашением того или иного рода. Поскольку большинство таких соглашений носило временный характер, редкий хакер, подписывающийся под ними, чувствовал необходимость в его соблюдении. Рано или поздно, - рассуждали они, - программы все равно пополнят фонд общих знаний. В то же время обещание хранить код в секрете на ранних стадиях разработки было частью сделки, позволявшей хакерам участвовать в лучших проектах. А для Столлмена это было первым шагом к соскальзыванию вниз.

«Если кто-либо просил меня совершить такого рода предательство, я вспоминал свое негодование, когда такое совершалось в отношении меня и всей лаборатории, - вспоминает Столлмен. - И я говорил: -«Спасибо большое за то, что вы предложили мне такой милый программный пакет, но я не могу принять его на предлагаемых условиях, и придется мне обойтись без него».

«С того самого дня я раз и навсегда решил, что есть дела, в которых я никогда не буду участвовать, - замечает Столлмен, ссылаясь на обмен личной свободы на удобства. - Так он описывает сделку с неразглашением, да и всю ту культуру, которая поощряет такие этически подозрительные сделки. - Я решил, что никогда не буду ставить других в положение жертвы, в котором оказался сам».


1 (обратно к тексту) - Более точно было бы сказать, что в Беркли (проект BSD) развили идеи открытой операционной системы, ранее предложенные и реализованные в AT&T (система Unix). С увлекательной историей берклиевского проекта можно ознакомиться в статье: Marshall Kirk McKusick. 20 Years of Berkeley Unix. - Прим. ред.
© ООО "Компьютерра-Онлайн", 1997-2022
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.