LINUX.ORG.RU

Избранные сообщения DDuck

Free as in Freedom на русском: Глава 1. Роковой принтер

Новости — Документация
Группа Документация

Роковой принтер

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

Опять новый принтер зажевал бумагу.

Часом ранее Ричард Столлман, программист Лаборатории Искусственного Интеллекта МТИ (Лаборатории ИИ), отправил 50-страничный документ печататься на офисном принтере, и погрузился в работу. А сейчас Ричард оторвался от дела, подошёл к принтеру и увидел пренеприятнейшее зрелище: вместо долгожданных 50 отпечатанных страниц в лотке лежали только 4 готовых листа. Да и те явно относились к какому-то чужому документу. Файл Ричарда на 50 страниц спутался с чьим-то недопечатанным файлом в хитросплетениях офисной сети, и принтер пасовал перед этой проблемой.

Ждать, пока машина выполнит возложенную на неё работу – обычное дело для программиста, и Столлману впору было отнестись к этой проблеме стоически. Но одно дело, когда вы даёте машине задачу и занимаетесь своими делами, и совсем другое — когда вам приходится стоять рядом с машиной и контролировать её. Далеко не в первый раз Ричарду приходилось стоять перед принтером и следить за тем, как страницы вылезают одна за одной. Как всякий хороший технарь, Столлман очень высоко ценил эффективность работы устройств и программ. Неудивительно, что этот очередной срыв рабочего процесса возбудил у Ричарда горячее желание залезть во внутренности принтера и навести там должный порядок.

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

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

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

Во всех смыслах, подарок Xerox был предложением, от которого невозможно отказаться.

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

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

Вряд ли Столлман был единственным в Лаборатории ИИ, кто заметил проблему, но он ещё и размышлял над её решением. За несколько лет до этого Ричарду довелось решить похожую проблему с прежним принтером. Для этого он на персональном рабочем компьютере PDP-11 отредактировал программу, которая работала на мейнфрейме PDP-10 и управляла принтером. Саму проблему зажёвывания бумаги Столлману решить не удалось, вместо этого он вставил код, который заставлял PDP-11 время от времени проверять состояние принтера. Если аппарат зажёвывал бумагу, программа просто рассылала на рабочие PDP-11 оповещение вроде «принтер жуёт бумагу, требуется починка». Решение оказалось эффективным – оповещение шло напрямую пользователям, которые активно пользовались принтером, так что его выходки с бумагой зачастую пресекались немедленно.

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

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

Подобные ловкие решения были визитной карточкой Лаборатории ИИ и её программистов. Вообще, лучшие программисты Лаборатории несколько презрительно относились к термину «программист», предпочитая ему сленговое «хакер». Это определение точнее отражало суть работы, которая включала самые разные занятия, от изощрённых интеллектуальных забав до кропотливых улучшений программ и компьютеров. Также в нём чувствовалось старомодное убеждение об американской изобретательности. Хакеру недостаточно просто написать работающую программу. Хакер пытается проявить мощь своего интеллекта перед собой и другими хакерами, возложив на себя куда более сложные и тяжёлые задачи – например, сделать программу одновременно максимально быстрой, компактной, мощной и красивой.

Компании вроде Xerox намеренно дарили свою продукцию крупным сообществам хакеров. Это был расчёт на то, что хакеры начнут ею пользоваться, привяжутся к ней, и потом придут работать в компанию. В 60-е годы и на заре 70-х хакеры часто писали настолько качественные и полезные программы, что производители охотно распространяли их среди своих клиентов.

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

Есть программы, которые называются «дизассемблеры», они переводят единицы и нули в низкоуровневые машинные инструкции, но разобраться, что эти инструкции делают – очень долгий и трудный процесс, называемый «обратной разработкой». На обратную разработку программы принтера легко могло уйти куда больше времени, чем на суммарное исправление зажёванной бумаги в течение ближайших 5 лет. Ричард был недостаточно отчаянным, чтобы решиться на такой шаг, и потому он просто отложил проблему в долгий ящик.

