Это перевод страницы, написанной на английском языке.

Интервью в с Ричардом Столменом в “BYTE”

Ричард Столмен обсуждает свою совместимую с Unix программную систему, находящуюся в общественном достоянии, с редакторами “BYTE” (июль 1986 г.).


Ричард Столмен взял на себя, пожалуй, самый смелый в истории проект по разработке свободного программного обеспечения — систему GNU. В “Манифесте GNU”, опубликованном в номере “Журнала доктора Добба” за март 1985 года, Столмен описал GNU как “полную программную систему, совместимую с Unix, которую я пишу с тем, чтобы я смог отдать её свободной каждому, кто может её использовать… Как только GNU будет написана, каждый сможет получить хорошее системное программное обеспечение так же свободно, как воздух. (GNU — это сокращение, обозначающее “GNU — это не Unix”; буква g произносится).

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

BYTE: Мы читали ваш “Манифест GNU” в номере “Журнала доктора Добба” за март 1985 года. Что произошло с тех пор? Было ли это действительно началом, и насколько вы с тех пор продвинулись?

Столмен: Публикация в “Журнале доктора Добба” не была началом проекта. Я написал “Манифест GNU”, когда собирался начать проект, в качестве предложения производителям компьютеров профинансировать его. Они участвовать не захотели, и я решил, что вместо того, чтобы тратить своё время на выискивание фондов, я должен потратить его на написание программ. Манифест был опубликован примерно через полтора года после того, как я его написал, как только я начал распространять GNU EMACS. С тех пор в дополнение к тому, что я сделал GNU EMACS более полным и заставил его работать на гораздо большем числе компьютеров, я почти закончил оптимизирующий компилятор C и всё остальное программное обеспечение, необходимое для запуска программ на C. Это включает отладчик уровня исходного текста, у которого есть много функций, которых нет у других отладчиков уровня исходного текста для Unix. К примеру, у него есть переменные внутри отладчика, чтобы вы могли сохранять значения, а также история всех выведенных значений, чрезвычайно облегчающая обход списковых структур.

BYTE: Вы закончили редактор, который теперь широко распространён, и заканчиваете компилятор.

Столмен: Я рассчитываю закончить его в октябре этого года.

BYTE: А как насчёт ядра?

Столмен: Сейчас я планирую начать с ядра, написанного в MIT и выпущенного недавно в свет в предположении, что я использую его. Это ядро называется TRIX; оно основано на удалённом вызове процедур. Мне ещё нужно добавить совместимость со многими особенностями Unix, которой у него пока нет. Над этим я ещё не начинал работать. Я пока заканчиваю компилятор, а потом приступлю к ядру. Мне также, видимо, придётся переписать файловую систему. Я намереваюсь сделать её устойчивой к сбоям, просто записывая блоки в нужном порядке так, что структура диска никогда не нарушается. И ещё я собираюсь ввести номера версий. У меня есть сложная схема согласования номеров версий с тем, как люди обычно используют Unix. Нужно, чтобы была возможность указывать имена файлов без номера версии, но в то же время надо, чтобы номер версии можно было указывать в явном виде; и то, и другое должно работать с обычными программами Unix, никак не изменёнными для учёта этой особенности. Мне кажется, у меня есть схема осуществления этого, но только проверка на деле покажет, будет ли это работать.

BYTE: Не могли бы вы вкратце описать, чем GNU как система будет превосходить другие системы? Мы знаем, что одна из ваших целей — создать нечто совместимое с Unix. Но, по крайней мере, в плане файловой системы, вы уже сказали, что собираетесь пойти дальше и создать нечто лучшее.

Столмен: Компилятор C будет выдавать лучший код и работать быстрее. Отладчик лучше. Каждую часть я могу улучшить, а могу и не улучшить. Но единого ответа на этот вопрос нет. В некоторой степени я выигрываю от повторной реализации, что делает многие системы намного лучше. В некоторой степени это оттого, что я провёл уже много времени в этой отрасли и работал над многими другими системами. И поэтому у меня есть много идей для реализации. Одна из сторон, с которой она будет лучше, это то, что практически всё в системе будет работать с файлами любого размера, строками любого размера и с любыми символами в них. Система Unix очень плоха в этом отношении. Отсутствие произвольных пределов — это отнюдь не новый принцип проектирования программ. Это просто было стандартной практикой при программировании Unix — устанавливать их везде, возможно, просто потому, что они писали её для очень маленького компьютера. Единственное ограничение в системе GNU — это когда ваша программа исчерпывает доступную память из-за того, что пытается обработать слишком большое количество данных, которые негде разместить.

