-
Notifications
You must be signed in to change notification settings - Fork 17
/
chap09.tex
215 lines (119 loc) · 79.6 KB
/
chap09.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
%% Copyright (c) 2002, 2010 Sam Williams
%% Copyright (c) 2010 Richard M. Stallman
%% Permission is granted to copy, distribute and/or modify this
%% document under the terms of the GNU Free Documentation License,
%% Version 1.3 or any later version published by the Free Software
%% Foundation; with no Invariant Sections, no Front-Cover Texts, and
%% no Back-Cover Texts. A copy of the license is included in the
%% file called ``gfdl.tex''.
\chapter{Универсальная общественная лицензия GNU}
Весна 1985 года. Ричард Столлман выпускает первую программу проекта GNU -- использующую Lisp версию Emacs для Unix-систем. Пора было всерьёз поразмыслить над условиями её распространения, чтобы защитить её свободный статус, доработать условия вступления в коммуну Emacs.
Противоречия между свободой редактирования кода и авторскими правами копились ещё до истории с Gosmacs. Закон об авторском праве 1976 года намного шире охватил программное обеспечение. Раздел 102(b) этого закона гласил, что компании и отдельные люди могут сохранять за собой авторские права на конкретную форму кода, но не на общие алгоритмы и методы, воплощённые в этом коде. \footnote{Hal Abelson, Mike Fischer, Joanne Costello, \enquote{Software and Copyright Law,} (1997), \url{http://groups.csail.mit.edu/mac/classes/6.805/articles/int-prop/software-copyright.html}.}
Если привести как аналогию учебник алгебры, то авторское право защищает его текст, но не математические формулы или педагогические методы, что используются для изложения материала. Так что столлмановские условия использования кода оригинального Emacs не имеют юридической силы -- любой программист может написать аналог его редактора, использовав его идеи и функции. И программисты делают это сплошь и рядом. Gosmacs -- лишь одна из нескольких десятков причудливых имитаций оригинального Emacs, работающих на разных компьютерах.
Условия вступления в коммуну Emacs работают только в отношении кода оригинального Emacs, который написал сам Столлман. Даже если бы эти условия имели юридическую силу, они всё равно не распространялись бы на отдельно разработанные версии-имитации вроде Gosmacs. Создание несвободного Gosmacs совершенно неэтично с точки зрения движения за свободное ПО, потому что не уважает свободу пользователей, особенно если учесть, откуда взяты идеи, на которых построен Gosmacs.
Авторское право требует, чтобы программисты перед копированием кода спрашивали на это разрешения у автора программы. Новый закон также установил, что авторское право начинает действовать просто по факту обнародования кода, без всяких обозначений. Но обозначения начали появляться, потому что многие хакеры даже не подозревали об авторском праве и его изменениях.
Для Столлмана эти обозначения -- всё равно что флаги наступающей армии. На самом-то деле редко когда программист не заимствует код из других программ, но одним росчерком пера президент и правительство США дали возможность запрещать это делать. Также авторское право формализует неформальное общение. Теперь вместо живой встречи хакера с хакером на первый план выходит деловой контакт юриста с юристом. При таком положении вещей компании автоматически получают преимущество перед одиночками и группами энтузиастов. Многие говорят, что авторское право повышает качество кода, потому что программист ответственнее работает над продуктом, который подписан его именем, но в большинстве случаев рядом со значком авторского права пишут название компании, а не имя конкретного программиста. К тому же, у конкретного программиста всегда были возможности обозначить своё имя.
С другой стороны, Столлман ещё до создания проекта GNU заметил, что авторское право позволяет разработчикам давать широкую свободу в использовании кода своих программ, причём на определённых условиях. \enquote{Я видел много электронных писем с обозначением авторских прав и простыми лицензиями типа \enquote{разрешено дословное копирование}, -- вспоминает он, -- это воодушевляло}. Такие лицензии содержат одно условие -- не удалять лицензию при копировании. Ричард задумался: почему бы не пойти дальше? Например, создать такую лицензию, которая разрешает редактировать и раздавать код при условии, что лицензия остаётся неизменной.
Выходит, что использовать авторское право можно и в этичных целях. Весь вред от авторского права в ПО -- в его эгоистичном использовании, когда разработчик ограничивает свободу пользователя. Многие разработчики даже не представляют, что можно поступить иначе. Например, сделать программу свободной и защитить её свободу именно через авторское право.
В начале 1985 года Столлман выпускает GNU Emacs 16 с новой, основанной на авторском праве лицензией. Она разрешает пользователям редактировать код и раздавать его, но только под той же самой лицензией. Это значит, что разработчики модифицированных версий не получают на них неограниченного авторского права, ведь иначе они могут сделать свои версии несвободными, как это случилось с Gosmacs. Разработчики теперь обязаны оставить свой код свободным для копирования и редактирования. Так Столлман закрыл правовую брешь, через которую в мир свободного ПО мог бы пролезть собственнический код.
Новая лицензия Столлмана хоть и помогает формализовать общественный договор коммуны Emacs, но всё ещё, по словам Ричарда, слишком \enquote{неформальна} для широкого использования. После основания фонда свободного ПО Столлман консультируется со специалистами, чтобы создать более проработанную лицензию без возможных слабых в юридическом плане мест.
Один из таких специалистов -- Марк Фишер, бостонский адвокат в сфере авторского права, он долгое время консультирует Столлмана. \enquote{У Ричарда были очень жёсткие взгляды на то, как это всё должно работать, -- вспоминает Фишер, -- первое, что он хотел -- сделать программы максимально открытыми (наверное, на Фишера повлияли сторонники открытого кода, и потому он оговорился, ведь сам Столлман никогда не стремился сделать программы \enquote{открытыми}), второе -- побудить других к использованию таких же методов лицензирования}. Лицензию разрабатывали с прицелом на второе требование.
Только спустя годы люди осознали всю революционность этого требования. А сейчас Фишер работает со Столлманом над лицензией GNU Emacs и поначалу смотрит на неё, как на обычную сделку. Как будто обычный коммерческий договор по использованию компьютерной программы, текстового редактора. Однако вместо денег Столлман берёт с пользователей полный доступ к их модификациям кода. И вот это необычно и интересно, и потому так хорошо запоминается Фишеру.
\enquote{На мой взгляд, в то время такая цена была если не уникальна, то как минимум необычна}, -- говорит он.
В этой новой версии лицензии -- одно важное изменение старых принципов коммуны Emacs: разработчикам больше не нужно высылать каждое изменение кода лично Столлману, теперь можно просто публиковать любые версии по желанию. Одно из немногих изменений доктрины свободного ПО \enquote{срезало ценник} его использования. Отныне пользователи могут редактировать код и внедрять свои новшества без оглядки на Столлмана, и оставлять при себе те изменения, которые им не хотелось бы кому-то показывать.
По словам Ричарда, на этот шаг толкнул его личный дискомфорт от невольной роли Большого Брата, которой наделял его прежний общественный договор коммуны Emacs. Он понял, что несправедливо требовать от пользователей высылать ему каждую правку кода.
\enquote{Ни к чему требовать, чтобы люди публиковали каждое изменение, -- говорит Столлман, -- и чтобы они высылали эти изменения одному особенному разработчику. Централизация и привилегии противоречат идеям свободы и равноправия}.
1985 год -- вместе с очередной версией редактора GNU Emacs дебютирует универсальная общественная лицензия GNU Emacs. Столлман предлагает хакерам сообща отточить её формулировки. На призыв отзывается немало хакеров, среди них -- Джон Гилмор, консультант Sun Microsystems. У себя на работе Гилмор уже портировал (адаптировал) Emacs на операционную систему SunOS, корпоративную версию Unix, и опубликовал под лицензией GNU Emacs. Для Гилмора эта лицензия была не юридическим договором, а хакерским манифестом. \enquote{Раньше большинство лицензий были вольны в формулировках}, -- говорит он.
Для примера Гилмор ссылается на лицензию trn -- программы для чтения новостных лент, которую написал хакер Ларри Уолл в середине 80-х годов, автор Unix-утилиты patch и языка программирования Perl. Надеясь найти баланс между хакерской вежливостью и привилегиями автора, Уолл составил текст, который больше напоминал не лицензию, а набросок на маркерной доске:
\begin{quote}
(c) Ларри Уолл, 1985\\
Вы можете полностью или частично скопировать trn, если только не станете зарабатывать на этом деньги или выдавать себя за автора программы.\footnote{Trn Kit README, \url{http://stuff.mit.edu/afs/sipb/project/trn/src/trn-3.6/README}.}
\end{quote}
С одной стороны, подобные лицензии отражают хакерскую этику, с другой -- показывают, как трудно выразить свободную и бескомпромиссную суть этой этики на жёстком юридическом языке. Лицензией GNU Emacs Столлман не только закрыл лазейки для создания собственнических копий. Он выразил хакерскую этику в форме, одинаково понятной как хакеру, так и юристу.
Проходит очень немного времени, и в Usenet кипят обсуждения хакеров о способах \enquote{портировать} лицензию GNU Emacs на их собственные программы. В ноябре 1986 года Гилмор пишет Столлману электронное письмо -- предлагает отредактировать лицензию:
\begin{quote}
Наверное, стоит удалить слово \enquote{EMACS} из текста лицензии, заменив его словами \enquote{ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ} или как-то так. Мы надеемся, что очень скоро Emacs перестанет быть крупнейшей частью проекта GNU, и лицензия должна быть применима ко всем его составляющим.\footnote{Цитата из оригинального письма Джона Гилмора.}
\end{quote}
Гилмор -- не единственный с такими предложениями. К этому времени и сам Столлман работает над следующим важным компонентом проекта GNU -- отладчиком программ GDB. Чтобы выпустить его в свет, нужно будет отредактировать лицензию GNU Emacs так, чтобы она естественно выглядела и для GDB. Не то чтобы это большая работа, но наделать ошибок легко. Но только к 1989 году Ричард окончательно определяется, как должна выглядеть новая лицензия. Из неё нужно удалить все упоминания Emacs, и вообще любые привязки к какой-либо программе. И связь между программой и лицензией должна переместиться из текста лицензии в текст программы. Чтобы любой разработчик мог использовать эту лицензию для своей программы, нисколько не меняя текст лицензии. Так появляется GNU GPL, универсальная общественная лицензия GNU. Вскоре она становится официальной лицензией проекта GNU, то есть лицензией всех программ проекта.
В публикации GPL Ричард следует принятому среди разработчиков соглашению о нумерации версий: десятичные разряды для мелких изменений, целые разряды -- для крупных. Первая версия 1989 года получает обозначение 1.0, она содержит вводную часть политического характера:
\begin{quote}
Универсальная общественная лицензия разработана для того, чтобы обеспечить вам возможность свободно раздавать или продавать копии программ, получать исходный код при желании, изменять этот код или использовать его части в новых свободных программах, и для того, чтобы вы знали о том, что вы можете всё это делать.
Ради защиты ваших прав мы вынуждены ввести ограничения, которые запрещают кому-либо отказывать вам в этих правах или просить вас отказаться от них. Эти ограничения накладывают на вас определённые обязательства, если вы распространяете или изменяете программы, защищённые этой лицензией.\footnote{Richard Stallman, \enquote{GNU General Public License: Version 1,} (February, 1989), \url{http://www.gnu.org/licenses/old-licenses/gpl-1.0.html}.}
\end{quote}
GPL -- один из лучших хаков Столлмана. Он создал нечто общественное в собственническом законе об авторском праве. Также он показал определённое сходство программного кода и юридического языка. Вводная часть GPL несёт важное сообщение хакерам: не относитесь к закону об авторском праве с враждебным отрицанием, лучше смотрите на него, как на опасную систему, которую можно хакнуть.
\enquote{GPL разрабатывали так же, как разрабатывают свободный софт -- большим коллективом, который обсуждает структуру, сходясь или расходясь во мнениях, оттачивает проблемные места и смягчает тон формулировок ради более широкого признания, -- рассказывает юрист Джерри Коэн, который работал со Столлманом после Фишера, -- это очень эффективный процесс, и всего через несколько версий GPL вместо скептического и даже враждебного отношения получила широкое признание}.
В 1986 году, давая интервью журналу \textit{BYTE}, Столлман довольно красочно характеризует GPL. Он не только называет лицензию хакерским манифестом, но и говорит, что читатели могут \enquote{рассматривать её, как интеллектуальное джиу-джитсу, которое использует силу скопидомов программной индустрии против них самих же}.\footnote{David Betz, Jon Edwards, \enquote{Richard Stallman discusses his public-domain [\textit{sic}] Unix-compatible software system with \textit{BYTE} editors,} \textit{BYTE} (July, 1986). (Копия: \url{http://www.gnu.org/gnu/byte-interview.html}.)
Это интервью примечательно откровенностью, с которой Ричард описывает свои политические взгляды на заре проекта GNU. Благодаря ему можно отследить эволюцию риторики Столлмана.
Описывая цель создания GPL, он говорит в этом интервью: \enquote{Я пытаюсь изменить взгляды и подход людей к знаниям и вообще информации. Я считаю, что пытаться владеть знаниями, контролировать доступ людей к ним, запрещать людям делиться ими -- просто саботаж}.
Сравните это заявление со словами Ричарда в августе 2000 года: \enquote{Я призываю вас не использовать термин \enquote{интеллектуальная собственность} в своих мыслях и речах. Он приведёт вас к неправильному пониманию порядка вещей, потому что смешивает в единое целое авторское право, патенты и товарные знаки. А эти вещи настолько разные в своих проявлениях, что объединять их просто глупо. Если вы слышите, как кто-то говорит об \enquote{интеллектуальной собственности}, не беря её в кавычки -- сторонитесь этого человека, потому что его мышление смутно и запутанно}.
[РМС: Контраст между этими высказываниями показывает, что я научился осторожности в обобщениях. В наши дни я бы, наверное, не употреблял выражения \enquote{владение знаниями}, потому что это довольно широкое понятие. Но \enquote{владение знаниями} -- обобщение не того же сорта, что \enquote{интеллектуальная собственность}. Понимание разницы между авторским правом, патентами и товарными знаками очень важно для решения юридических проблем, связанных с владением знаниями. Патенты -- это прямые монополии на использование определённых знаний, это действительно одна из форм \enquote{владения знаниями}. Авторское право часто используется для прекращения обмена продуктами, которые воплощают в себе какие-то знания или объясняют их, и это уже совсем другое. Что касается товарных знаков, то они имеют очень отдалённое отношение к знаниям.]}
Годы спустя Столлман описывает создание GPL с меньшей агрессией. \enquote{Я думал о проблемах, которые затрагивали одновременно этику, политику и право. Я должен был попытаться сделать что-то, что могла бы поддержать существующая правовая система. Суть работы заключалась в том, чтобы создать основу нового общества, но я не был членом правительства, и потому не мог изменить законы. Я должен был встроить эту основу в нашу юридическую систему, которая вообще не была предназначена для подобных вещей}.
Однажды калифорнийский Unix-хакер и любитель научной фантастики Дон Хопкинс присылает Столлману руководство к микропроцессору Motorola 68000. Точнее, возвращает его обратно, потому что это руководство он когда-то взял у Ричарда. В качестве благодарности он украшает конверт несколькими наклейками, взятыми на научно-фантастическом конвенте. За одну из этих наклеек и цепляется взгляд Столлмана. На ней написано: \enquote{Авторское лево (L), все права защищены}. Ричарда озарило: вот как должен называться юридический механизм лицензии GNU! \enquote{Авторское лево}, копилефт, вывернутое наоборот авторское право, даже значок должен быть наоборот -- обратная буква \enquote{C} в кружочке. Это ироничное \enquote{копилефт} становится в фонде свободного ПО общепринятым обозначением любых лицензий, что \enquote{делают свободными программы и все их производные}.
Немецкий социолог Макс Вебер когда-то предположил, что все великие религии построены на \enquote{рутинизации} или \enquote{институциализации} откровения. Он утверждал, что каждая популярная религия -- это результат перевода божественного откровения или послания пророку в общественные, политические, этические механизмы, которые легче воспринимаются людьми и легче переносятся между культурами и эпохами.
Хотя GNU GPL, по сути, не религия, это всё же интересный пример подобной \enquote{рутинизации} в современном децентрализованном мире разработки софта. Отдельные программисты и целые компании лично к Столлману относятся далеко не с теплом и лояльностью, но после создания лицензии GPL тенденция меняется -- они охотно принимают условия контракта, выведенные Ричардом, как средство защиты для своих программ. И даже те, кто отвергает условия GPL за их слишком большую ограничительную силу, признают влияние Столлмана и созданной им лицензии.
Один из таких людей -- хакер Кит Бостик, который наблюдает за выходом GPL 1.0, работая в Калифорнийском университете Беркли. Отдел Бостика занимается разработкой Unix с конца 70-х годов, и уже успел приложить руку ко многим частям операционной системы, включая реализацию протокола TCP/IP, краеугольного камня современного интернета. Во второй половине 80-х годов создателю Unix -- компании AT\&T -- приходит в голову монетизировать Unix, взяв за основу BSD, академическую версию Unix от Беркли, над которой работает как раз отдел Бостика.
Код, который пишет Бостик с коллегами, закрыт почти для всех, потому что сильно смешан с собственническим кодом AT\&T. Копии системы Беркли раздаются только тем учреждениям, что имеют оригинальную лицензию на Unix от компании AT\&T. И теперь компания сильно повышает стоимость своей лицензии, что для академического использования слишком обременительно. Столлман подумал, что неплохо бы перевести операционную систему BSD под защиту проекта GNU, сделав её свободным программным обеспечением, но для этого ему нужно убедить Беркли очистить систему от кода AT\&T и принять лицензию GPL. Ричард встречается с руководителями разработки BSD и говорит им, что AT\&T -- не благотворительная организация, а коммерческая, и что неправильно дарить им результаты труда сотрудников университета Беркли. Он предлагает им отделить свой код и выпустить под свободной лицензией.
Бостик в качестве личного проекта занимается переносом последней версии BSD на компьютер PDP-11. Столлман в это же время делает регулярные вылазки на Западное побережье. Именно в этот период они очень плотно общаются друг с другом. \enquote{Мне хорошо запомнилось, как мы с ним спорим об авторском праве, сидя у занятых рабочих станций нашего отдела, -- рассказывает Бостик, -- потом идём обедать и продолжаем спорить там}.
В итоге аргументы Столлмана оказывают эффект, хотя и неожиданным для него образом. В июне 1989 года сотрудники Беркли отделяют свой код сетевой подсистемы от остальной системы AT\&T, и начинают раздавать его под свободной лицензией, основанной на авторском праве. Условия этой лицензии крайне либеральны. Всё, что она требует -- отдать должное университету, указав его в описании производной программы. \footnote{\enquote{Пункт о надоедливых почестях} позже перерос в проблему. В поисках мягких альтернатив GPL многие хакеры брали лицензию BSD, заменяя \enquote{Калифорнийский университет} на свои имена или названия своих вузов. И когда свободные программы использовали ряд других свободных программ под этими лицензиями, их описания превратились в длинные рекламные списки с десятками имён и названий. В 1999 году, после многолетних просьб Столлмана, Калифорнийский университет исключил этот пункт из текста лицензии. Подробности -- в статье \enquote{Проблема лицензии BSD} на сайте \url{http://www.gnu.org/philosophy/bsd.html}.} BSD разрешает создавать и свободные, и собственнические версии оригинальных программ, в отличие от GPL. Впрочем, использовать опубликованную подсистему BSD Networking в отдельности нельзя, потому что это лишь часть операционной системы, отвечающая за работу с сетью. А дополнить её до полноценной операционной системы может лишь несвободный код AT\&T.
Ещё несколько лет Бостик с другими сотрудниками Калифорнийского университета разрабатывают недостающие части будущей операционной системы BSD. Хотя их здорово задержали юридические тяжбы с Unix Systems Laboratories -- подразделением AT\&T, которое сохранило за собой права на Unix -- их работа заканчивается к исходу 80-х годов. Но ещё до того многие сетевые утилиты Беркли просочились в создаваемую Столлманом систему GNU.
\enquote{Я думаю, вряд ли бы мы продвинулись так далеко без влияния GNU, -- говорит Бостик, вспоминая то время, -- они определённо послужили сильным толчком для нас, подав отличную идею}.
К концу 80-х годов GPL становится центром притяжения сообщества свободного программного обеспечения. Программу необязательно лицензировать под GPL, чтобы сделать свободной -- история сетевых утилит BSD тому подтверждение -- но лицензирование программы под GPL несёт определённое послание. \enquote{Мне кажется, само появление GPL вдохновило людей на то, чтобы задуматься о создании свободного софта и выборе подходящей лицензии}, -- говорит Брюс Перенс, автор популярной Unix-утилиты Electric Fence и будущий лидер команды разработчиков Debian GNU/Linux. Через несколько лет после появления GPL он отказывается от доморощенной лицензии для Electric Fence в пользу лицензии Столлмана. \enquote{Технически это очень легко сделать}, -- говорит Перенс.
Программиста Рича Морина, который когда-то с изрядным скепсисом смотрел на первый анонс проекта GNU, впечатляет бурный рост популярности GPL среди программистов. В 80-е годы он был лидером группы пользователей системы SunOS, и он в том числе регулярно рассылал ленты, на которые записывал подборки лучших бесплатных или свободных программ. Морину часто приходилось звонить или писать авторам этих программ, чтобы уточнить ситуацию с авторскими правами -- действовали ли они в отношении программы, или она была общественным достоянием. В районе 1989 года он замечает, что почти все лучшие программы защищены GPL. \enquote{Моя работа дистрибьютора становится намного легче -- я вижу буквы GPL и знаю, что мне не придётся тратить время на звонки}, -- вспоминает Морин.
Раньше он действительно тратил много своего личного времени на эти уточнения, собирая программы для группы пользователей SunOS, и потому начал брать с членов группы плату в качестве компенсации. Теперь же, когда программы почти сплошь перешли на GPL, у него высвобождается масса времени, и работа начинает приносить чистую прибыль. Почуяв хорошую возможность, Морин превращает своё хобби в бизнес -- открывает компанию Prime Time Freeware.
Такое коммерческое использование нисколько не противоречит философии свободного ПО. \enquote{Когда мы говорим о свободном софте, мы имеем в виду именно свободу, а не цену}, -- объясняет Столлман во вводной части GPL. В конце 80-х он формулирует это выразительнее: \enquote{Не думай о свободе ради свободного входа на концерт, думай о свободе ради свободы слова}.
Бизнес пока ещё игнорирует призывы и разъяснения Ричарда. Но для некоторых предпринимателей свобода программного обеспечения начинает ассоциироваться со свободой рынка. Уберите возможность владения софтом, и вы получите мир, в котором маленькие компании могут свободно конкурировать с гигантами вроде Microsoft и Oracle.
Майкл Тиманн, программист и аспирант Стэнфордского университета -- один из первых предпринимателей, постигших эту концепцию. В 80-е годы Тиманн следит за проектом GNU, как начинающий джазмен следит за кумиром-наставником, но в 1987 году выходит компилятор GCC, и Тиманн осознаёт огромный потенциал свободного ПО. Он называет GCC \enquote{атомной бомбой}, для него выход компилятора -- доказательство решимости Столлмана.
\enquote{Подобно тому, как любой писатель грезил написанием великого американского романа, любой программист 80-х грезил написанием великого американского компилятора, -- вспоминает Тиманн, -- и вдруг Столлман делает это. Всех словно валом ледяной воды окатило}.
\enquote{GCC разом обнулил все мечты, -- вторит ему Бостик, -- ни у кого не было собственного компилятора, пока не появился GCC}.
Тиманн даже не пытается конкурировать со Столлманом, он берёт работу за основу. Оригинальная версия GCC состоит из 110 тысяч строк кода, что немало, но этот код удивительно прост для понимания. Настолько прост, что уже через 5 дней изучения кода GCC Тиманн начинает портировать его на процессор National Semiconductor 32032, и всего через неделю заканчивает работу. Весь следующий год он играется с компилятором, создаёт первый \enquote{родной}, прямой компилятор для языка программирования C++, научив GCC также хорошо работать с языком C++, как с языком C (тогда уже был компилятор С++, но он был, во-первых, несвободным, а во-вторых -- сначала переводил код С++ в код С, и только потом -- в машинный код). Однажды, читая лекцию в Bell Labs, Тиманн видит некоторых разработчиков AT\&T, которые изо всех сил пытались создать то же самое, что и он.
\enquote{Я спросил, сколько людей работает над родным компилятором, -- вспоминает Тиманн, -- организатор сказал, что это секретная информация, но добавил, что я могу окинуть взглядом аудиторию, чтобы получить приблизительный масштаб. А в аудитории было 40 или 50 человек, не меньше}.
Тут Тиманн задумывается. \enquote{Я работал над проектом всего полгода, -- рассказывает он, -- я понял, что такой эффективный программист и такой эффективный код просто обязаны вознаграждаться свободным рынком}
Ещё больше вдохновляет его \textit{Манифест GNU}, в котором поощряется коммерческое использование свободного ПО, в пику алчности производителей собственнических программ. GPL устраняет монополии в сфере программного обеспечения и позволяет даже мелким компаниям зарабатывать на обслуживании клиентов. Это может быть и техническая поддержка, и обучающие курсы, и расширение функциональности по персональным заказам.
В своём эссе 1999 года Тиманн отдаёт должное влиянию столлмановского \textit{Манифеста}. \enquote{Он читался как социалистическая листовка, но я видел в нём кое-что другое -- скрытый бизнес-план}. \footnote{Michael Tiemann, \enquote{Future of Cygnus Solutions: An Entrepreneur's Account,} \textit{Open Sources} (O'Reilly \& Associates, Inc., 1999): 139, \url{http://www.oreilly.com/catalog/opensources/book/tiemans.html}.}
Этот бизнес-план далеко не открытие -- сам Столлман понемногу зарабатывал таким образом во второй половине 80-х годов. Но Тиманн собирается поднять это на новый уровень. Вместе с Джоном Гилмором и Дэвидом Винаяком Уоллесом он основывает консалтинговую компанию по настройке программ GNU -- Cygnus Support (где слово \enquote{Cygnus} это неформальный рекурсивный акроним \enquote{Cygnus, Your GNU Support} или \enquote{Cygnus, ваша поддержка в GNU}). Первый контракт компания заключает в феврале 1990 года, а уже к концу года совокупный объём контрактов достигает \$725,000.
Полноценной операционной системе GNU, к которой стремится Столлман, нужны не только инструменты разработчика. В 90-е годы проект GNU в лице Брайана Фокса разрабатывает командный интерпретатор или \enquote{оболочку} -- расширенную замену Bourne Shell, которую нарекли BASH, Bourne Again Shell (это звучит подобно \enquote{born again shell} т.е. \enquote{возрождённая оболочка}). Далее выходят: интерпретатор языка PostScript под названием GhostScript, обозреватель документации Texinfo, стандартная библиотека языка С, нужная для запуска программ, программа электронных таблиц Oleo (\enquote{лучше всяких дорогих электронных таблиц}), и даже неплохая программа для игры в шахматы. Но больше всего внимания программисты GNU уделяют всё-таки инструментам разработчика, по понятным причинам.
GNU Emacs, GDB и GCC -- это \enquote{большая тройка} инструментов разработчика, но ими GNU-инструменты для программистов 80-х годов не ограничиваются. К 1990 году проект GNU уже располагает утилитой автоматизации сборки Make, генератором синтаксических анализаторов Bison (GNU-версия YACC), утилитой для построчного разбора Gawk, и ещё доброй дюжиной утилит для программистов. Как и GCC, все эти программы не привязаны к одной аппаратной платформе, они разработаны с прицелом на множество компьютерных архитектур. Перенося программы на другие платформы, Столлман сотоварищи одновременно расширяют их функциональность.
Говоря об универсальном подходе проекта GNU, Морин приводит в пример утилиту GNU Hello, которая сама по себе ничего не делает, но в то же время очень помогает программистам, объясняя им, как нужно оформлять программы для GNU. \enquote{Это стандартная программа \enquote{Привет, мир!} из пяти строчек на языке С, оформленная так, как того требует проект GNU, -- рассказывает Морин, -- в ней используется и Texinfo, и configure, и всё остальное, чем располагает проект GNU для лёгкого переноса программ между аппаратными платформами и программными окружениями. Такая маленькая и одновременно такая важная программа, затрагивающая не только программы Столлмана, но и весь софт проекта GNU}.
По словам Столлмана, техническое улучшение Unix-программ не столь важно, как их замещение свободными аналогами. \enquote{Каждый компонент я либо могу усовершенствовать, либо не могу, -- рассказывает Ричард в интервью \textit{BYTE}, -- в какой-то степени мне удаётся извлекать пользу из повторной реализации, делая системы намного лучше. В некоторой степени благодаря тому, что я долгое время работал в этой области и на многих системах. У меня предостаточно идей о том, как это всё улучшить}.\footnote{Richard Stallman, \textit{BYTE} (1986).}
Впрочем, к концу 80-х годов программы GNU получают прекрасную репутацию именно в техническом аспекте, наравне с репутацией Столлмана, чьи блестящие инженерные навыки, наработанные в Лаборатории ИИ, вообще становятся легендой в сообществе разработчиков.
Джереми Эллисон, который в конце 80-х пользовался системой SunOS, а позже основал свободный проект Samba, вспоминает об этой репутации Столлмана со смехом. На исходе 80-х годов Эллисон начинает пользоваться редактором Emacs. Вдохновлённый открытой моделью разработки, он отправляет Столлману фрагмент исходного кода, но Столлман отклоняет его.
\enquote{Моё состояние можно было описать заголовком для \textit{Onion}: \hspace{0.01in}\enquote{Бог ответил на молитву ребёнка! Он сказал: нет.}\hspace{0.01in}}
Проект GNU испытывает успех за успехом в разработке программ и библиотек пользовательского уровня, но самое трудное дело ещё только предстоит -- создать ядро операционной системы, этого программного регулировщика, что контролирует доступ к процессору, памяти и другим аппаратным ресурсам.
Столлман решает идти уже опробованным путём -- поискать уже существующие ядра систем, которые можно было бы адаптировать для GNU. Обозреватель проекта GNU -- \enquote{GNUsletters} -- в конце 80-х сообщает о том, что этот подход натолкнулся на проблемы, подобные тем, что были при попытке сделать GCC из Pastel. В январе 1987 года он пишет о намерении проекта GNU взять за основу ядро TRIX, разработанное в МТИ. На самом деле, Столлман не строит таких намерений, потому что работает над GCC, а позже он говорит, что TRIX придётся слишком сильно переделывать, и потому это ядро не подходит. Выпуск обозревателя за февраль 1988 года сообщает, что внимание проекта GNU переключилось на легковесное микроядро Mach, разработанное в Карнеги-Меллон. Микроядро Mach несвободно, но его разработчики в частной переписке изъявили готовность перевести его под свободную лицензию, что и делают в 1990 году. Проект GNU наконец-то может работать над ядром операционной системы. \footnote{Источник: \enquote{Hurd History,} \url{http://www.gnu.org/software/hurd/history.html}.}
Задержки в разработке ядра -- лишь одна из проблем, давящих на Столлмана в это время. В 1989 году компания Lotus Development Corporation подаёт в суд на конкурентов -- компании Paperback Software International и Borland -- за их копирование пунктов меню популярной программы Lotus 1-2-3 Spreadsheet. Это судебное разбирательство вкупе с ожесточённой битвой Apple и Microsoft за элементы дизайна угрожает будущему проекта GNU. Конечно, эти события не угрожают GNU напрямую, но показывают, что судебные иски за похожую функциональность вполне реальны, а вся суть программ GNU как раз в воссоздании функциональности несвободных программ. Такие иски могут сковать всю культуру разработки программ, погрузив её в стагнацию. Столлман решает действовать. Вместе с несколькими профессорами он через студенческую газету МТИ \textit{The Tech} призывает к саботажу судебных исков и бойкоту Lotus и Apple. После чего сам следует призыву -- помогает организовать группу под названием \enquote{Лига свободы программирования}, чтобы провести акции протеста у офисов компании Lotus.
Эти акции не проходят незамеченными. \footnote{Согласно пресс-релизу \enquote{Лиги свободы программирования}, протест заметили, главным образом, благодаря шестнадцатеричной песне, которую пели участники акции:
\begin{verse}
1-2-3-4, \enquote{нет} юристам-рэкетирам\\
5-6-7-8, программировать не бросим\\
9-A-B-C, мы одержим верх в конце\\
D-E-F-0, ваш дизайн -- сплошная боль\\
\end{verse}}
Индустрия программного обеспечения сильно изменилась. Основное поле битвы между корпорациями незаметно переместилось от операционных систем к пользовательским приложениям. Стараясь создать свободную операционную систему, проект GNU безнадёжно отстал от тех, кто гнался за актуальностью и успехом. Глядя на то, как Столлман возится с группой для борьбы с судебными исками в области дизайна, многие задумываются, не отжил ли своё фонд свободного ПО.
Однако у Столлмана есть стратегическая причина для создания такой группы -- он хочет привлечь на свою сторону разработчиков несвободного ПО. Расширение авторского права на элементы дизайна угрожает многим производителям собственнических программ так же сильно, как и разработчикам свободного ПО. Эти производители, конечно, вряд ли поддержат фонд свободного ПО, но в \enquote{Лиге свободы программирования} для них нет ничего отталкивающего. И поэтому же Ричард максимально быстро передаёт управление Лигой другим людям.
В 1990 году благотворительный фонд Макартуров награждает Столлмана так называемым \enquote{грантом гения} размером в \$240,000, который выплачивается в виде стипендии на протяжении 5 лет. Хотя фонд не озвучивает причину своих грантов, скорее всего, это признание важности проекта GNU и связанной с ним философии свободного ПО. Грант избавляет Столлмана от ряда проблем насущных. В частности, он позволяет Ричарду оставить консультации, которыми он зарабатывал себе на жизнь в 80-е годы, и полностью сконцентрироваться на задачах свободы программного обеспечения.
Также выплачиваемая стипендия позволяет ему восстановить полноценную регистрацию, которая нужна для голосования. В 1985 году дом Столлмана сгорел, оставив его без места регистрации. Пепел пожара испортил большинство его книг, и очистить их было невозможно. С того времени Ричард обитает в Техносквере и для избирательной комиссии считается бездомным.\footnote{Reuven Lerner, \enquote{Stallman wins \$240,000 MacArthur award,} MIT, \textit{The Tech} (July 18, 1990), \url{http://the-tech.mit.edu/V110/N30/rms.30n.html}.} \enquote{Избирательная комиссия Кембриджа не хотела признавать адрес Техносквера моим личным адресом, -- вспоминает Столлман, -- это упомянули в газетной статье о моём награждении стипендией Макартуров, после чего проблема решилась}.\footnote{Michael Gross, \enquote{Richard Stallman: High School Misfit, Symbol of Free Software, MacArthur-certified Genius} (1999).}
Но важнее всего то, что награждение стипендией Макартуров привлекло к Столлману внимание прессы, его чаще приглашают на мероприятия, и Ричард на этих мероприятиях и в прессе продвигает идеи GNU и свободного ПО, предупреждает об опасности патентов на софт и судебных исков в области дизайна.
Одна из поездок на такие мероприятия неожиданным образом решила долгую проблему с завершением операционной системы GNU. В апреле 1991 года Столлман приезжает в финский Политехнический университет Хельсинки. Среди слушателей в аудитории сидит 21-летний студент Линус Торвальдс, который в то время занимался своей программой, ядром операционной системы. Этому ядру суждено будет стать долгожданной недостающей деталью свободной операционной системы.
Торвальдс, придя на мероприятие из соседнего Хельсинкского университета, смотрит на Столлмана с удивлением. \enquote{Я впервые в жизни увидел стереотипного хакера, длинноволосого и бородатого, -- вспоминает Торвальдс в своей автобиографии 2001 года, -- у нас в Хельсинки я таких не встречал}. \footnote{Линус Торвальдс, Дэвид Даймонд, \textit{Просто удовольствия ради: Рассказ нечаянного революционера} \url{http://lib.ru/LINUXGUIDE/torvalds_jast_for_fun.txt}. Эта книга довольно точно рассказывает о жизни Торвальдса, но не очень точна в отношении Столлмана. Например, в ней говорится, что Столлман \enquote{хочет, чтобы у всего был открытый исходный код}, или что он \enquote{жалуется на людей, не использующих GPL}. На самом деле же Столлман продвигает свободное ПО, а не открытое, и признаёт этичными все свободные лицензии, а не только GPL.}
Линуса не слишком впечатляет \enquote{социально-политическая} сторона выступления Столлмана, его внимание привлекает кое-что другое: утверждение Ричарда, что ни один программист не пишет безошибочный код, и что даже если отдельные пользователи не хотят улучшать программу под свои задачи, любую программу можно значительно улучшить коллективно. Свободно делясь кодом программ, хакеры ставят совершенствование ПО выше любых эгоистичных мотивов вроде алчности или тщеславия.
Как и многие программисты его поколения, Торвальдс вырос не на мейнфреймах типа IBM 7094, а на разнородном ассортименте домашних компьютеров. Став студентом, Линус перешёл от программирования на персональном компьютере к программированию для Unix на университетском MicroVAX. Это восхождение по компьютерной лестнице даёт Торвальдсу несколько иное представление об ограничениях доступа. Если для Столлмана это были бюрократия и иерархия, то для Торвальдса -- географическое положение и суровая северная зима. Ведь чтобы поработать на Unix, Линусу приходилось идти по морозному городу в университет. Поэтому очень скоро он начинает искать способы дотянуться до Unix из своей тёплой домашней комнаты.
Торвальдс использует Minix, компактную несвободную (на тот момент, сейчас Minix -- свободное ПО) операционную систему, которую разработал профессор Амстердамского свободного университета Эндрю Таненбаум в качестве учебного пособия. Она включала в себя несвободный компилятор Free University Compiler Kit и ряд утилит вроде тех, к написанию которых Таненбаум издевательски пригласил Столлмана в 1983 году. \footnote{Таненбаум в своей книге \textit{\enquote{Операционные системы: разработка и реализация}} называет Minix операционной системой, но в книге обсуждается только та часть системы, что соответствует ядру в Unix. У общепринятого термина \enquote{операционная система} есть 2 значения, и одно из них в терминологии Unix означает только ядро. А в Minix эта часть состоит из микроядра и запущенных на нём серверов, что напоминает систему GNU Hurd с ядром Mach. Микроядро в совокупности с серверами соответствуют ядру Unix. Но книга Таненбаума под словом \enquote{ядро} подразумевает только микроядро и ничего больше.}
Minix вполне умещается в память IBM PC 386 Торвальдса, но учебная система из него получается куда лучше, чем повседневная. Также в Minix нет эмулятора терминала, который отражал бы настоящий терминал, и позволял бы Линусу подключаться к MicroVAX из дома.
В начале 1991 года Торвальдс начинает разрабатывать эмулятор терминала, используя Minix, но разрабатывает так, чтобы эмулятор запускался как самодостаточная программа, не требуя запуска Minix. В процессе разработки он даёт эмулятору права на доступ к оборудованию компьютера. Линус называет свой эмулятор \enquote{GNU/Emacs мира эмуляторов терминала}. \footnote{Просто удовольствия ради: Рассказ нечаянного революционера} \url{http://lib.ru/LINUXGUIDE/torvalds_jast_for_fun.txt}
Поскольку в Minix нет многих важных функций, Торвальдс добавляет их к своему эмулятору терминала, создавая что-то вроде ядра, сравнимого с Minix, только монолитного. Окрылённый успехом, он запрашивает в посвящённой Minix группе Usenet копию стандартов POSIX, которым следуют все совместимые с Unix ядра.\footnote{Позже стандарты POSIX расширили, включив в них множество возможностей командной строки, но в 1991 году их ещё не было.} А несколько недель спустя Линус уже имеет на руках полноценное ядро, которое он собирает в систему с некоторыми программами GNU, адаптировав их к своему ядру. После чего размещает в Usenet сообщение, напоминающее сообщение Столлмана 1983 года:
\begin{quote}
Привет всем, кто использует minix-
Я делаю операционную систему (бесплатную) для 386 (486) АТ-клонов (это просто хобби, я не замахиваюсь на масштабы и профессионализм gnu). Занимаюсь этим с апреля, и сейчас она почти готова. Хотелось бы услышать ваши отзывы, что вам нравится/не нравится в minix, потому что моя ОС чем-то похожа на неё (та же физическая структура файловой системы (по практическим причинам) в том числе). Я уже портировал bash (1.08) и gcc (1.40)\ldots \footnote{Просто удовольствия ради: Рассказ нечаянного революционера}
\end{quote}
Сообщение не вызывает большого интереса, и через несколько месяцев Торвальдс выкладывает на FTP-сервер версию 0.01 своего ядра -- самую раннюю версию, пригодную для опубликования. Ядру нужно дать название. У себя на компьютере Линус хранит его под названием Linux, следуя принятому в среде Unix обычаю давать названия с буквой \enquote{икс} на конце. Под таким же названием он выкладывает ядро на FTP-сервер, но через пару часов, считая такое название слишком \enquote{эгоистичным}, меняет его на Freax. Администратор FTP-сервера видит это и меняет название обратно на Linux.
Торвальдс сказал, что пишет бесплатную операционную систему, и его сравнение с GNU подсказывает, что он имел в виду полноценную операционную систему. На самом деле, он написал ядро, очень чистое и простое. У Линуса не было нужды писать что-то сверх этого, потому что он знал, что разработчики проекта GNU и других свободных проектов уже создали все нужные компоненты. Проект GNU хотел законченную операционную систему, а это значило, что все созданные компоненты должны были работать друг с другом. Работая над ядром, Торвальдс (и его единомышленники впоследствии) именно это и сделал -- адаптировал свободные программы к своему ядру.
Первый Linux публикуется не как свободное ПО -- его лицензия куда жёстче GPL, она не позволяет коммерческое распространение, потому что Линус опасается, что какая-нибудь компания подсуетится и отберёт у него ядро. Но по мере того, как комплект программ GNU и ядра Linux набирает популярность, Линус понимает, что коммерческое распространение пойдёт на пользу сообществу, и перестаёт беспокоиться насчёт возможного захвата своего детища. Он задумывается о смене лицензии Linux.
Для сборки Linux нужен компилятор GCC, и этот компилятор используется в связке с Linux для сборки других программ, но это не требует лицензировать ядро под GNU GPL. Тем не менее, Торвальдс чувствует себя обязанным вернуть долг сообществу за использование GCC. Как он сам говорил позже: \enquote{Я взобрался на плечи гигантов}. Линус задумывается о том, что случится, когда люди обратят свои взоры на него, ища такой же отдачи, какую получил от сообщества он сам. Рассказывая о своих тогдашних мыслях, Торвальдс вторит словам Роберта Чассела из фонда свободного ПО спустя десятилетия:
\begin{quote}
Вы вкладываете в своё детище шесть месяцев своей жизни, хотите сделать его доступным и что-то получить за это, но не хотите, чтобы люди эксплуатировали его. Я хотел, чтобы люди могли читать Linux и сколько угодно редактировать его. Но также я хотел быть уверенным, что увижу, что они сделают с моим творением. Я хотел всегда иметь доступ к исходному коду, чтобы видеть, какие улучшения они делают, и делать эти улучшения самому.\footnote{Просто удовольствия ради: Рассказ нечаянного революционера} \url{http://lib.ru/LINUXGUIDE/torvalds_jast_for_fun.txt}
\end{quote}
Подходит время выпустить Linux 0.12, первую версию ядра, полноценно работающую с GCC. Торвальдс решает внести свой вклад в движение за свободное ПО. Он удаляет старую лицензию Linux и берёт вместо неё GPL. Три года разработчики Linux готовят ядро к версии 1.0 -- тщательно прилаженное ко всем остальным программам проекта GNU, чтобы получить полноценную свободную операционную систему. Она состоит почти полностью из программ GNU, которые дополняются ядром Linux. Торвальдс и его друзья, впрочем, смущённо называют систему \enquote{Linux}.
К 1994 году эта система завоёвывает такое уважение в компьютерном мире, что некоторые деловые обозреватели задаются вопросом, не дал ли Торвальдс маху, когда лицензировал своё ядро под GPL. В первом номере \textit{Linux Journal} издатель Роберт Янг берёт у Линуса интервью, в котором спрашивает, не сожалеет ли он о своём отказе от частного владения исходным кодом Linux. Торвальдс отвечает однозначно: \enquote{Я и сейчас уверен, что это на сто процентов верное решение, одно из лучших моих проектных решений}. \footnote{Robert Young, \enquote{Interview with Linus, the Author of Linux,} \textit{Linux Journal} (March 1, 1994), \url{http://www.linuxjournal.com/article/2736}.}
Своё решение Линус принял совсем не из-за преклонения перед Столлманом или фондом свободного ПО, и это значит, что GPL отправилась в свободное плавание, начала жить своей жизнью. Через несколько лет взрывной процесс разработки Linux навевает на Столлмана воспоминания о Emacs. Только сейчас этот взрыв порождён не программным хаком вроде Control-R, а возможностью запуска Unix-подобной операционной системы на персональном компьютере. Вне зависимости от мотивов, получен именно тот результат, что нужен был: полнофункциональная операционная система, целиком состоящая из свободных программ.
Судя по первоначальному сообщению в группу comp.os.minix, Торвальдс даже не думал считать своё творение чем-то большим, чем временное решение в ожидании ядра Hurd. Он просто оказался последним в той длинной череде взрослых детей, что разбирали и собирали всякие интересные штуки ради удовольствия. Но Линус считает, что тому ещё незрелому ему хватило мудрости отказаться от личного владения и принять GPL.
\enquote{Может, я и не прозрел в тот момент, -- пишет Торвальдс, вспоминая о речи Столлмана в Политехническом университете, -- но какой-то просвет в его словах всё-таки увидел}.