Unix: Сага о POSIX или Введение в POSIX'ивизм.
Книга о работе в POSIX-совместимых системах разного рода. Предназначена для пользователей (в том числе и начинающих).
Содержание
- Преамбула
- Открытость, свобода и халява
- Кое-что об ОС, Unix'ах, Linux'ах и BSD
- Вопросы истории POSIX'ивизма
- Вечные истины POSIX-систем
- Истина первая, или почему Linux не Windows
- Истина вторая, или как научиться плавать
- Истина третья, или три кита POSIX'ивизма
- Истина четвертая: терминалы, режимы, интерфейсы
- Истина пятая, или in command veritas
- Истина шестая: рецепты и принципы
- Истина седьмая, или самая главная
Предметом всего дальнейшего изложения будут почти исключительно операционные системы, их утилиты и приложения, относимые к категориям программ открытых (Open Sources - буквально программы с открытыми исходными текстами) и свободных (Free Software, что в данном контексте имеет значение "свободно распространяемые").
Понятия программ открытых (Open Sources) и свободных программ (Free Software) близки как по букве, так и по духу, но не идентичны, ибо сосуществуют как бы в разных, хотя и пересекающихся, плоскостях. Кроме того, и то, и другое явление тесно соприкасается с понятием открытых систем (Open Systems).
И потому для начала следует прояснить вопрос о том, что такое открытость и свобода, каково их соотношение друг с другом. Кроме того, большинство из упоминаемых далее программ в определенном смысле бесплатны, так что стоит остановиться и на взаимоотношении открытости, свободы и той бесплатности, которая выражается этим сладким словом "халява", столь милым сердцу россиянина (да и вообще выходца с бывших рублевых пространств).
Определиться с понятиями открытости и свободы программ тем более важно, что они часто служат источником недоразумений, основанных на незнании существа вопроса и его истории, буквализме перевода соответствующих английских терминов и прочих причинах информационного характера. На чем, в свою очередь, подчас базируется прямое или косвенное передергивание, выражающихся в типичной подмене понятий, когда теплое путается (осознанно или неосознанно) с мягким.
Сразу оговорюсь, что все, описанное далее в этом разделе, основано на документах движений Open Sources и Free Software Foundation (FSF), а также публичных высказываниях их лидеров. Однако я излагаю свое понимание предмета, которое отнюдь не обязано совпадать ни с одним из первоисточников. Каковые, не будучи марксизмом, являются не догмой - руководством, и не столько к действию, сколько к размышлению.
Начнем с понятия Open Sources Software, как наиболее, с моей точки зрения, общего. Это в первую очередь термин чисто технический, и применяется к программам, чьи исходные тексты принципиально общедоступны без дизассемблирования и прочих "хакерских" приемов. Подчеркну - принципиально, ибо форма доступа к исходникам может быть самой разной: платной или бесплатной, безусловной или с соблюдением определенных условий (например, дальнейшегонераспространения или некоммерческого использования). Смысл же общедоступности - в том, что любой человек, придя с улицы и выполнив указанные условия (заплатив деньги, или согласившись с ограничениями на распространение), получает исходныетексты программы.
В этом контексте Open Sources противопоставляется программам закрытым. То есть тем, исходные тексты которых не распространяются вовсе, или распространяются среди определенного круга - коммерческих партнеров, разработчиков или, скажем,правительственных организаций. И потому, например, декларированное не так давно открытие кодов Windows - именно для правительственных организаций (в данном случае правильно было бы сказать по нашински - для компетентных органов) не делает эту систему открытой: некий произвольный индивидуум (или предприятие) все равно не может получить доступ к исходникам Виндов по своему желанию.
Тем, кто помнит времена развитого (и всякого прочего) социализма, будет ясна аналогия: Open Sources можно уподобить материалам, опубликованным в открытой, как тогда говорили, печати (обратите внимание на совпадение терминов), закрытый же софт - материалам "Для служебного пользования" (ну и прочим "Секретным" и "Сов.секретным"). То есть для ознакомления с первыми было достаточно желания потребителя (от цены отвлечемся - даже газету "Правда" и при социализме бесплатно не раздавали), со вторыми - требовалось разрешение тех же компетентных органов. И не важно, что в качестве последних мог выступать один орган - директор предприятия, да и давалось это разрешение практически кому угодно. Главное, чтоб этом нужно было просить по установленной форме. А в компетенции разрешающего органа было - "Разрешить. Иван Иваныч". Или - "Не разрешить. Иван Иваныч"...
Таким образом, понятием Open Sources определяется первая степень свободы - свободы изучения исходников. Рискуя повториться, подчеркну: отрытые исходники сами по себе не подразумевают ни свободы распространения, ни бесплатности оного. Хотя с первой связаны почти неразрывно. Свидетельством тому судьба всех проектов, исходники которых открывались: либо они становились истинно свободными, либо - закрывались обратно.
Вторая степень свободы определяется понятием свободного софта - Free Software, что не следует путать ни с Freeware, ни с Free Software Foundation, о котором я скажу попозже. Это понятие - более узкое, нежели Open Sources Software, и охватывает аспекты использования и распространения программ. Оно базируется на знаменитых принципах свободного софта, сформулированных Ричардом Столлменом (Richard M. Stollman, известный в миру как RMS), основоположник движения за свободный софт вообще и FSF (Free Software Foundation - организация движения за открытые исходники) в частности: свободе использования, свободе изучения и модификации, свободе распространения.
Свобода использования подразумевает, что копия (конкретный экземпляр) любой программы из категории Free Software, приобретенная пользователем (как - пока не важно, об этом еще пойдет речь) становится, подобно любому другому товару, в соответствие с законами людскими и Божьими (которые не следует путать с государственными законами), а также - просто здравым смыслом, полной его собственностью. И может быть использована по его усмотрению - установлена на один компьютер, или на энное их количество, на локальную машину или на сетевой сервер, продана за углом, подарена и так далее. Повторяю, речь в данном тезисе идет именно о конкретном экземпляре на некоем носителе - пользователю вольно этот самый носитель засунуть себе в... ящик стола, прибить на стенку или использовать в качестве подставки под пивную кружку.
Свобода изучения и модификации подразумевает следующий шаг - пользователь вправе изучать устройство программы, выявлять в ней ошибки (а кто видел безошибочную программу?) и исправлять оные, вносить любые изменения, какие ему покажутся нужными, адаптировать под свои задачи, и так далее. Очевидно, что реализовать это право он может только при наличии непременного условия - доступа к исходным текстам. И именно поэтому Free Software - лишь частный случай понятия Open Sources.
Наконец, свобода распространения относится уже не к правам на экземпляр программы, а к условиям ее тиражирования. То есть пользователь имеет право копировать программу FreeSoftware и распространять ее любым угодным ему способом: раздавать в переходе метро, или продавать, причем - за любые деньги, в которые он оценит свои усилия по тиражированию, амортизацию своего оборудования и прочие накладные расходы. Разумеется, в рамках действующего по сему поводу законодательства данной страны -но к софту как таковому это отношения уже не имеет.
В сущности, на свободу распространения Free Software накладывается только два ограничения, также напрямую с природой предмета распространения не связанные, и вытекающие из других общепринятых в цивилизованном мире норм. Первое ограничение есть следствие авторского права в его исконном, неимущественном, понимании (как возникающего вследствие факта создания автором произведения). И оно запрещает распространителю приписать себе авторство, в данном случае - объявить себя разработчиком продаваемой (или раздаваемой) программы.
Второе же ограничение базируется на понимании свободы как таковой (не по Марксу, опять же, а по здравому смыслу) - то есть запрещении ограничивать свободу других. И потому распространитель не вправе запретить пользователю воспользоваться теми же правами, что и он сам - правом свободного использования, изучения, модификации и распространения, в том числе и за немерянные деньги.
А где же здесь бесплатность (в смысле халявы), резонно спросите вы меня? А нигде, столь же резонно отвечу я вам. Потому что ни понятие Open Sources, ни понятие Free Software к понятию халявы никакого отношения не имеют. Каким бы способом вы ни приобретали свободную программу, вам придется заплатить: за трафик при получении по сети, за носитель, его оформление (печать лабелы, грубо говоря) и доставку при покупке на CD, за полиграфию упаковки и печатной документации при покупке коробочной версии, и так далее. Включая оплату накладных расходов распространителя (вплоть до, возможно, даже его затрат на рекламу). Короче говоря, за все то же, за что вы платите при покупке бутылки пива или автомобиля.
Другое дело, что при покупке Free Software вы платите только за это - и ни копейкой больше. Ни о какой оплате мифической интеллектуальной собственности речи быть не может. Даже в том случае, если распространитель продает собственный (или собственноручно доработанный) продукт.
И потому часто встречающееся сравнение типа: "копия Windows стоит (всего) 100 баксов, а дистрибутив Linux можно найти и за (ажно) 5 тысяч оных" - мягко говоря,некорректно. Потому что при покупке Windows, даже на CD из коробки, вы приобретаете не товар, а право на его использование, ограниченное теми условиями, какие заблагорассудится поставить разработчику. Конечно, ваше право - принять их или не принять (т.н. договор присоединения). Но во втором случае право на использование вами теряется.
В сущности, даже право собственности на носитель и его содержимое вами не приобретается - в большинстве случаев условия лицензионного соглашения запрещают не только продажу, аренду и т.д., но и дарение, или передачу "на попользоваться". Раньше в этих соглашениях бывали оговорки типа запрещения только одновременного использования приобретенного экземпляра программы (то есть ее можно поочередно юзать дома и на работе - лишь бы не там и там одновременно). Но в последнее время это признано, видимо, вредным либерализмом, и из обихода изъято.
Маленькое отступление: вообще мне все эти лицензии на проприетарный софт очень напоминают не "договор присоединения" (как это часто квалифицируется), а скорее перечень прав и обязанностей пассажира советского (да и российского) общественного транспорта. Где вы найдете множество фраз типа "пассажир обязан", пассажир должен", "пассажир не имеет права", и ни слова о том, что пассажир может рассчитывать хотя бы на то, что его довезут до конечной остановки ("Поезд дальше не пойдет, просьба освободить вагоны"). Хотя тоже - своего рода договор присоединения: не нравится - ходи пешком...
Понятие Free Software не имеет также непосредственной связи с таким явлением, как Freeware - этим термином обозначаются программы, которые их разработчик по каким-либо соображениям (из врожденного альтруизма или в целях саморекламы) предоставляет всем желающим безвозмездно (то есть даром - но за трафик, доставку и носитель заплатить все равно придется). В отличие от Free Software, никакой свободы, за исключением свободы использования, да и то не всегда (встречаются такие явления, как: хочешь на второй компьютер - качай заново), Freeware не подразумевает: ни тебе свободы изучения, ни свободы модификации, ни, тем более, свободы распространения. Да и изучать или модифицировать особенно нечего: подавляющее большинство Freeware-программ распространяются без исходников.
Еще одно отступление: по моим наблюдениям, статус Freeware в большинстве случаев - сугубо временный, чем-то эти программы сродни товарам, приобретенным на рекламных распродажах и тому подобных акциях. Очень мало разработчиков принципиально декларируют Freeware своих произведений (это и есть случай врожденного альтруизма; на память приходит, пожалуй, только Пауль Лютус со своей замечательной Arachnophilia). В большинстве случаев Freeware-проект либо превращается в коммерческий, либо, если коммерческий успех не светит, тихо и незаметно умирает.
Вернемся, однако, к явлению Free Software. Для его понимания очень важно уяснить себе, что принципы RMS, на которых оно основывается, носят исключительно разрешительный, а не обязующий характер. То есть вы имеете право, если вам так хочется, продавать свободный софт, или распространять его даром (типа как в рекламе каких-то прокладок: "Вы, конечно, можете прыгать с парашютом, если вам так хочется"). Но никто не обязывает вас это делать - например, нарезать дистрибутивы первому встречному по его требованию. Последнее понимание идеи свободного софта подчас встречается среди лиц, отягощенных пережитками социализма в сознании...
Далее, тезисы RMS - отнюдь не обязательны. Никто под дулом автомата не заставляет автора программы раскрывать свои исходники. Как не возбраняется и изменение статуса распространения программы - свободный Open Sources волею разработчика (и это - следствие того же авторского права) может превратиться во вполне закрытый продукт (с ограничениями, накладываемыми свободными лицензиями, о чем - в следующем разделе).
Конечно, RMS - максималист по натуре, - своими высказываниями дает некоторый повод к превратному его пониманию. В частности, один из сквозных его тезисов -"Все программы должны быть свободными". Однако это - не более, чем пожелание (или, если угодно, этический императив), на самом деле не означающее, что авторов несвободных программ будут понуждать к чему-нибудь, с их точки зрения, противоестественному.
Вообще, следует отделять сами по себе принципы RMS (под каждым из которых я готов подписаться обеими руками) от их трактовки им же. Однако тут мы плавно переходим к третьей степени свободы.
И это - свобода в понимании Free Software Foundation и проекта GNU, каковые опять же являются детищами RMS. Вследствие понятной аберрации Free Software часто рассматривается как эквивалент Free Software Foundation. Однако это - не так. Потому что в понимание Free Software par exсellence (то есть по FSF) к сформулированным выше принципам добавляется еще один: все свободные программы, а также все программы, хоть в какой-то степени основанные на свободном софте, должны оставаться свободными ныне, и присно, и во веки веков. Аминь...
Конечно, сам RMS сотоварищи в качестве Free Software рассматривает именно свободный софт в понимании FSF - все прочее, по его мнению, принадлежит миру Open Sources. Однако это - тот самый результат расширенной трактовки собственных принципов: если придерживаться буквы последних, то становится ясным, что подавляющее большинство программ из разряда Open Sources столь же свободны, как и разработки под эгидой FSF. Однако к этому вопросу мы еще вернемся.
А пока следует подчеркнуть, что свободный софт в понимании FSF - отнюдь не единственная разновидность свободного софта вообще. Более того, сам RMS, несмотря на приписываемый ему (и небезосновательно) экстремизм, отнюдь не настаивает на том, что его свобода - единственно возможная. Да и на сайте FSF есть целый список условий свободы, которые рассматриваются как "совместимые" со свободой в высшем понимании (FSF, разумеется - как тут не вспомнить: "Все свободы свободны одинаково, но некоторые свободнее других"). Иными словами - все свободы совместимы между собой, несовместимы они лишь с не-свободой.
Однако тут мы переходим (опять-таки плавно) к вопросу о лицензиях, что будет темой одного из следующих разделов. Перед этим же вернемся к еще одной грани открытости.
Во вступлении к этой главе я упомянул о так называемых открытых системах (Open Systems) - понятии, семантически близком к термину Open Sources Software. И тем не менее, понятия эти - разные, и в принципе между собой не связаны. Потому что под открытой системой понимается просто-напросто "система, которая состоит из компонентов, взаимодействующих друг с другом через стандартные интерфейсы" (Жан-Мишель Корну, один из авторов руководства Французской ассоциации пользователей UNIX).
Что же такое стандартные интерфейсы? Это некоторые соглашения, которые определяют функциональность компонентов системы. Например, стандарты на командные оболочки описывают некоторую минимальную функциональность программ этого класса, стандарты на системные вызовы ядра - то, что должны делать эти системные вызовы (например, открывать файл или читать его содержимое), и так далее. При этом на реализацию функций того или иного компонента системы никаких ограничений не накладывается.
Стандартные интерфейсы для открытых систем регламентируются набором соглашений POSIX (Portable Operating System Interface), разрабатываемые организацией под названием IEEE. Соглашения эти, получившие сзучный титул стандартов POSIX, опирались в первую очередь на опыт разработки систем Unix. И. следовательно, все Unix-подобные системы, как проприетарные (Solaris, например, или AIX), так и свободные (Linux или FreeBSD) по определению являются POSIX-совместимыми, представляя собой конкретные реализации соответствующих стандартов.
Собственно, термины "Unix-подобная ОС" и "POSIX-совместимая ОС" можно было бы рассматривать в качестве синонимов. И на протяжении всего данного сочинения я так и делаю. Тут, однако, нужно иметь ввиду несколько обстоятельств.
Во-первых, термин "Unix" представляет собой зарегистрированную торговую марку. И продолжающееся по сей день крестоносное сутяжничество SCO против IBM (и попутно - против всего движения Open Sources и Free Software), исход которого остается неясным, в немалой степени будет способствовать его дискредитации. Имея в своем осадке лишь тот положительный момент, что очередной раз привлекло внимание к понятию Open Systems как системам, следующим открытым (=общедоступным) стандартам. Достаточно вспомнить попытку демонстрации "украденного" из Unix кода в Linux-ядре.
Во-вторых же, и главных, понятие POSIX-совместимости, строго говоря, выходит за рамки Unix-подобия, то есть сходства с неким первозданным Unix'ом. В той или иной мере соответствие POSIX-стандартам (хотя и неполное) декларируется разработчиками ОС QNX, генетически с Unix никак не связанной. Да и Linux представляет собой попытку воспроизведения функциональности Unix с "чистого листа", не только без использования ее кода, но и без доступа к нему. При этом Линус опирался не столько на устройство самой системы Unix, сколько именно на стандарты POSIX. Впрочем, подробнее об этом будет говориться в одном из ближайших разделов.
Следует заметить, что и для Windows линии NT/2000/XP декларируется соответствие стандартам POSIX. Однако, как это в обычае у фирмы-разработчика этих продуктов, стандарты эти понимаются тут весьма своеобразно и трактуются весьма расширительно в плане "улучшения". А потому отнесение Windows к POSIX-совместимым системам по меньшей мере спорно.
Все стандарты POSIX (а в это семейство входит несколько групп соглашений, например, стандарты на интерфейс прикладных программ, утилит и оболочек, и т.д.) являются открытыми в понимании, близком к Open Sources. То есть они общедоступны - любой человек с "улицы" может получить к ним доступ и создать в соответствии с ними свою открытую систему (откуда и пошел термин Open Systems).
Однако открытость основополагающих стандартов ни в коей мере не подразумевает открытости созданных в соответствие с ними операционных систем. И, тем более, соответствие POSIX-стандартам не влечет их свободного (тем более - бесплатного) распространения. Кратко говоря, под Open Systems, в отличие от Open Sources, можно понимать просто системы, основанные на открытых (=общедоступных) стандартах. А уж на каких условиях эти системы распространяются - определяется лицензиями, которые вольно было приписать им разработчиками.
В рамках настоящего сочинения нас будут интересовать только лицензии, относимые к классу свободных (не обязательно в понимании Free Software Foundation). И здесь нужно начать с того, что лицензий этих - немалое количество: ведь только все диктатуры похожи друг на друга, тогдакак свобода реализуется каждым по своему.
Наиболее известна General Public License (сокращенно GPL) - оставим название без перевода, поскольку смысл английского оригинала интуитивно более понятен, чем любой отечественный эквивалент. Разработанная в первоначальном своем варианте RMS'ом (при участии профессиональных юристов), она ныне принята для FreeSoftware, разрабатываемого в рамках проекта GNU и при участии FSF. Кроме того, по ее условиям распространяется ядро Linux и множество программ независимых разработчиков.
В двух словах суть GPL повторяет, понятное дело, общие принципы свободы Столлмена, с одним важным дополнением: любое программное обеспечение, разработанное на базеGPL-софта, может распространяться только в сопровождении открытых исходных текстов и под той же лицензией. То есть разработчик, включивший в свое творение хоть строку кода, подпадающего под GPL, не имеет права распространять его подкакой-либо другой лицензией. Хотя, повторю еще раз, никаких иных ограничений - ни в плане взимания денег, ни какого-либо иного коммерческого использования, - на него не накладывается. А под сопровождением открытыми исходниками подразумевается их физическая доступность - на твердых ли носителях, на публичных ftp-серверах, и так далее.
Лицензия GPL вызывает наибольшие споры в мире Open Sources - от почитания единственно пригодной для распространения свободного софта до активного неприятия, вплоть до появления термина "вирус GPL". Однако мы в эти споры вдаваться не будем - отметим только, что она являет собой объективную реальность, и что под ней распространяется огромное количество программ - от утилит GNU-проекта до таких крупных продуктов, как ядро Linux, GIMP, GNOME, ГИС GRASS и множество других. В общем, вероятно, суммарно большее, чем под всеми прочими свободными лицензиями, вместе взятыми.
Вследствие уже отмеченной аберрации, FSF не просто тесно ассоциируется с самим понятием Free Software, но подчас, осознанно или неосознанно, с ним отождествляется. Однако это не так, и GPL - далеко не единственная лицензия, под которой свободный софт распространяется. Ибо на другом полюсе свободы софта располагается BSD-лицензия, впервые сформулированная в Университете Беркли для распространения системы, именовавшейся в те годы BSD Unix. Ныне под этой лицензией распространяются такие ОС, как Free-, Net- и OpenBSD, а также изрядное количество программ независимых разработчиков.
Лицензия BSD (иногда говорят о лицензиях BSD-стиля, различающихся в деталях, но единых в главном) столь же строго следуют принципам свободного софта, как и GPL (ей-богу, ничего противоречащего сути принципов RMS в ней не найти - впрочем, она очень короткая). То есть все подпадающие под нее программы могут свободно использоваться, модифицироваться и распространяться. Главное отличие ее от GPL - BSD-лицензия не обязывает к непременному свободному распространению продуктов, разработанных на ее основе. То есть: закрыть код свободных программ, защищаемых BSD-лицензией, не вправе никто. Однако собственные разработки, на них базирующиеся, вполне могут распространяться как любой проприетарный софт, не только за деньги, но и без исходных текстов.
Чтобы понять, как это выглядит в реальности, рассмотрим наиболее показательный пример. Как известно, MacOS X основана на микроядре Mach (разработанном в Университете Карнеги-Меллона и распространяемом под собственной лицензией BSD-стиля) и системном окружении, заимствованном из FreeBSD, что в совокупности и дает ее ядро Darwin. Поскольку и Mach, и его системное окружение суть свободные программы, то и Darwin имеет тот же статус, распространяясь открыто и свободно (его можно скачать и юзать из командной строки в свое удовольствие). Однако графический интерфейс пользователя и прочие прибамбасы, которые собственно и определяют своеобразие MacOS, являют собой собственные разработки Apple, и о их свободном распространении речи не идет.
Из прочих свободных лицензий известны: лицензия X-консорциума, близкая к ней - Массачуссетского технологического института (MIT) и лицензия, под которой распространяется Mozilla, а также серия "университетских" лицензий. Все они, приближаясь либо к GPL, либо к BSD-стилю, в полной мере отвечают принципам Столлмена. Не случайно самые строгие пуристы от FSF именуют их GPL-совместимыми. Что на практике означает возможность использования софта под этими лицензиями в рамках единых проектов.
Таким образом, многоликость явления Free Software находит отражение в многообразии лицензий, под которыми свободный софт распространяется. Что, однако, не мешает им мирно уживаться друг с другом: так, базовый комплект FreeBSD (т.н. Distributions), подпадающий в основном под BSD-лицензию, включает в себя ряд компонентов проекта GNU, защищаемых лицензией GPL, и называемых Contributions (в их числе такой важный, как компилятор gcc
). А базовая система Linux, большая часть которой представлена GPL-программами, включает, например, библиотеку zlib
, распространяемую на условиях лицензии BSD-стиля.
Более того, свободные лицензии вполне могут сосуществовать и с коммерческими, ярким примером чему является интегрированная среда KDE. Она основана на библиотеке Qt, которая сама по себе является коммерческой (и стоит, надо заметить, немалых денег). Однако для некоммерческого использования она бесплатна и как бы свободна, распространяясь на условиях близкой к GPL лицензии - QPL. Не возьмусь судить о том, как это реализовано юридически, однако факт остается фактом: на библиотеке Qt разрабатываются и такие проприетарные программы, как браузер Opera (а это, не смотря на бесплатность при некоторых условиях, - все же коммерческий продукт), так и KDE с ее приложениями, к чистоте и свободе лицензии которой ныне не осталось претензий у самых ярых апологетов FSF.
Вернемся, однако, к свободным лицензиям. Как уже было сказано, все их многообразие укладывается на линию GPL-BSD. Первая однозначно требует,чтобы все программы, включающие в себя свободный код, оставались свободными ныне, и присно, и во веки веков. Вторая же столь же однозначно разрешает закрытое распространение собственных разработок, пусть даже и основанных на свободном коде (хотя, повторяю, легший в основу свободный код таковым все равно остается ad finem seculorum).
Я не буду вдаваться в дискуссию о том, какая из свободных лицензий большего отвечает идеалам свободы и демократии. Более интересным видится мне вопрос - а откуда вообще взялось понятие свободного софта?
И тут можно сделать интересное наблюдение: большинство т.н. "университетских" лицензий по своей сути тяготеют к формулировкам BSD-стиля.Почему?
Ответить на этот вопрос не трудно. Дело в том, что RMS, формулируя (в первой половине 80-х годов прошлого века) свои принципы свободы софта, явным или неявным образом, но - изобретал велосипед. Ибо принципы его суть не что иное, как условия, на которых испокон веков распространялись результаты любых научных исследований (к слову сказать, и RMS деятельность свою начинал как сотрудник академической организации - лаборатории искусственного интеллекта MIT). Каковые, по определению, должны быть общедоступны, открыты в отношении методики и которые вольно использовать любым образом (за исключением приписывания себе их авторства и ограничения доступа к ним других).
Использовать - в том числе и для коммерческих продуктов, реализуемых через вполне закрытые технологии. Согласитесь, было бы нелепым требовать от создателей дизеля или двигателя внутреннего сгорания полной открытости их результатов на том основании, что они базируются на общедоступных законах термодинамики. А ведь именно это и констатирует BSD-лицензия, имеющая сугубо академическое происхождение (не смотря на то, что работа изначально финансировалась "мирным" американским ведомством).
Не случайно первые работы над проектом BSD, полностью вписывающиеся в идеологию Free Software, начались существенно (лет за 10) раньше того, как RMS сформулировал свои знаменитые принципы в 1984 году. Аналогию между научными разработками и Free Software можно углубить. Что является неотъемлемым атрибутом профессионально выполненной научной работы? Тем самым, который безошибочно позволяет отделить всамделишнюю, скажем, геологию или историю от трудов всякого рода атлантологов, уфологов и прочих Фоменок? Атрибутом этим является научный аппарат. То есть для наук экспериментальных - публикация методики измерений, позволяющих независимое воспроизведение результатов; для наук феноменологических, типа той же геологии - описания полевых наблюдений; для истории иже с нею - ссылочного аппарата (дающего читателю теоретическую возможность порыться в первоисточниках).
Именно научный аппарат делает возможным проверку и воспроизведение выводов исследователя профессионалом в той же области науки. А специалисту-"смежнику", не владеющему деталями материала по конкретной проблеме, позволяет безбоязненно ссылаться на полученные другими результаты - в небезосновательном расчете на то,что ошибки будут выявлены специалистами соответствующего профиля.
Разумеется, само по себе наличие научного аппарата не гарантирует высокого качества научной работы. Однако оно позволяет выполнить (хотя бы в первом приближении) ту самую публичную экспертизу, за позитивными примерами которой далеко ходить не нужно - имя им легион.
Опять отвлекусь: впрочем, на произведения Фоменок, похоже, такая экспертиза никакого влияния не оказывает - число книг означенного академика на полках "Молодой гвардии" не уменьшается. Видимо, это тот случай, когда требуется не экспертиза (нечего экспертировать-то), а простое игнорирование.
Ту же роль, что научный аппарат в исследованиях, в области FreeSoftware выполняют открытые исходники. Их наличие само по себе не гарантирует высокого качества программы. И, разумеется, пользователю, далекому от программирования, исходные тексты на Си мало чего скажут. Однако, как и в науке, пользователь вправе ожидать, что ошибки в открытой программе будут выявлены людьми, разбирающимися в этом получше него. Не только выявлены, но и исправлены, а не возведены в ранг непременной фичи. И он, пользователь, вследствие открытого характера разработки об этом узнает своевременно - при наличии желания, разумеется. И, надо сказать, все эти ожидания в большинстве своем оправдываются...
Собственно говоря, именно публичная экспертиза кода (или, проще говоря, механизм обратной связи пользователей и разработчиков) - одна из причин, почему открытость кода (то есть явление Open Sources) почти неизбежно влечет за собой свободу распространения программы в соответствие с принципами RMS. Действительно, какой смысл имеет выявление ошибок (свобода изучения) без возможности их исправления (свободы модификации) и предоставления доступа к скорректированной версии (свободы распространения)?
Показательно, что все успешные проекты, некогда коммерческие, но подвергшиеся процедуре открытия исходников на определенных, не вполне соответствующих GPL- или BSD-лицензиям, условиях, рано или поздно эволюционировали в сторону полной свободы в понимании Free Software. Здесь достаточно вспомнить StarOffice, Netscape или GRASS. Причем характерно, что на базе одного и того же открытого кода вполне мирно уживаются как полностью свободные программы (OpenOffice.org, Mozilla или многочисленные Gecko-клоны),так и программы, сохранившие свой проприетарный статус (первозданные StarOffice и Netscape). Программы же с открытыми исходниками, не ставшие истинно свободными (например, Solaris или True64 Unix), очень быстро потеряли и свой открытый статус, вернувшись в лоно проприетаризма.
Мой снобизм - он как лучик путеводный, Помогает воспринять судьбу как должно: Мол, художник - он обязан быть голодным. Он худой, но гордый, он - художник.
Тимур Шаов
В контексте этого раздела осталось обсудить одну тему, близко связанную с предыдущей: а кто вообще должен (и должен ли?) финансировать такие родственные области человеческой деятельности, как разработка Open Sources и фундаментальную науку? И кто их финансирует в настоящее время?
Должное, однако, для начала заметить, что родственность Open Sources и фундаментальной науки - не мое изобретение. Блестящее обоснование этого тезиса содержится в статье: Николай Безруков. Разработка программ с открытыми исходниками как особый вид научных исследований. Byte Россия, 2000, #5 (21), с. 64-77. К сожалению, столь древний номер журнала успел, видимо, стать библиографической редкостью, а русский перевод этой статьи в онлайне недоступен, так что любопытствующим придется обратиться к английскому оригиналу...
У читателя большей части популярных публикаций на тему Open Sources вполне может создастся впечатление, что разработка программ этого класса осуществляется на голом энтузиазме, напоминающем ударников-стахановцев и прочих строителей Магнитки. Что, конечно, очень бла-народно, но в наш коммерциализованный век вызывает законное недоверие (особенно с учетом аналогии строителей Магнитки и БАМа - забайкальских комсомольцев, сокращенно ЗК).
Проблема финансирования Open Sources включает в себя три аспекта:
- кто может быть заинтересован (и может ли?) в финансировании разработки Open Sources;
- в какой форме заинтересованные стороны могут осуществлять финансирование разработки Open Sources;
- каким образом финансирование это может распределяться среди разработчиков.
Должен сразу признаться - ответов на эти вопросы я не знаю. Однако они - совершенно те же, что возникают при финансировании т.н. фундаментальной науки. А поскольку в этой сфере мировым научным сообществом накоплен весьма большой, хотя и абсолютно отрицательный, на мой взгляд, опыт, по аналогии рискну высказать некоторые соображения.
Но сначала зададимся иным вопросом: а нужно ли финансирование разработки программ с открытыми исходниками вообще? Ведь теоретически предполагается, что это - предприятие самоокупаемое, а то и просто прибыльное. Однако теоретически, как говаривал дед Щукарь, она лошадь, а практически она падает...
Напомню, что на протяжении всего этого раздела я пытался подчеркнуть, что открытость исходников некоей софтины и свобода ее распространения отнюдь не подразумевает бесплатности. Тем не менее практика такова, что подавляющее большинство открытых и свободных ОС вкупе со своими приложениями распространяется фактически бесплатно. То есть сакраментальнаяинтеллектуальная собственность источником дохода служить не может (как это имеет место быть в случае проприетарного софта).
Прибыльность разработки Open Sources обычно обосновывается туманными фразами о сопровождении и поддержке программных продуктов, распространяемых бесплатно. В смысле - по себестоимости носителей и документации. Когда в отрицание бесплатности открытого софта приводят американские цены на дистрибутивы типа Red Hat или Suse, забывают, что 100- (или даже 200-) долларовые их коробки содержат штук пять-шесть изрядной толщины книжек. А в Америке любая специальная книжка меньше полтинника ихних денег, насколько я знаю, сама по себе не стоит. Если же речь идет о дистрибутивах ценой в несколько тысяч долларов - то тут уже в стоимость включено именно сопровождение продукта в явном виде,
Тем не менее, достоверных известий о фирмах или персонах, обогатившихся за счет техподдержки Open Sources, у меня нет. Что понятно: люди, покупающие дистрибутив Linux (для примера), имеют целью разобраться в системе. И либо этой цели достигают, и тогда в техподдержке не нуждаются. Либо бросают это занятие, и тогда не нуждаются в поддержке тем более. Если же речь идет о корпоративных пользователях - не думаю, что разумный руководитель рискнет перевести весь свой документооборот на Linux или BSD, не имея в штате квалифицированного специалиста по одной из этих систем. Так что мечты о заработке на техподдержке - столь же наивны, как и мечты о самоокупаемости фундаментальной науки, блестяще сформулированные на заре перестройки Максимом Максимовым в статье "Реанимация" (Знание-сила, 1989, #11).
Маленькое отступление. Впрочем, Максимова прославила другая работа - "На грани - и за ней" в #3 того же журнала за 1988 г. Именно из нее большинство из нас узнало о Бруно Беттельгейме - чуть ли не единственном из великих неофрейдистов XX века, чьи труды остаются не переведенными на русский язык по сей день. Кто читал статью Максимов - могут представить, почему...
Однако вернемся к теме параграфа. Конечно, само по себе издание и распространение дистрибутивов прибыль приносить может. Так же, как ее приносит, скажем, издание детективов Марининой и их продажа. Однако к аналогии с книжным бизнесом я обращусь несколько позднее.
Итак: кто заинтересован в развитии Open Sources и, соответственно, мог бы финансировать его разработку? Кроме его разработчиков и пользователей, разумеется. Но ведь разработчики Open Sources, хотя и заняты своим делом в большой степени из любви к искусству, также хотят есть-пить. А пользователи - они ведь пользуют Open Sources в значительной мере в виду его бесплатности. Что удовлетворению означенной потребности разработчиков отнюдь не способствует...
Первая сторона, заинтересованная в развитии Open Sources - пользователи любого коммерческого софта. Впрочем, не смотря на внешнюю парадоксальность, это очевидно: только конкуренция со стороны открытых и свободных программ может подвигнуть коммерческих разработчиков на совершенствование своей продукции.
Как ни странно, в качестве второй стороны, наиболее заинтересованной в развитии открытого софта, видятся производители коммерческих Unix-систем (хотя, подозреваю, что сами они своего счастья не понимают). Почему - обосновать не трудно.
Пацану, сызмальства привыкшему к Linux (FreeBSD, OpenBSD etc.) и пришедшему на службу со школьной (или университетской) скамьи, работать в Windows - что серпом по... сами знаете чему. Гораздо легче ему будет перейти на Solaris или AIX. А достигнув по службе должного положения, он, безусловно, приложит все усилия к тому, чтобы внедрить POSIX-системы в родном трудовом коллективе - ведь, по тем или иным причинам, далеко не всегда можно обойтись свободными их реализациями.
За иллюстрацией этого достаточно спуститься в не столь уж далекое прошлое - 1995 год. Когда (не заставшим того времени поверить в это трудно - но факт имел место быть) в качестве реальной альтернативы для массовых настольных систем рассматривались OS/2 и Windows 95. Причем ни у кого не вызывало сомнений технологическое превосходство первой. Но: Windows 95 пришла в дома, а OS/2 - нет (о причинах распространяться здесь неуместно). И через несколько лет на работу вышло поколение, вскормленное и вспоенное в "окнах". Результат не замедлил воспоследовать: кто и когда последний раз видел OS/2 на пользовательском десктопе?
Наконец, третья заинтересованная сторона - это государство, причем - любое (правда, применительно к нашему государству об этом и не подумаешь). Причины этого также достаточно тривиальны - здесь и баланс между монополизацией и свободной конкуренцией, и массовый независимый аудит программной продукции, и снижение себестоимости рабочего места госчиновника: список легко продолжить. И не на последнем месте в нем окажутся соображения государственной безопасности: как бы кольчужка коротка не оказалась...
Теперь посмотрим, горят ли заинтересованные стороны желанием оказать развитию Open Sources посильную финансовую помощь?
Конечно, странно было бы ожидать от массы Windows-пользователей благотворительных пожертвований в FSF и аналогичные dot-org'и (а для последних это нередко - существенный источник финансирования, примером тому проект OpenBSD). Тем не менее наиболее продвинутая часть их косвенно в финансировании Open Sources участвует. Хотя бы тем, что проявляет интерес к публикациям на эту тему - и бумажным, и сетевым. В результате чего компьютерные издания печатают больше статей соответствующего профиля, регулярно :-) выплачивая авторам гонорары, чем и способствует материальному благополучию писателей-POSIX'ивистов (навроде вашего покорного слуги:-))
Теперь о корпорациях - производителях Unix-машин и разработчиках проприетарных версий Unix и софта для них. Об инвестициях IBM в Linux-компании знают, наверное, все. Однако это лишь одна сторона дела. Меньшее внимание привлекает то, что, скажем, изрядное количество разработчиков свободного браузера Mozilla (из некоторых источников явствует, что - большинство) по совместительству являются штатными сотрудниками AOL (хотя скорее - наоборот) и работают над проприетарным (хотя и бесплатным, но не свободным) браузером Netscape. А команды разработчиков свободного офисного пакета OpenOffice и проприетарного - StarOffice, суть множества пересекающиеся (не знаю уж, насколько точно, но очень значительно). Ну и недавнее приобретение Suse Linux компанией Novell (до некоторого времени правообладателя торговой марки Unix) - также факт показательный.
И, наконец, государство. О прямом госбюджетном финансировании разработки свободного софта в большинстве стран, как будто бы, слышно не очень много. Кроме, разве что, Китая, где курс на внедрение открытого и свободного софта - прямо-таки генеральная линия Партии и Правительства. Проскальзывает информация о господдержке Linux (в сфере наробраза, например) в паре-тройке стран Латинской Америки (Мексика, Бразилия - правда, результаты пока не известны). Ну и есть сведения, что французская компания Mandrakesoft (производитель одноименного дистрибутива Linux) была выведена из затянувшегося кризиса благодаря правительственным ассигнованиям.
Это - с одной стороны, Однако - вспомним, что BSD (предок свободных операционок Free-, Net- и OpenBSD) почти полтора десятка лет разрабатывалась в Университете Беркли. На денежки, между прочим, оборонного ведомства США - то есть прямого госбюджета.
Или - история финского студента Линуса. Который благополучно проучился (а потом и проработал) в университете лет семь, за которые свой Linux и разработал. А ведь высшее образование в Финляндии, насколько мне известно, бесплатное... Так что можно сказать, что Linux был создан за счет финской казны (и финских же налогоплательщиков; также, как FreeBSD - за счет налогоплательщиков американских).
Все это я говорю к тому, что романтическое представление о создателях свободного софта как об энтузиастах-одиночках (со всеми вытекающими из этого следствиями, как положительными, так и отрицательными) подчас весьма далеки от истины. Многие из них - и сотрудники коммерческих фирм, и выходцы из академическо-университетской среды, - занимаются этим делом в рамках своих прямых должностных обязанностей, получая за это зарплату.
Значит ли это, что движение Open Sources имеет достаточную финансовую базу? Отнюдь. Государственные программы имеют обыкновение рано или поздно заканчиваться по самым разным причинам. (Не с падением ли мировой системы социализма связано прекращение финансирования проекта BSD в 1991 году?) Вливания от коммерческих фирм зависят от конъюнктуры рынка. А интерес широких народных масс ко всему, связанному с Linux и Open Sources, в значительной мере лишь дань моде.
Так что какие-либо дополнительные источники финансирования не помешали бы движению Open Sources. Однако уже упоминавшаяся аналогия между ним и фундаментальной наукой наводит меня на мысль: а пойдут ли они ему на пользу? Ибо второй вопрос после получения финансирования - как это финансирование будет распределяться среди собственно разработчиков?
Опять же по аналогии с наукой можно предположить три модели распределения финансов. Первая, наиболее эффективная, модель описана в легенде про Папу Римского (не помню уже кого и которого) и знаменитого художника Титиана. Коему Папа просто подарил дворец вместе с ежегодной рентой, необходимой на его содержание. Дабы у мужика голова по пустякам не болела...
Модель эта не столь утопична, как может показаться: по доброй традиции, основанной товарищем Сталиным, примерно по такой схеме осуществлялось финансирование науки в Советском Союзе. Правда, у товарища Сталина была некоторая страховка на случай, если товарищ Титиан начнет манкировать своими обязанностями: всегда можно немножечко расстрелять товарища Титиана. Когда такой возможности не стало, советская наука очень быстро пришла к тому, к чему пришла...
К слову сказать - модель эта минимум однажды эффективно сработала и в мире открытых исходников. Не напоминает ли вам положение Линуса в компании Transmeta то, в котором оказался Титиан Папскою милостью, или товарищ Курчатов - волею гения всех времен и народов?
Вторая модель - финансирование проектов в форме грантов, как это принято в отношении научных исследований в т.н. цивилизованных странах. А в последние годы и Россия приобщилась к этой практике. Так что о достоинствах и недостатках такой схемы распространяться не буду - наши "дети капитана Гранта" (они же - "Джорджа Сороса птенцы") испытали их на собственной шкуре.
Хотя и для этой модели есть примеры удачного использования в истории движения Free Software - разработка систем линии BSD 4.X в Университете Беркли. Правда, термина Free Software тогда еще не существовало.
Наконец, третья модель - гонорарная, аналогичная принятой в книгоиздательской практике. Я уже говорил, что собственно прибыль при распространении открытого софта могут извлекать издатели и продавцы дистрибутивов. Причем прибыль эта в значительной мере определяется сопровождающей печатной продукцией (документацией). Так почему бы им, в соответствии с божьей заповедью, не поделиться ее толикой с теми, кто обеспечивает им предмет издания и продажи?
История показала, что эта модель, пожалуй, наиболее эффективна. Она прекрасно сработала в случае FreeBSD и Linux Slackware. И тот, и другой проект долгое время развивался при поддержки компании Walnut Creek - известного продавца компакт-дисков (а потом и дистрибутивов). Доход от продажи дистрибутивов (плюс разнообразной атрибутики - маечек, кружечек etc.), насколько мне известно, - один из основных источников финансирования проекта OpenBSD. Ну и для компаний, собирающих дистрибутивы Linux (типа Red Hat и Suse), это - также некоторое подспорье.
Но - не более: ибо мир информационных технологий породил и еще одну модель финансирования собственной деятельности - ту самую пресловутую техническую поддержку и поставку готовых решений, о которых я уже говорил ранее. И к которой по ряду причин отношусь несколько скептически. Однако недавний отказ Red Hat от официальной поддержки собственного пользовательского дистрибутива показывает, что заинтересованные стороны моего скептицизма не разделяют. Что ж, Бог им в помощь...
Впрочем, в нашей стране затронутые здесь вопросы носят чисто теоретический характер. И ныне разработчикам Open Sources (как и научным работникам) следует находить утешение в строках Тимура Шаова, приведенных в качестве эпиграфа этого параграфа.
Руины прекративших свое развитие открытых проектов на просторах Интернета служат свидетельством недостаточного финансирования разработки свободного софта.
Впрочем, столь же частая причина прекращения открытых проектов - это просто потеря интереса к ним со стороны разработчиков. И последний фактор не столь уж трагичен, как может показаться. Более того, он - следствие того положительного, что заложено в самой идеологии Unix, и неотрывен от нее.
Как будет ясно из дальнейших глав, в основе идеологии Unix - разложение любой сложной задачи на несколько максимально простых, атомарных, действий, интегрируемых воедино с помощью специфических приемов. И потому все классические Unix-утилиты (и большинство программ, следующих этому направлению, именуемому Unix Way) - монофункциональны. То есть каждая из них умеет делать, обычно, только одно, - но зато уж очень хорошо.
А теперь представьте себе ситуацию: студент или молодой специалист в области Computer Sciences пишет маленькую, но полезную монофункциональную утилиту - например, для поиска файлов. Причем одна из основных его мотиваций в этом случае - просто повышение собственной профессиональной квалификации. Постепенно утилита эта доводится до практически достижимого совершенства - и что дальше?
А дальше перед разработчиком есть два пути. Первый - это рутинное исправление мелких ошибок, внесение мелких усовершенствований, приведение в соответствие с новыми версиями ОС, системных библиотек и тому подобного взаимосвязанного софта. Но ведь наш молодой специалист за это время уже вырос в профессиональном отношении, у него могли появиться совсем другие интересы, И такое рутинное сопровождение программы для него оказывается просто скучным.
Второй путь - это расширение функциональности. Программу для поиска файлов можно научить эти файлы как-то обрабатывать (копировать, перемещать, удалять). А там - и работать с их содержимым, скажем. Ну и заодно уж - подавать кофе в постель и сообщать прогноз погоды:-) В результате чего наше отточенное орудие поиска превращается в неповоротливого монстра, который, подобно пятиборцу, все умеет делать... плохо (да простят меня читающие это пятиборцы - я очень люблю этот вид спорта, но в кругах спортсменов-монофункционалов бытует именно такая шутка).
И ладно бы, что второй путь противоречит всей идеологии Unix (тому, что называют Unix Way). Но ведь порочность его доказана всей историей проприетарного софта. Производители которого неизбежно вынуждены расширять, с позволения сказать, функциональность своих продуктов. Ведь как иначе убедить в необходимости покупки Office 2003 пользователя (которому зачастую вдоль хватило бы возможностей Lexicon'а), как не открывающимися перед ним сказочными возможностями? За которые приходится расплачиваться гигагерцами и гигабайтами железа, монстроидальностью интерфейса и в конечном счете снижением общей производительности работы...
И потому то, что разработчики свободных программ, как правило, не идут по пути расширения функциональности своих программ, - фактор, безусловно, положительный. А то, что в итоге они могут потерять интерес к дальнейшей разработке... Что ж, все в жизни имеет оборотную сторону, как сказал один гражданин, у которого умерла теща и пришлось раскошеливаться на похороны ((C) Ильф и Петров).
Тем более, что открытые проекты умирают (по отсутствии финансов ли, или из-за ухода исполнителей) окончательно и бесповоротно крайне редко. Все востребованные сообществом разработки так или иначе не только поддерживаются - и тому в истории мы тьму примеров сыщем, - но и развиваются в рамках заложенного в них потенциала. Доказательством чему - судьба не только Vim, существующего с доисторических времен, и столь же долго (и беспрестанно) совершенствуемого, но и простенького joe: происхождение его теряется во мраке, имени первого автора никто уже и не припомнит, а новые версии его время от времени выходили на протяжении многих лет. А совсем недавно он получил новую жизнь и кардинально новые возможности...
Так что напрашивается аналогия между программами Open Sources и эпическими произведениями прошлого - от Илиады до Старшей Эдды: и тем, и другим уготована вечная жизнь в памяти людской. По крайней мере, до тех пор, пока они сохраняют актуальность для современного им общества. А после - после они становятся достоянием истории...
Далее >>>