Недружелюбная политика Xerox резко противоречила обычной практике хакерских сообществ. Например, чтобы разработать для персонального компьютера PDP-11 программы для управления старым принтером и терминалами, Лаборатории ИИ нужен был кросс-ассемблер, который собирал бы программы для PDP-11 на мейнфрейме PDP-10. Хакеры Лаборатории могли написать кросс-ассемблер сами, но Столлман, будучи студентом Гарварда, нашёл похожую программу в компьютерной лаборатории университета. Она была написана для такого же мейнфрейма, PDP-10, но под другую операционную систему. Ричард понятия не имел, кто написал эту программу, поскольку в исходном коде об этом ничего не говорилось. Он просто принёс в Лабораторию копию исходного кода, отредактировал её, и запустил на PDP-10. Без лишних хлопот и забот Лаборатория получила программу, которая была необходима для работы офисной инфраструктуры. Столлман даже сделал программу мощнее, добавив в неё несколько функций, которых не было в оригинале. «Мы вовсю использовали эту программу несколько лет», – не без гордости сообщает он.

В глазах программиста 70-х годов такая модель распространения программного кода ничем не отличалась от добрососедских отношений, когда один делится с другим чашкой сахара или даёт на время дрель. Но если вы, когда одалживаете дрель, лишаете хозяина возможности ею пользоваться, то в случае с копированием программ ничего подобного не происходит. Ни автор программы, ни её другие пользователи ничего не лишаются от копирования. Зато другие люди от этого приобретают, как в случае с хакерами Лаборатории, что получили программу с новыми функциями, которых раньше даже не было на свете. И эти новые функции можно так же сколько угодно копировать и распространять среди других людей. Столлман вспоминает об одном программисте из частной компании Bolt, Beranek & Newman, который тоже получил программу и отредактировал её для запуска под Twenex – ещё одной операционной системы для PDP-10. Также он добавил в программу ряд замечательных функций, и Столлман скопировал их в свою версию программы в Лаборатории. После этого они решили сообща развивать программу, которая уже ненароком выросла в мощный продукт, работающий на разных операционных системах.

Вспоминая программную инфраструктуру Лаборатории ИИ, Столлман говорит: «Программы развивались подобно городу. Какие-то части менялись понемногу, какие-то – сразу и полностью. Появлялись новые участки. И вы всегда могли взглянуть на код и сказать, мол, судя по стилю, эту часть написали в начале 60-х, а эту – в середине 70-х».

Благодаря такой простой умственной кооперации, хакеры создали множество мощных и надёжных систем в Лаборатории и вне её. Не каждый программист, разделяющий эту культуру, назвал бы себя хакером, но большинство из них вполне разделяли настрой Ричарда Столлмана. Если программа или исправленный код хорошо решают вашу проблему, они так же хорошо решат эту проблему для кого угодно. Почему бы тогда не поделиться этим решением, хотя бы из моральных соображений?

Эту концепцию безвозмедного сотрудничества подорвало сочетание жадности и коммерческой тайны, породив причудливое сочетание секретности и кооперации. Хороший пример – начальный период жизни BSD. Это мощная операционная система, которую создали учёные и инженеры Калифорнийского Университета в Беркли на основе Unix, купленного в AT&T. Стоимость копирования BSD была равна стоимости плёнки, но с одним условием – плёнку с копией BSD школы могли получить только имея лицензию AT&T, которая стоила $50,000. Получалось, что хакеры Беркли делились программами только в той мере, в какой им позволяла это делать компания AT&T. И они не видели в этом ничего странного.

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

В конце концов, пришла хорошая новость: оказалось, что копия исходника программы для принтера Xerox есть у научного сотрудника Университета Карнеги-Меллон.

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

Для Столлмана это было чистейшим и откровенным предательством программистской этики. Вместо того, чтобы следовать принципу «делись и раздавай», Рид встал на путь взимания платы с программистов за доступ к информации. Но он не особенно задумывался об этом, потому что нечасто использовал Scribe.

Unilogic дали Лаборатории ИИ бесплатную копию Scribe, но не удалили тайм-бомбу и даже не упомянули о ней. До поры до времени программа работала, но однажды всё-таки перестала. Системный хакер Говард Кэннон провёл многие часы за отладкой бинарного файла программы, пока, наконец, не обнаружил тайм-бомбу и не удалил её. Его по-настоящему взбесила эта история, и он не постеснялся рассказать о ней другим хакерам, и передать все свои мысли и эмоции насчёт преднамеренной «ошибки» Unilogic.

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

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

«Он сказал, что пообещал производителю не давать мне копию», – говорит Ричард.

