Медовый горшок, увы, смоляная яма
Когда Гейтс и Аллен набрели на идею продавать программное обеспечение, они столкнулись с критикой как хакеров так и здравомыслящих воротил бизнеса. Хакеры понимали, что программное обеспечение было всего лишь информацией, и возражали против идеи его продавать. Эти возражения были отчасти морального свойства. Хакеры вышли из научного и университетского мира, где императивом служит свободный доступ общественности к результатам чьей-либо работы. Они были также частично практическими; как вы можете продать нечто, что может легко быть скопировано? Дельцы, которые полярны с хакерами во многих вопросах, имели свои собственные возражения. Привычные к продаже тостеров и страховых полисов, они естественно с трудом понимали, как длинный набор единиц и нулей мог бы стать популярным продуктом.
Очевидно Microsoft эти возражения были до фонаря, как и «Яблоку». Но возражения остались. Самым хакерским из всех хакеров, абсолютным хакером (UR-hacker — сокращение от Ultima Ratio — последний довод — прим. перев.) как таковым, был и остался Ричард Столлман, которого так взбесила практика продажи программного обеспечения, что в 1984-м (тот же год, когда Macintosh поступил в продажу) он пришел и основал нечто называнное Фонд Сфободного Программного Обеспечения (FSF), в которым начали работу над чем-то типа GNU. Это самое GNU — сокращение от «GNU Не Unix», но это — шутка по большей части, поскольку GNU по сути своей и есть Unix. Из-за бодяги с торговой маркой («Unix» — торговая марка AT&T) они просто не могли заявить, чтобы воссоздают Unix, и типа, чтобы перестраховаться, всем сказали, что это вовсе не то, о чем все подумали. Вопреки несравненному таланту и драйву мистера Столлмана и других приверженцев GNU, их заява на создание свободного «Униха», чтобы конкурировать против Microsoft и «Яблочных ОС», была чем-то типа попытки выкопать еще одно метро чайной ложкой (в аббревиациях названий некоторых программ проекта FSF/GNU, традиционно присутствуют буквы YA — от yet another — прим. перев.). Пока, разумеется, всем не настал Linux, до которого я дойду чуть позже.
Но основная идея воссоздать операционную систему с листа была вполне озвучена и полностью осуществлена. Это было сделано много раз. И присуще самой природе операционных систем.
Операционные Системы, по правде говоря, не так уж необходимы. Нет причины почему достаточно упертый кодировщик не мог бы начинать с нуля каждый проект и писать свежий код, чтобы выполнять такие основные операции низкого уровня, как управление чтенем/записью головок дисковых накопителей и отображением отдельных пикселей на экране. Самые первые компьютеры программировались таким образом. Но так как почти каждой программе нужно выполнять те же основные операции, этот метод провел бы к обширному дублированию усилий разработчиков.
Нет ничего более тупого для хакеров, чем дублирование усилий. Первая и наиболее важная умственная привычка, которую люди вырабатывают в себе, когда они узнают как писать компьютерные программы, это стремление обобщать, обобщать, обобщать. Чтобы делать их код настолько модульным и гибким, насколько это вообще возможно, большие проблемы разбиваются на небольшие процедуры, которые могут многократно использоваться в других контекстах. Следовательно, разработка операционных систем, несмотря на свою техническую необязательность, была неизбежной. Поскольку по сути своей, операционная система не что иное, как библиотека, содержащая наиболее часто используюемый код, написанный один раз (и надо надеяться написанный хорошо) и далее доступный для каждого разработчика, которому оно надо.
Таким макаром, частная, закрытая, секретная операционная система является противоречием. Она идет вразрез с самой идеей операционной системы. И в любом случае невозможно сделать ее секретной. Исходный код, как строки текста подлинника, написанного программистами — может содержаться в секрете. Но ОС в целом является набором небольших подпрограмм, которые выполняет очень специфические, очень четко определенные виды работ. Естественно эти подпрограммы должны быть опубликованы, явно и точно, иначе ОС полностью бесполезна для программистов; они не смогут использовать те подпрограммы, если не получат полного и четкого понимания, какого дьявола эти подпрограммы делают.