Фонд свободного программного обеспечения (FSF - Free Software Foundation) представляет собой очень интересное и во многих отношениях исключительное явление в современном мире программирования. Многим отечественным программистам приходилось иметь дело с программами из FSF (особенно хорошо известна система программирования GCC), однако отсутствие публикаций на русском языке затрудняет понимание идеологии и целей FSF, а также не дает возможности оценить имеющийся задел. Задача этой короткой статьи - хотя бы частично устранить этот пробел. Статья целиком опирается на материалы FSF и поэтому, в соответствии с общими принципами этой организации, может свободно перепечатываться, копироваться или распространяться каким-либо другим способом (с сохранением этого замечания).
В своем "Манифесте GNU" [1], написанном еще в 1985 г., Р. Столлман в качестве основной идеи, приведшей к возникновению FSF и проекта GNU, выдвигает свое неприятие права собственности на программы. Особенности взаимоотношений в сообществе программистов часто ставят людей перед выбором следования естественному чувству дружбы и взаимопомощи или подчинения препятствующего этому закону о собственности. При использовании свободного программного обеспечения необходимость такого обременительного выбора исчезает.
Создание интегрированной свободной программной системы позволяет избежать дублирующей работы программистов (которая часто требуется только по причине наличия программ в чьей-либо собственности). Свободное распространение исходных текстов программ облегчает их сопровождение и приспособление к нуждам конкретного пользователя (не требуется прибегать к услугам только компаний - владельцев лицензий на исходные тексты). Появляется дополнительная и очень важная возможность использования хорошего программного обеспечения в учебных целях.
Как утверждает Р. Столлман, при переходе к свободному программному обеспечению программисты не вымрут от голода (хотя, видимо, будут зарабатывать несколько меньше). Ограничение на копирование программ - это не единственный способ зарабатывать деньги. Основная идея Столлмана состоит в том, что нужно продавать не программы, а труд программиста. В частности, источником дохода может быть сопровождение программных систем или их настройка для использования на новых компьютерах и/или в новых условиях, преподавание и т.д.
"Манифест" Столлмана написан очень эмоционально и местами слишком утопичен. Тем не менее, как кажется, идеи свободного программного обеспечения исторически близки традиционным (за исключением самых последних лет) отношениям в среде советских программистов. Возможно, именно линия FSF - наиболее естественный путь к глубокой интеграции отечественного и мирового сообществ программистов.
Более конкретно, FSF ведет разработку программ в рамках проекта GNU (аббревиатура GNU раскрывается рекурсивно - GNU's Not Unix). Целью проекта GNU является создание полной интегрированной программной системы, средства которой совместимы с возможностями среды ОС Unix (как правило, возможности программ GNU шире возможностей аналогов среды Unix).
Программное обеспечение FSF является "свободным" в двух смыслах. Во-первых, любую программу можно свободно копировать и передавать кому угодно. Во-вторых, наличие исходных текстов программ обеспечивает возможность свободного изучения программ, их улучшения и распространения доработанных вариантов.
Подобно тому, как права обычных компаний, производящих программное обеспечение, охраняются их знаком авторских прав (copyright), "свобода" программных систем FSF защищается "copyleft" - комбинацией copyright и присутствующим во всех текстах FSF документом с заголовком "GNU General Public License" [2]. В этом документе говорится о правах, которыми располагает любой текущий владелец данного текста, и о невозможности лишения этих прав у любого другого субъекта.
Основная деятельность FSF состоит в разработке новых составляющих свободного программного обеспечения в рамках проекта GNU. Большей частью проект GNU развивается плановым образом (см., в частности, разд. 3 этой статьи), но FSF принимает для свободного распространения и программы, разработанные фирмами и частными лицами по собственной инициативе. Кроме того, FSF занимается производством и продажей лент со свободным программным обеспечением, подготовкой, публикацией и распространением руководств по различным компонентам программного обеспечения GNU, а также поддерживает и распространяет справочник услуг - список фирм и частных лиц, которые оказывают платные услуги пользователям программ и систем GNU.
Финансовой основой FSF является продажа лент и документации, а также спонсорство коммерческих фирм и частных лиц.
Emacs - расширяемый, настраиваемый на разные типы терминалов и потребности пользователей редактор. Расширяемость редактора основана на использовании встроенного в редактор интерпретатора языка Лисп (диалекта Common Lisp). Одновременно с исходными текстами редактора распространяются руководства по использованию Emacs и справочное руководство по программированию на языке Лисп в среде Emacs.
Bison - замена стандартного генератора синтаксических анализаторов Yacc с некоторыми расширениями. Руководство также распространяется.
Две реализации упрощенного диалекта языка Лисп - Scheme: одна из MIT (написана на языке Си), вторая из университета г. Yale (написана на Scheme).
Утилита texi2roff, предназначенная для преобразования текстовых файлов в формате TeX в текстовые файлы стандартного для ОС Unix формата [nt]roff (распространяемая FSF на машинных носителях документация оформлена в формате TeX).
Утилиты упаковки/распаковки текстовых файлов.
Шахматная программа GNU.
GNU CC - переносимый оптимизирующий компилятор языка Си. Полностью поддерживает Си стандарта ANSI. Содержит средства полуавтоматического построения генераторов кода для новых компьютеров. Распространяется вместе с руководством.
Однопроходный переносимый ассемблер GAS, почти вдвое пре- вышающий по скорости стандартный ассемблер ОС Unix.
Свободные варианты утилит для работы с объектными файла- ми: ar, ld, nm, size, gprof, strip и ranlib. Распространяется также новая утилита динамической загрузки dld.
GNU make включает почти все средства утилит make из BSD, System V и стандарта POSIX, а также содержит ряд расширений. Распространяется вместе с руководством.
Отладчик GDB может быть использован для отладки программ, написанных на языках Си, Си++ и Фортран. Распространяется вместе с руководством.
BASH (Bourne Again SHell) - GNU Shell совместим со средствами стандартной команды sh ОС Unix и включает ряд расширений, почерпнутых из других вариантов Shell.
GAWK - версия GNU стандартной утилиты AWK ОС Unix.
flex - замена GNU стандартного генератора лексических анализаторов lex. flex позволяет получать более эффективные по сравнению с lex сканеры.
GNU tar - расширенный вариант стандартной архивной утили- ты tar.
Часть файлов из BSD 4.3-tahoe, не содержащих исходные тексты AT&T и переданных для свободного распространения уни- верситетом Беркли. В этих файлах находятся, в частности, пол- ные исходные тексты некоторых утилит, игр, библиотечных подп- рограмм и т.д.
Системы, поддерживающие работу с версиями программ в больших программных проектах, RCS (Revision Control System) и CVS (Concurrent Version System).
Более быстрые по сравнению со стандартными свободные ва- рианты утилит grep и diff.
Почти полностью совместимый с Postscript графический язык Ghostscript.
Интерактивная программа для рисования математических вы- ражений и данных gnuplot.
Набор средств для превращения компилятора GCC в компиля- тор языка Си++, включая развитые библиотеки классов.
Громадное количество программ X11, реализация MIT X-Windows (версия 11, релиз 4). Объем статьи не позволяет остановиться на этом более подробно.
В основном все программы, распространяемые FSF, расчитаны на работу в среде Unix и уже используются с различными вариантами этой системы, но имеются версии некоторых программ для работы с ОС VMS и даже MS-DOS.
В отношении Emacs требуются два направления доработок: расширение средств Emacs для возможности использования этого редактора в качестве издательской системы и полная интернационализация Emacs с обеспечением возможности использования любого национального алфавита.
GCC необходимо доработать, чтобы устанить накопившиеся замечания и реализовать имеющиеся предложения (список замечаний и предложений распространяется вместе с GCC).
GDB нуждается в доработках по части внедрения в отладчик интерпретатора языка Си; нужны также некоторые доделки для возможности использования GDB при отладке программ, написанных на языках, отличных от Си.
В нашей стране на самом деле имеются все эти ленты. Любой их держатель в соответствии с правилами игры FSF обязан содействовать их дальнейшему распространению. К сожалению, это достаточно большая техническая работа. Советская ассоциация пользователей ОС UNIX (SUUG) планирует взять на себя, как только позволят технические условия, бесплатное распространение свободного программного обеспечения для своих членов и платное копирование лент для всех желающих (это дело ближайших месяцев). Все члены SUUG получат соответствующую информацию, текущие справки можно получить по адресу SUUG@USSR.eu.net через e-mail или по обычному адресу SUUG: 125502, Москва, ул. Лавочкина, д. 19.