BYTE: А это вряд ли случится, если у вас есть виртуальная память. Просто вам может понадобиться вечность для получения решения.

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

BYTE: Не могли бы вы рассказать кое-что о том, для работы на каких конкретно типах машин и сред предназначен GNU EMACS? Сейчас он работает на VAX'ах; перенесли ли его в какой-нибудь форме на персональные компьютеры?

Столмен: Я не совсем понимаю, что вы подразумеваете под персональными компьютерами. К примеру, Sun — это персональный компьютер? GNU EMACS требует как минимум мегабайта свободной памяти, а желательно больше. Его, как правило, используют на машинах с виртуальной памятью. За исключением различных технических проблем в небольшом числе компиляторов C, GNU EMACS будет работать почти на любой машине с виртуальной памятью и достаточно новой версией Unix, и на большинстве из них он уже работает.

BYTE: Пробовал ли кто-либо переносить его на компьютеры Atari или Macintosh?

Столмен: У Atari 1040ST пока недостаточно памяти. Я полагаю, что на следующей машине Atari он будет работать. Я также думаю, что у будущих машин Atari появится в той или иной форме переадресация памяти. Конечно, я не разрабатываю программы для работы на компьютерах, преобладающих сегодня. Когда я запустил этот проект, я знал, что он займёт несколько лет. Поэтому я решил, что не хочу делать систему хуже из-за того, что возьму на себя дополнительные трудности, заставляя её работать в ограниченной современными параметрами среде. Так что вместо этого я решил, что собираюсь писать её так, как это кажется наиболее естественно и хорошо. Я уверен в том, что через пару лет будут преобладать машины достаточного размера. На самом деле рост размеров памяти происходит так быстро, что меня удивляет, как медленно большинство людей начинают использовать виртуальную память; мне кажется это чрезвычайно важным.

BYTE: Я полагаю, что люди не считают это необходимым для однопользовательских машин.

Столмен: Они не понимают, что один пользователь не означает одну программу. Безусловно, для любой системы типа Unix важно иметь возможность запускать много разных процессов одновременно, даже если за компьютером только вы один. GNU EMACS мог бы работать на машине без виртуальной памяти с достаточным количеством памяти, но тогда вы не могли бы как следует работать с остальной системой GNU или Unix.

BYTE: Насколько в GNU EMACS развит Лисп? Мне показалось, что его можно использовать как средство для изучения Лиспа.

Столмен: Это, безусловно, возможно. GNU EMACS содержит полную, хотя и не очень мощную систему Лиспа. Она достаточно мощна для написания команд редактора. Она не сравнится, скажем, с системой Общего Лиспа, которую можно применять даже для системного программирования, но она обладает всем, что должно быть в Лиспе.

BYTE: Есть ли у вас прогноз о том, когда вы сможете распространять работающую среду, в которой, если мы установим её на наши машины или рабочие станции, мы сможем делать что-нибудь осмысленное с помощью только тех программ, которые вы будете распространять?

Столмен: Трудно сказать. Это может случиться в течение года, но, конечно, может занять и больше. Возможно, это займёт и меньше времени, но теперь это не слишком вероятно. Я думаю, что закончу компилятор в течение месяца или двух. Единственная большая часть работы, которую мне предстоит выполнить кроме этого, это ядро. Сперва я предполагал, что на GNU уйдёт около двух лет, но уже прошло два с половиной года, а я всё ещё не закончил. Отчасти причиной задержки было то, что я потратил много времени на работу над одним компилятором, который оказался тупиком. Мне пришлось полностью его переписать. Другая причина — что я потратил так много времени на GNU EMACS. Сначала мне казалось, что мне вообще не придётся этого делать.

BYTE: Расскажите нам о вашей схеме распространения программ.

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

