Графическая среда с претензией
But the Gnomes were numbered by name and kin marshalled and ordered in the mighty square J.R.R.Tolkien, The Flight of the Noldoli (Но гномы, гордые своим и
именем, и родом, Дж.Р.Р.Толкин, Побег Нолдоров) |
GNOME (www.gnome.org) означает GNU Network Object Model Environment и представляет собой проект, работающий над развитием пользовательского интерфейса Unix. В числе целей GNOME значатся: единообразный графический пользовательский интерфейс и механизм печати, набор универсальных и дружественных к пользователю инструментов, стандарт компонентного программирования для Unix. Как и другие программы GNU, GNOME работает на большинстве Unix-подобных систем, включая, разумеется, и Linux.
Попытки создать более-менее приличный графический пользовательский интерфейс для Unix предпринимались неоднократно и с переменным успехом. Наиболее известны среда CDE (Common Desktop Environment) и ее некоммерческий клон под Linux - KDE, а лучшим достижением с технологической точки зрения можно считать канувшую в Лету операционную систему NextStep компании NeXT, созданной ушедшим из Apple Стивом Джобсом. При великолепной интеграции приложений и объектном окружении (для которого был разработан язык Objective C, более мощный и простой, чем C++) платформу NeXT подвели скудные аппаратные средства и тяжелая поступь IBM PC.
GNOME относительно молод, он был основан в августе 1997 года в рамках проекта GNU, но после того, как его основателям удалось заинтересовать довольно большое количество вольных разработчиков (через год после старта их уже насчитывалось две сотни), развитие среды GNOME пошло бешеными темпами. Помогла разрабатывать GNOME и компания Red Hat, в январе 1998 открывшая в Англии лабораторию Red Hat Advanced Development Lab (RHAD), в которой были разработаны многие компоненты GNOME. В мае 1998 года вышла первая интегрированная версия 0.20, и уже в феврале была выпущена первая стабильная версия GNOME 1.0 (на самом деле из-за того, что Red Hat поторопила с выпуском, эта версия получилась не такая уж стабильная).
Быстрой разработке поспособствовала и структура "Гнома", который разбит на набор ключевых библиотек и использующие их программы, которые разрабатываются и поддерживаются независимо. Список программ, разработанных под GNOME или просто поддерживающих его, довольно обширен и постоянно пополняется. Уже сейчас в него входит текстовый процессор, электронная таблица, почтовая программа, несколько календарей, несколько клиентов ICQ и IRC и огромное количество мелких полезных и бесполезных программ. GNOME поддерживают многие распространенные оконные менеджеры, включая продвинутый Enlightenment, скромный Icewm, классический Fvwm2 и мой любимый WindowMaker.
Так что же представляет из себя собственно GNOME? В первую очередь это составляющая основу единого графического интерфейса библиотека GTK+. Первоначально она была разработана как основа графического пакета GIMP (GNU Image Manipulation Program), но вскоре простота и возможность программирования на множестве языков - от Си и Perl до Scheme и Tom - сделали GTK+ любимой библиотекой разработчиков свободных программ для X Window. Помимо GNOME, к GTK+ обратились и разработчики Mozilla - следующего поколения браузеров Netscape.
В дополнение к виджетам (элементам графического интерфейса) GTK+ в GNOME есть канва (Canvas), в которую можно помещать обычные виджеты и в которой одновременно можно быстро отображать любую графику. Механизм рендеринга канвы, помимо стандартных графических примитивов, поддерживает вывод сглаженных и полупрозрачных объектов, операции над векторами, кривые Безье и шрифты Type1. При этом производительность канвы достаточна для того, чтобы обновлять сложную графику без задержек и мелькания.
Еще один кит графического пользовательского интерфейса - система метаданных, позволяющая приложениям семантически привязывать к некоторым файлам и типам файлов свою информацию - иконку, программу для просмотра и т.п. Нечто подобное реализовано в Windows в виде свойств (Properties), а в MacOS метаданные хранятся прямо в файле и называются "Resource fork".
Метаданные GNOME построены так, чтобы соответствовать господствующей в Unix идеологии использования набора мелких специализированных программ и не конфликтовать с программами, разработанными без оглядки на GNOME. Привязка к типу файла осуществляется при помощи сигнатур, как в команде file, или посредством применения регулярных выражений вроде /.*\.gif$/ к имени файла, а настройки для отдельных файлов хранятся отдельно для каждого пользователя и для всей системы в целом. Типы метаданных соответствуют типам MIME.
Наконец, о том, что делает GNOME не только графической, но и объектной и сетевой средой. GNOME использует для интеграции приложений архитектуру CORBA, которая предназначена для построения распределенных приложений из объектных компонентов. Использование CORBA позволяет оформлять приложения GNOME в виде серверов, предоставляющих услуги другим программам. Так, например, почтовая программа Balsa реализует интерфейс GNOME::MailMessage, посредством которого любое приложение может составлять и рассылать электронную почту. Можно даже расширить этот интерфейс, предоставив возможность редактирования HMTL-сообщений или чтения новостей.
Помимо этого, CORBA обеспечивает взаимодействие между процессами. Это используется, в частности, в системе встраивания документов Baboon, которая предоставляет возможности, аналогичные MS OLE, и реализована на CORBA.
Итак, GNOME - молодой и претенциозный проект, пытающийся разом решить большинство проблем с графическим пользовательским интерфейсом Unix и учитывающий опыт существующих разработок в этой области. Для программы, задуманной всего полтора года назад, GNOME продвинулся очень далеко - он уже обладает достаточно широким набором функциональных возможностей, не достает только стабильности, которой привыкли хвастаться свободные программы. Теперь, после выпуска первой версии, самое время остановиться на время и сделать из проекта продукт.
Дмитрий БОРОДАЕНКО
Горячие темы