Идеология свободного программного обеспечения и проект GNU: текущее состояние и ближайшие задачи

С.Д.Кузнецов

1991

Фонд свободного программного обеспечения (FSF - Free Software Foundation) представляет собой очень интересное и во многих отношениях исключительное явление в современном мире программирования. Многим отечественным программистам приходилось иметь дело с программами из FSF (особенно хорошо известна система программирования GCC), однако отсутствие публикаций на русском языке затрудняет понимание идеологии и целей FSF, а также не дает возможности оценить имеющийся задел. Задача этой короткой статьи - хотя бы частично устранить этот пробел. Статья целиком опирается на материалы FSF и поэтому, в соответствии с общими принципами этой организации, может свободно перепечатываться, копироваться или распространяться каким-либо другим способом (с сохранением этого замечания).

1. Идеология FSF и общие цели проекта GNU

FSF - это программистская организация, основанная и возглавляемая Ричардом Столлманом (Richard Stallman). В самой общей постановке задачей 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 является продажа лент и документации, а также спонсорство коммерческих фирм и частных лиц.

2. Доступное программное обеспечение GNU

В настоящее время готовы далеко не все компоненты программного обеспечения проекта GNU. Тем не менее, FSF распространяет много программ, часть которых написана непосредственно программистами FSF, а часть передана в FSF для свободного распространения другими организациями и лицами. Коротко перечислим программные продукты, распространяемые FSF сейчас [3].

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.

3. Ближайшие задачи проекта GNU

Список работ, которые планируется выполнить в рамках проекта GNU, весьма обширен [4]. Приведем лишь краткий обзор основных направлений.
3.1. Документация
Требуется подготовить ряд руководств по уже готовым или близким к завершению программам: справочное руководство по языку Си, описание GCC с включением руководства по определению целевых машин, руководство по программированию прикладных систем в среде X-Windows и т.д.
3.2. Проекты, связанные с разработкой свободного ядра Unix
В FSF ведутся работы по созданию ядра Unix на базе свободного микроядра Mach. К числу ближайших задач относится реализация сетевых протоколов TCP/IP и новой файловой системы (имеется надежда воспользоваться некоторыми готовыми программами, которые, как ожидается, будут объявлены свободными). Имеются и другие задачи, в том числе разработка удаленного отладчика ядра ОС.
3.3. Развитие свободной среды Unix
Необходима реализация некоторых утилит (sdiff, mailx, join и т.д.). Требуется развитие ряда библиотек. В числе задач стоит разработка средств дружественного пользователю терминального интерфейса.
3.4. Расширения существующего программного обеспечения GNU
В основном, в доработках нуждаются Emacs, GCC и GDB.

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

GCC необходимо доработать, чтобы устанить накопившиеся замечания и реализовать имеющиеся предложения (список замечаний и предложений распространяется вместе с GCC).

GDB нуждается в доработках по части внедрения в отладчик интерпретатора языка Си; нужны также некоторые доделки для возможности использования GDB при отладке программ, написанных на языках, отличных от Си.

3.5. Новые компиляторы
Требуется реализация компиляторов ряда языков программирования (Алгол, Алгол-68, ПЛ/1, Ада и т.д.) с выходом на кодогенератор GCC. (Такие работы для языков Фортран, Паскаль и Модула-2 уже ведутся.)
3.5. Масса других проектов
В текущем списке ближайших задач проекта GNU находится множество других разнообразных работ. Упомянем желание иметь свободные аналоги систем Page Maker, Ventura Pablisher, dbase2 или dbase3 и т.д. Требуется ряд программ для X-Windows. И т.д. и т.п.

4. Как получить более подробную информацию и/или программы GNU

Для связи с FSF в современных отечественных условиях лучше всего использовать электронную почту. Ответственным от FSF по связям с людьми, желающими присоединиться к проекту GNU, является Вальтер Поксон (Walter Poxon). Его e-mail адрес: wdp@gnu.ai.mit.edu. У него же можно получить информацию о правилах получения от FSF лент с программным обеспечением GNU. К сожалению, этот естественный путь не очень подходит для текущей советской действительности (плата за ленты хоть и символическая, но все-таки в твердой валюте).

В нашей стране на самом деле имеются все эти ленты. Любой их держатель в соответствии с правилами игры FSF обязан содействовать их дальнейшему распространению. К сожалению, это достаточно большая техническая работа. Советская ассоциация пользователей ОС UNIX (SUUG) планирует взять на себя, как только позволят технические условия, бесплатное распространение свободного программного обеспечения для своих членов и платное копирование лент для всех желающих (это дело ближайших месяцев). Все члены SUUG получат соответствующую информацию, текущие справки можно получить по адресу SUUG@USSR.eu.net через e-mail или по обычному адресу SUUG: 125502, Москва, ул. Лавочкина, д. 19.

Литература.

  1. Richard M. Stallman. The GNU Manifesto.
  2. GNU General Public License // Free Software Foundation, 1989.
  3. GNU's Bulletin // Free Software Foundation, 1991.
  4. GNU Task List (периодически обновляемый файл, доступный по e-mail; мы основывались на версии от 24 июля 1991 г.)
Copyright © CIT