BYTE: И как вы собираетесь гарантировать это?

Столмен: Я делаю это, заявляя авторские права на программы и добавляя замечание, дающее людям явное разрешение копировать программы и править их, но только в том случае, если они будут распространять их не иначе, как на тех же условиях, что и я. Вы не обязаны распространять изменения, которые вы внесёте в любую из моих программ — вы можете сделать это только для самого себя, и вы не обязаны кому-нибудь её отдавать или кому-нибудь об этом рассказывать. Но если вы передаёте её кому-то ещё, вы должны делать это на тех же условиях, которые использую я.

BYTE: Получаете ли вы какие-нибудь права на исполняемый код, полученный на выходе компилятора C?

Столмен: Законы об авторском праве не дают мне исключительных прав на результаты работы компилятора, так что они не дают мне возможности говорить об этом, да я и не пытаюсь. Я не симпатизирую людям, которые разрабатывают несвободные продукты при помощи любого компилятора, но пытаться запретить им разрабатывать их этим компилятором не представляется особенно полезным, так что я не собираюсь этого делать.

BYTE: Относятся ли ваши ограничения и к тем, кто берёт куски ваших программ для создания чего-то другого?

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

BYTE: В известной мере вы привлекаете людей к такому образу мышления, предоставляя им все эти интересные средства, которые они могут использовать, но только если они принимают вашу философию.

Столмен: Да. Это можно также понимать как использование законодательства, установленного запирателями программ, против них. Я использую это для защиты общества от них.

BYTE: Поскольку производители не пожелали финансировать проект, кто, по вашему мнению, будет использовать систему GNU, когда она будет готова?

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

Другие могут использовать систему GNU просто потому, что она превосходна технически. Например, мой компилятор C производит почти наилучший код, какой я когда-либо видел на выходе компилятора C. А GNU EMACS, согласно общему мнению, намного превосходит программы коммерческих конкурентов. И никто не финансировал GNU EMACS, но все им пользуются. Поэтому я думаю, что многие будут использовать остальную систему GNU из-за её технических достоинств. Однако я бы писал систему GNU, даже если бы не мог сделать её технически лучше, потому что я хочу, чтобы она была лучше в социальном отношении. На самом деле проект GNU — это проект социальный. Он пользуется техническими средствами для того, чтобы изменить общество.

BYTE: В таком случае для вас довольно важно, чтобы люди приняли GNU. Создать эти программы, чтобы отдать людям — не просто научный эксперимент. Вы надеетесь, что они изменят принципы работы индустрии программного обеспечения.

Столмен: Да. Одни говорят, что никто и никогда не станет использовать её, потому что на ней нет привлекательного фирменного знака, другие говорят, что что она, наверное, чрезвычайно важна, и все захотят пользоваться ею. Я не могу сказать, что произойдёт на самом деле. Я не знаю никакого другого способа попытаться избавиться от безобразий того поля деятельности, в котором я нахожусь, поэтому я должен заняться именно этим.

BYTE: Осознаёте ли вы последствия? Вы, очевидно, понимаете, что это очень важное политическое и социальное заявление.

Столмен: Это перемена. Я пытаюсь изменить подход людей к знаниям и к информации вообще. Я считаю, что попытки завладеть знаниями, попытки контролировать, разрешено ли людям пользоваться ими, или попытки запретить людям обмениваться ими — это вредительство. Это деятельность, обогащающая человека, который ею занимается, за счёт обеднения всего общества. Один человек получает один доллар уничтожением ценностей стоимостью в два доллара. Я думаю, что человек с совестью стал бы делать такого рода вещи, возможно, только под страхом смерти. И конечно, люди, которые делают это, довольно богаты; я могу только заключить, что они не щепетильны. Я бы предпочёл видеть, как люди получают вознаграждение за написание свободных программ и за содействие людям в их использовании. Я не хочу наблюдать, как получают вознаграждение люди, которые пишут несвободные программы, потому что это в действительности не идёт на благо обществу. Принцип капитализма состоит в идее, что людям удаётся зарабатывать деньги, производя вещи, а поэтому у них есть стимул делать то, что полезно, автоматически, так сказать. Но это не работает по отношению к владению знаниями. У них есть стимул делать не то, что действительно полезно, а делать то, что действительно полезно, стимула нет. Я считаю нужным отметить, что информация отличается от таких материальных объектов, как автомобили или буханки хлеба, потому что люди могут копировать её и обмениваться ею самостоятельно и, если никто не пытается остановить это, они могут изменять её и улучшать применительно к своим условиям. Это людям полезно. Но это не верно по отношению к буханкам хлеба. Если у вас есть одна буханка хлеба, и вам нужна ещё одна, вы не можете просто положить свою буханку в копировальщик хлеба. Вы не можете сделать ещё одну, не пройдя все стадии изготовления первой. Поэтому не имеет значения, разрешено ли копировать хлеб — это невозможно.

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