Память – забавная штука. Спустя 20 лет после этого инцидента память Столлмана полна белых пятен. Он забыл не только о причине, по которой приехал в Карнеги-Меллон, но и о том, кто был его визави в этом неприятном разговоре. По словам Рида, этим человеком, скорее всего, был Роберт Спролл, бывший сотрудник научно-исследовательского центра Xerox в Пало-Альто, который впоследствии стал директором исследовательного отделения Sun Microsystems. В 70-х годах Спролл был ведущим разработчиком программ для лазерных принтеров Xerox. Где-то в 1980 году Спролл получил должность научного сотрудника в Карнеги-Меллон, где продолжал работать в том числе и над лазерными принтерами.

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

«Код, который Столлман хотел получить, был новаторской разработкой, настоящим воплощением искусства. Спролл написал его за год до того, как пришёл в Карнеги-Меллон, или около того», – рассказывает Рид. Если это действительно так, то налицо недоразумение: Столлману нужна была программа, которую МТИ использовал уже долгое время, а не какая-та новая её версия. Но в том кратком разговоре ни слова не говорилось о каких-либо версиях.

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

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

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

Даже через 20 лет спустя он всё ещё чувствует отголосок того гнева и разочарования. Инцидент в Карнеги-Меллон стал поворотным пунктом в жизни Ричарда, столкнув его лицом к лицу с новой этической проблемой. В следующие месяцы вокруг Столлмана и прочих хакеров Лаборатории ИИ произойдёт масса событий, по сравнению с которыми те 30 секунд гнева и разочарования в Карнеги-Меллон покажутся сущими пустяками. Тем не менее, Столлман уделяет особое внимание этому инциденту. Он был первым и наболее важным пунктом в той череде событий, что превратили Ричарда из одинокого хакера, интуитивного противника централизованной власти, в радикального евангелиста свободы, равенства и братства в программировании.

«Это было моё первое столкновение с соглашением о неразглашении, и я скоро понял, что люди становятся жертвами таких соглашений, – уверенно говорит Столлман, – Такими жертвами стали я и мои коллеги из Лаборатории».

Позже Ричард пояснил: «Если бы он отказал мне по личным мотивам, это трудно было бы назвать проблемой. Я бы мог в ответ посчитать его придурком, и на этом всё. Но его отказ был безличным, он дал мне понять, что не будет сотрудничать не только со мной, но и вообще с кем бы то ни было. И это не только создавало проблему, но и делало её по-настоящему огромной».

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

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

Но появление нового принтера поставило под угрозу эту свободу. Аппарат работал хорошо, даром что периодически жевал бумагу, но не было никакой возможности изменить его поведение под нужды коллектива. С точки зрения индустрии программного обеспечения, закрытие программы принтера было необходимым шагом в бизнесе. Программы стали таким ценным активом, что компании больше не могли себе позволить публиковать исходные коды, особенно когда в программах воплощались некие прорывные технологии. Ведь тогда конкуренты могли бы практически бесплатно скопировать эти технологии для своих продуктов. Но с точки зрения Столлмана, принтер был Троянским Конём. После десятка лет неудачных попыток распространения «проприетарных» программ, для которых запрещена свободная раздача и модификация кода, именно такая программа внедрилась в обитель хакеров самым коварным способом – под личиной подарка.

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

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

Память об этом уроке Ричард твёрдо сохранит и в беспокойные 80-е, когда многие из его коллег по Лаборатории уйдут работать в другие компании, связав себя соглашениями о неразглашении. Наверное они говорили себе, что это неизбежное зло на пути к работе над самыми интересными и заманчивыми проектами. Однако для Столлмана само существование NDA ставит под сомнение моральную ценность проекта. Что может быть хорошего в проекте, пусть даже технически увлекательном, если он не служит общим целям?

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

Вот в чём важность истории с лазерным принтером и инцидента в Карнеги-Меллон. Без всего этого, как признаёт Столлман, его судьба пошла бы по совсем другому пути, балансируя между материальным достатком коммерческого программиста и окончательным разочарованием в жизни, проведённой за написанием никому не видимого программного кода. Не было бы никакого смысла размышлять об этой проблеме, в которой остальные даже не видели проблему. И самое главное, не было бы той живительной порции гнева, что придала Ричарду энергию и уверенность для движения вперёд.

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

«Я решил, что никогда не сделаю ни одного человека жертвой, которой стал однажды сам».

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

 , ,

Deleted
()

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

Новости — Документация
Группа Документация

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

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

 , , ,

Deleted
()