С.Кузнецов, Центр Информационных Технологий
1. Фонд свободного программного обеспечения и проект GNU
Фонд свободного программного обеспечения (FSF - Free Software Foundation) представляет собой
очень интересное и во многих отношениях исключительное явление в современном мире
программирования. Многим отечественным программистам приходилось иметь дело с
программами из FSF (особенно хорошо известна система программирования GCC), однако
недостаточное количество публикаций на русском языке затрудняет понимание идеологии и целей
FSF, а также усложняет оценку имеющегося задела. Одной из целей доклада является хотя бы
частичное устранение этого пробела.
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 развивается плановым
образом, но FSF принимает для свободного распространения и программы, разработанные
фирмами и частными лицами по собственной инициативе. Кроме того, FSF занимается
производством и продажей лент со свободным программным обеспечением, подготовкой,
публикацией и распространением руководств по различным компонентам программного
обеспечения GNU, а также поддерживает и распространяет справочник услуг - список фирм и
частных лиц, которые оказывают платные услуги пользователям программ и систем GNU.
Финансовой основой FSF является продажа магнитных лент и компактных дисков с текстами
программ GNU, документации в электронной и бумажной форме, а также спонсорство
коммерческих фирм и частных лиц.
В настоящее время готовы почти все компоненты программного обеспечения проекта GNU. FSF
распространяет много программ, часть которых написана непосредственно программистами FSF,
а часть передана в FSF для свободного распространения другими организациями и лицами.
Коротко охарактеризуем наиболее интересные программные продукты, распространяемые FSF [3].
Emacs - расширяемый, настраиваемый на разные типы терминалов и потребности пользователей
редактор. Расширяемость редактора основана на использовании встроенного в редактор
интерпретатора языка Лисп (диалекта Common Lisp). Одновременно с исходными текстами
редактора распространяются руководство по использованию Emacs и справочное руководство по
программированию на языке Лисп в среде Emacs. Основной версией Emacs, поставляемой и
поддерживаемой в настоящее время FSF, является Emacs V.19. Эта версия редактора сохраняет
свойства всех предыдущих версий, включая возможность использования на самых простых
алфавитно-цифровых терминалах. Однако Emacs V.19 очень хорошо работает на графических X-
терминалах. На самом деле, только после перехода к использованию Emacs на X-терминалах
можно по-настоящему оценить возможности этого редактора.
Некоторое время тому назад существовала непростая проблема локализации Emacs
применительно к особенностям национального языка. Скорее всего, найдутся люди, которые
помнят, сколько хлопот принесла работа по первой русификации Emacs. Несколько лет назад
внезапно активизировавшиеся японцы создали собственную версию редактора Emacs под
названием MULE (MULtilingual Enhancement to GNU Emacs - не подумайте чего плохого). В этой
версии используется расширенная многобайтовая кодировка символов, позволяющая в одном
сеансе редактирования употреблять символы разных алфавитов (в частности, японский,
китайский, арабский, русский, греческий и т.д.). В настоящее время MULE интегрирован в Emacs,
и серьезные проблемы локализации отсутствуют. Видимо, сегодня Emacs является лучшим
текстовым процессором, работающим в среде Unix (в действительности, эта программа
представляет собой гораздо большее, чем простой текстовый процессор).
Bison - замена стандартного генератора синтаксических анализаторов Yacc с некоторыми
расширениями. Руководство также распространяется. Люди, которые использовали Bison при
разработке компиляторов, очень хвалят программу. В последнее время FSF ослабил требования к
использованию Bison, позволив легально его применять при разработке коммерческих продуктов.
Имеются две реализации упрощенного диалекта языка Лисп - Scheme: одна из MIT (написана на
языке Си), вторая из университета г. Yale (написана на Scheme).
Поставляется набор утилит texiinfo, генерирующих печатные и гипертекстовые документы, в виде
которых в основном поставляется документация проекта GNU.
GCC - переносимый оптимизирующий компилятор. Начиная со второй версии компилятор
поддерживает языки Си (ANSI C, традиционный Си, расширенный диалект GNU C), Си++ и
Objective C. Среди оптимизаций, выполняемых GCC, содержится автоматическое распределение
регистров, выявление общих подвыражений, вынесение инвариантных выражений из тела цикла и
т.д. Компилятор содержит средства полуавтоматического построения генераторов кода для новых
компьютеров.
Доступен целый ряд библиотек функций для языка Си и библиотек классов для Си++ и Objective
C.
Отладчик GDB может быть использован для отладки программ, написанных на языках Си, Си++ и
Фортран.
Для работы с версиями программ в больших программных проектах поддерживаются системы
RCS (Revision Control System) и CVS (Concurrent Version System).
Распространяется громадное количество программ X11, реализация MIT X-Windows (версия 11,
релиз 6). Объем доклада не позволяет остановиться на этом более подробно.
В основном все программы, распространяемые FSF, рассчитаны на работу в среде Unix и
используются с различными вариантами этой системы, но имеются версии некоторых программ
для работы с ОС VMS, Windows NT и даже MS-DOS.
Одним из особенно важным, но еще незавершенным проектом FSF является проект Hurd. Это
свободная реализация UNIX-совместимой операционной системы, основанная на свободно
распространяемом варианте микроядра Mach, разработанного в университете Карнеги-Меллон. В
соответствии с технологией Mach разработан ряд серверов, воспроизводящих базовые функции
ядра ОС UNIX. Интерфейс системных вызовов UNIX воспроизводится с помощью специально
разработанной библиотеки Си-функций. Серверы Hurd и библиотечные функции первоначально
были разработаны на платформе PC 396, но легко переносятся на другие аппаратные платформы.
Основной текущей проблемой является массовый перенос Mach на различные платформы.
Среди программ GNU находится большое число других продуктов, которые заслуживают
внимания, но мы не будем обсуждать их в этом докладе.
2. Другие наиболее распространенные продукты Public Domain
Наверное, самым популярным на сегодня программным продуктом Public Domain является UNIX-
совместимая ОС Linux, созданная молодым финским программистом Линусом Торвалдсом и
поддерживаемая с помощью Internet тысячами энтузиастов. ОС Linux основана на традиционных
принципах построения ядра ОС UNIX, что не помешало энтузиастам перенести ее на несколько
популярных аппаратных платформ.
Linux является одной из наиболее подходящих операционных систем для домашнего компьютера,
если человек не собирается использовать его только для написания текстов и лазания в Internet. По
отзывам практиков, программа, аккуратно написанная в среде Linux безо всяких проблем
переносится в среду любого другого варианта ОС UNIX (если, конечно, этот вариант
соответствует стандартам). С другой стороны, известны примеры промышленного использования
Linux, в частности, в телекоммуникационных системах.
Альтернативой Linux является ОС Free BSD, разработанная и распространяемая университетом
Беркли. Это одна из ветвей BSD UNIX, проекта, в течение многих лет разрабатываемого в
университете Беркли. Free BSD - это эффективная и экономичная операционная система,
единственным недостатком которой можно считать ее абсолютную ориентацию на Intel-
платформы. Я знаю многих людей, которые предпочитают использовать дома Free BSD, а не
Linux.
В том же университете Беркли разработан замечательный пакет Tcl/Tk - средство для разработки
графических пользовательских интерфейсов. Это свободно распространяемый продукт, прекрасно
документированный и очень легко осваиваемый. Известны многие реальные проекты,
выполненные с использованием Tcl/Tk, например, основанный на графическом интерфейсе пакет
администрирования Linux.
Как говорилось в начале доклада, тема свободно распространяемого программного обеспечения
поистине неисчерпаема. По этому поводу можно говорить бесконечно. Но лучше следить за
новыми программами самостоятельно.