Но это не верно по отношению к компьютерным программам. Это также не верно для кассет с магнитной лентой. Это отчасти не верно для книг в наше время, но по-прежнему верно то, что для большинства книг дороже и, без сомнения, труднее сделать ксерокопию их, чем купить, а результат по-прежнему менее привлекателен. Сейчас мы переживаем такой период, когда ситуация, делавшая авторское право безвредным и приемлемым, переходит в ситуацию, в которой авторское право станет вредным и невыносимым. Так что люди, на которых клевещут, называя “пиратами”,— это фактически люди, которые пытаются делать нечто полезное, что им запретили делать. Законы об авторском праве целиком и полностью созданы для того, чтобы помогать людям получить полный контроль над использованием некоторой информации для своей личной выгоды. Но они не рассчитаны на то, чтобы помогать тем, кто хочет гарантировать доступность информации в обществе и не давать другим обкрадывать общество. Я считаю, что закон должен выделять класс трудов, принадлежащих обществу, который отличается от общественного достояния в том же смысле, в каком общественный парк отличается от содержимого мусорного бака. Он существует не для того, чтобы его забирал, кто угодно; он существует для того, чтобы всем можно было им пользоваться, но никому не мешая. Любой член общества, лишённый производной работы от какого-то труда, принадлежащего обществу, должен иметь возможность отстоять свои права в суде.

BYTE: Но разве пираты не заинтересованы в получении копий программ только для пользования ими, а не потому, что хотят использовать эти знания для производства чего-то лучшего?

Столмен: Я не вижу в этом существенной разницы. Чем больше людей пользуются программой, тем больше она даёт обществу. У вас есть буханка хлеба, которую можно съесть один раз, а можно миллион раз.

BYTE: Некоторые пользователи покупают коммерческие программы, чтобы получить поддержку. Как ваша схема распространения предполагает предоставление поддержки?

Столмен: Я подозреваю, что этих пользователей ввели в заблуждение, и они не понимают, в чём дело. Безусловно, иметь поддержку полезно, но когда они начинают думать о том, какое отношение это имеет к продаже программ или к тому, что программы несвободны, они путаются. Нет гарантий, что несвободная программа получит хорошую поддержку. То, что продавцы обещают предоставить поддержку, не означает, что от неё будет хоть какая-то польза. Кроме того, предприятие может закрыться. На самом деле, люди считают, что GNU EMACS поддерживается лучше, чем коммерческие EMACS'ы. Одна из причин — то, что я, по-видимому, лучший хакер, чем люди, написавшие другие EMACS'ы, но другая причина состоит в том, что у всех есть исходные тексты, и существует так много людей, заинтересованных в том, чтобы понять, как делать с ним разные вещи, что вам даже не придётся искать поддержки у меня. Даже простая бесплатная поддержка, состоящая в исправлении мной ошибок, о которых мне сообщают, и включение этого в следующий выпуск, даёт людям хороший уровень поддержки. Вы всегда можете нанять кого-то решить для вас какую-нибудь проблему, а когда программы свободны, у вас есть рынок с конкуренцией за поддержку. Вы можете нанять кого угодно. Я поставляю список услуг с EMACS'ом, список людей с номерами телефонов и суммами, которые они берут за предоставление поддержки.

BYTE: Вы собираете их исправления ошибок?

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

BYTE: То есть люди не могут конкурировать за поддержку на основании того, что они знают решение некоторой проблемы, которого больше никто не знает.

