Free as in Freedom російською: Глава 1. Фатальний принтер

Фатальний принтер

Бійтеся данайців, дари, що приносять.
– Вергілію, «Енеїда»

Знову новий принтер зажував папір.

Годиною раніше Річард Столлман, програміст Лабораторії Штучного
Інтелекту МТІ (Лабораторії ІІ), надіслав 50-сторінковий документ
друкуватися на офісному принтері, і поринув у роботу. А зараз Річард
відірвався від справи, підійшов до принтера і побачив найнеприємніше видовище:
замість довгоочікуваних 50 надрукованих сторінок у лотку лежали лише 4
готовий лист. Та й ті явно належали до якогось чужого документа.
Файл Річарда на 50 сторінок сплутався з чиїмось недодрукованим файлом
хитросплетіння офісної мережі, і принтер пасував перед цією проблемою.

Чекати, доки машина виконає покладену на неї роботу – звичайна справа
для програміста, і Столлману можна було поставитися до цієї проблеми
стоїчно. Але одна справа, коли ви даєте машині завдання і займаєтесь
своїми справами, і зовсім інше — коли вам доводиться стояти поряд із
машиною та контролювати її. Далеко не вперше Річарду доводилося
стояти перед принтером і стежити за тим, як сторінки вилазять одна за одною
однієї. Як всякий добрий технар, Столлман дуже високо цінував
ефективність роботи пристроїв та програм. Не дивно, що цей
черговий зрив робочого процесу порушив у Річарда гаряче бажання
залізти у нутрощі принтера і навести там належний порядок.

Але, на жаль, Столлман був програмістом, а не інженером-механіком. Тому
залишалося лише спостерігати за сторінками, що вилазять, і роздумувати про
інших шляхах вирішення набридлої проблеми.

Адже цей принтер співробітники Лабораторії ІІ зустрічали із захопленням і
натхненням! Його подарувала компанія Xerox, це була її проривна
технологія - модифікація швидкого світлокопіра. Принтер не лише робив
копії, але й перетворював віртуальні дані з файлів офісної мережі в
чудово виглядають документи. У цьому апараті відчувався зухвалий
інноваційних дух знаменитої Xerox лабораторії в Пало-Альто, він був
провісником революції у настільному друку, що повністю перевернула
всю промисловість до кінця десятиліття.

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

У всіх сенсах, подарунок Xerox був пропозицією, від якої неможливо
відмовитись.

Однак згодом захоплення пішли на спад. Як тільки принтер стали
навантажувати максимум, виявилися проблеми. Найсильніше дратувало
те, що апарат надто охоче зажовував папір. Інженерне мислення
програмістів швидко виявило корінь проблеми. Справа в тому що
світлокопіри зазвичай вимагають постійної присутності людини поруч.
Навіть для того, щоб поправляти папір у разі потреби. І
коли Xerox взявся за перетворення світлокопіра на принтер, інженери
компанії не звернули уваги на цей момент та зосередилися на
вирішення інших, більш нагальних для принтера проблем. Говорячи інженерним
мовою, у нового принтера Xerox постійна участь людини виявилася
спочатку вбудовано механізм.

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

Навряд чи Столлман був єдиним у Лабораторії ІІ, хто помітив
проблему, але ще й розмірковував над її рішенням. За кілька років до
цього Річарду довелося вирішити схожу проблему з колишнім принтером. Для
цього він на персональному робочому комп'ютері PDP-11 відредагував
програму, яка працювала на мейнфреймі PDP-10 та керувала принтером.
Саму проблему зажовування паперу Столлману вирішити не вдалося.
він вставив код, який змушував PDP-11 час від часу
перевіряти стан принтера. Якщо апарат зажовував папір, програма
просто розсилала на робочі PDP-11 оповіщення на кшталт «принтер жує
папір, потрібне ремонт». Рішення виявилося ефективним – оповіщення
йшло безпосередньо користувачам, які активно користувалися принтером, так
що його витівки з папером найчастіше припинялися негайно.

Звичайно, це було рішення ad-hoc – те, що програмісти називають
«милицею», але милиця вийшов досить витончений. Він не виправляв
проблему в механізмі принтера, але робив найкраще з того, що можна було
зробити – налагоджував інформативний зворотний зв'язок користувача та машини.
Декілька додаткових рядків коду економили працівникам Лабораторії
ІІ по 10-15 хвилин робочого часу щотижня, позбавивши їх від
необхідності постійно бігати перевіряти принтер. З точки зору
програміста, рішення Столлмана трималося на колективному розумі
лабораторії.

Згадуючи ту історію, Річард казав: «Отримавши таке повідомлення, ви не
повинні були сподіватися, що принтер виправить хтось ще. Вам потрібно
було просто встати та піти до принтера. Через хвилину чи дві після того,
як принтер починав жувати папір, до нього приходили двоє-троє
співробітників. Хоч хтось із них достеменно знав, що треба робити».

Подібні спритні рішення були візитною карткою Лабораторії ІІ та її
програмістів. Взагалі, найкращі програмісти Лабораторії дещо
презирливо ставилися до терміна «програміст», віддаючи перевагу йому
сленгове «хакер». Це визначення точніше відбивало суть роботи, яка
включала різні заняття, від витончених інтелектуальних забав до
кропітких покращень програм та комп'ютерів. Також у ньому відчувалося
старомодне переконання про американську винахідливість. Хакеру
недостатньо просто написати працюючу програму. Хакер намагається
проявити міць свого інтелекту перед собою та іншими хакерами, поклавши
на себе куди складніші і важчі завдання – наприклад, зробити
програму одночасно максимально швидкої, компактної, потужної та
красивою.

Компанії на кшталт Xerox навмисно дарували свою продукцію великим товариствам
хакерів. Це був розрахунок на те, що хакери почнуть нею користуватися,
прив'яжуться до неї і потім прийдуть працювати в компанію. У 60-ті роки і на
зорі 70-х хакери часто писали настільки якісні та корисні
програми, що виробники охоче розповсюджували їх серед своїх
клієнтів.

Таким чином, зіткнувшись з новим принтером Xerox, що жує папір,
Столлман одразу подумав провернути з ним свій старий трюк – «хакнути»
програму керування апаратом. Однак його чекало неприємне відкриття
– до принтера не додавалася жодної програми, принаймні такої
формі, щоб Столлман чи інший програміст міг її прочитати та
редагувати. До цього моменту більшість компаній вважали хорошим
тоном давати файли з вихідним кодом - зрозумілим для людини текстом,
який давав повну інформацію про програмні команди та відповідні
функціях машини. Але Xerox цього разу надав програму тільки в
скомпільованому, бінарному вигляді. Якщо програміст спробував би прочитати
ці файли, він побачив би тільки нескінченні потоки нулів та одиниць,
зрозумілі машині, але з людині.

Є програми, які називаються «дизассемблери», вони перекладають
одиниці та нулі в низькорівневі машинні інструкції, але розібратися, що
ці інструкції роблять - дуже довгий і важкий процес
"зворотною розробкою". На зворотну розробку програми принтера легко
могло піти набагато більше часу, ніж на сумарне виправлення зажеваної
папери протягом найближчих п'яти років. Річард був недостатньо відчайдушним,
щоб зважитися на такий крок, і тому він просто відклав проблему в
довгий ящик.

Недружня політика 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 і взагалі всю культуру,
яка сприяє обміну особистої свободи на якісь блага та
переваги.

«Я вирішив, що ніколи не зроблю жодної людини жертвою, якою став
одного разу сам».

Джерело: linux.org.ru

Додати коментар або відгук