Столмен: Нет. Они могут конкурировать на основании того, что они умны, а значит скорее других отыщут решение вашей проблемы, или на основании более глубокого на настоящий момент понимания общих проблем, или лучшего умения объяснить, что вам нужно делать. Это все способы конкурировать. Они могут постараться работать лучше, но не могут активно мешать своим конкурентам.

BYTE: Мне кажется, это похоже на покупку автомобиля. Вам совсем не обязательно возвращаться к первоначальному производителю за поддержкой или техническим обслуживанием.

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

BYTE: Они все дублируют усилия, пытаясь решить проблемы независимо.

Столмен: Да. Вот ещё один довод, который поможет посмотреть на проблему несвободной информации с социальной точки зрения. Подумайте о кризисе страхования ответственности. Чтобы получить какую-то компенсацию от общества, потерпевший должен нанять адвоката и поделиться с ним деньгами. Это глупый и неэффективный способ помочь людям, ставшим жертвами несчастного случая. И примите во внимание всё то время, которое люди тратят в давке, чтобы оттеснить своих конкурентов. Подумайте о ручках, упакованных в большие картонные коробки, которые стоят больше ручки — только для того, чтобы гарантировать, что ручку не украдут. Разве не было бы лучше, если бы мы просто разложили бесплатные ручки на каждом углу? Подумайте также обо всех этих контрольных постах для оплаты проезда, которые тормозят дорожное движение. Это гигантское социальное явление. Люди находят способы делать деньги, мешая обществу. Когда они могут помешать обществу, они могут получать деньги за то, чтобы они оставили людей в покое. Расточительство, неотделимое от владения информацией, будет становиться всё более и более заметным, и в конечном счёте создаст разницу между утопией, в которой никто не должен работать для того, чтобы жить, потому что вся работа делается роботами, и таким миром, как наш, где каждый тратит уйму времени на повторение того, что делает ближний.

BYTE: Как, например, написание предупреждений об авторском праве в программах.

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

BYTE: Циник мог бы поинтересоваться, как вы заработаете себе на жизнь.

Столмен: Консультациями. Когда я консультирую, я всегда оставляю за собой право раздавать то, что я написал в процессе консультации. Я также могу зарабатывать деньги на жизнь рассылкой по почте копий свободных программ, написанных мной или другими людьми. Многие присылают по 150 долларов за GNU EMACS, но теперь эти деньги идут в Фонд свободного программного обеспечения, который я основал. Фонд не платит мне зарплаты, потому что это не в его интересах. Вместо этого он нанимает других людей работать над GNU. До тех пор, пока я могу зарабатывать консультациями, я считаю, что так будет лучше всего.

BYTE: Что в данный момент находится на ленте официального дистрибутива GNU?

Столмен: Сейчас лента содержит GNU EMACS (одна версия подходит для всех компьютеров); Bison, программу, заменяющую YACC; MIT Scheme, сверхупрощённый диалект Лиспа профессора Сусмена; и Hack, игру об исследовании подземелий, похожую на Rogue.

BYTE: Поставляется ли печатное руководство в комплекте с лентой?

Столмен: Нет. Печатные руководства стоят 15 долларов каждое, или копируйте их сами. Сделайте копии этого интервью и обменивайтесь ими тоже.

BYTE: Как получить копию?

Столмен: Напишите по адресу: Free Software Foundation, 675 Massachusetts Ave., Cambridge, MA 02139.

[Текущий адрес (с 2005 года):]
Free Software Foundation, 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Телефон: +1-617-542-5942
Факс: +1-617-542-2652]

BYTE: Что вы собираетесь делать после того, как закончите с системой GNU?

Столмен: Ещё не знаю. Иногда я думаю, что продолжу делать то же самое в других областях программного обеспечения.

BYTE: Так это только первый из целого ряда штурмов программной индустрии?

Столмен: Я надеюсь. Но возможно, что всё, чем я стану заниматься, это жить лёгкой жизнью, немного работая, чтобы только прожить. Мне незачем жить на широкую ногу. А в остальное время я могу искать интересных людей для общения или обучения у них вещам, которые я не умею делать.