|
- Philippe Fremy, 18.12.2003. Перевод - Alexey Remizov, remizov.pp.ru, оригинал -
Одна из особенностей последней
версии известной программы для работы с векторной графикой
Sodipodi - это интеграция
с KDE. Редактор можно настроить так, чтобы он использовал
файловый
диалог и диалога
предварительного просмотра печати KDE. Удивившись, что одно из
приложений Gnome Office будет интегрировано с KDE, я захотел взять
небольшое интервью у Lauris Kaplinski.
Philippe Fremy: Вы можете рассказать о себе? Чем Вы
занимаетесь, когда не работаете над свободным ПО?
Lauris Kaplinski: Мне 32 года, живу в Тарту (Эстония) со
своей женой и тремя детьми. Я работаю в местной новой биотехнической
компании, пишу программное обеспечение анализа генотипа и
родственности, в основном под Windows.
Помимо программирования, я провожу время в саду (мы живем в
особняке моей прабабушки, с большим старым парком), учу японский язык
(влюбившись в японскую поп-культуру несколько лет назад, все еще не
понимаю языка), читаю, рисую, пытаюсь ремонтировать дом (он старый и
пытается съедать все деньги, которые у нас появляются). Да, и конечно
с тремя детьми можно не беспокоиться о том, куда девать свободное
время (для начала, свободного времени просто нет ;-)
Philippe Fremy: Что делает Sodipodi? Как долго Вы
разрабатывали Sodipodi? Почему Вы занялись этим?
Lauris Kaplinski: Sodipodi вполне пригоден в качестве
приложения для работы с векторной графикой в общем и инструмента для
создания SVG в частности. По качеству своих возможностей он и рядом
не стоит с крупными коммерческими программами, но люди все же
используют его для создания иконок, постеров, визитных карточек и
многого другого. Есть наиболее используемые средства: основные
фигуры, кривые Безье, градиенты, растровые изображения,
трансформации, прозрачность, группировка и так далее. Одна из
интересных особенностей, это прямой доступ к дереву документа SVG, то
есть пользователь может вручную корректировать элементы, если
интерфейс программы не позволяет что-то сделать.
Первая запись в ChangeLog'е Sodipodi появилась в сентябре 1999
года, но проект стартовал примерно за год до этого, как
экспериментальная ветвь кодовой базы Gill. Gill это проект Raph
Levien, который (проект), был попыткой построить редактор SVG на
базе библиотеки DOM. Раньше команда разработчиков ядра Gnome
возлагала большие надежды на DOM, но пригодная для использования
реализация так и не появилась, и в конце концов они забросили эту
идею. Sodipodi отказался от полнофункциональной поддержки DOM, но
сохранил основную логику программы, то есть почти независимый уровень
XML в основе дерева документа.
Philippe Fremy: Как Sodipodi интегрируется в рабочую
среду Gnome? Какие технологии Gnome Вы используете?
Lauris Kaplinski: Насколько я знаю, серьезной офисной
платформы Gnome не существует, хотя это и обсуждают уже много
времени. Основные компоненты Gnome Office (Gnumeric и Abiword) –
состоявшиеся проекты с увлеченными (но раздельными) командами
разработчиков, поэтому трудно собрать всех под одной крышей (Abiword
написан на C++, gnumeric на C, Abiword кроссплатформенный, gnumeric –
только для Gnome). Кроме того, политика OpenOffice, 1-2 назад
серьезно коснувшаяся команды Gnome Office, замедлила общий процесс
разработки.
Во время перехода на GTK2 из Sodipodi были убраны все обязательные
зависимости от gnome, в основном, чтобы сделать возможным
портирование на Windows. Осталась только опция компиляции с
gnome-print. Таким образом, взято направление на
кроссплатформенность, разумную независимость приложения и возможность
интеграции с максимальным (и приемлемым) количеством сред.
Philippe Fremy: В какой десктопной среде Вы работаете?
Что Вы думаете о последних версиях KDE и Gnome?
Lauris Kaplinski: В настоящий момент я работаю в KDE 3.1.
До этого был Rox Desktop, еще раньше – KDE и Gnome2. У меня
относительно скромные требования к среде - главное это приличная
панель и ненавязчивый менеджер окон. Что касается приложений, я в
основном запускаю Konqueror, Evolution, XChat и Emacs.
Я считаю KDE 3.1 удобным (в конце концов, поэтому я им и
пользуюсь). Конечно там есть вещи, которые режут глаз, и остаются
штучки, которые я не могу настроить, но в общем он делает работу
довольно комфортной. :-)
О Gnome2 судить труднее. Он как MacOSX – кто-то любит его,
кто-то ненавидит, но мало кто остается равнодушным. Для меня, как и
для еще некоторых людей, Gnome1 был хакерским десктопом (и он нам
нравился), а Gnome2 – корпоративный десктоп (и с ним мы не
чуствуем себя комфортно).
Philippe Fremy: Кто Ваши пользователи? Есть ли среди них
клиенты из сферы коммерции? Кого среди них больше: пользователей KDE
или Gnome?
Lauris Kaplinski: Трудно сказать. Мне неизвестно о
коммерческом использовании (кроме того, я считаю, что Sodipodi для
этого не готов). В основном, отзывы приходят от непрофессиональных
художников, программистов, которым нужны какие-то векторные рисунки,
преподавателей, обучающих этому студентов...
Судя по скачиваниям, самый большой процент пользователей
используют Windows... Все остальное действительно тяжело оценить, но
я думаю, что Gnome используют около 2/3, а KDE – 1/3.
Philippe Fremy: Какова цель интеграции с KDE? Как она
работает? Собираетесь ли Вы обратить внимание на другие библиотеки,
чтобы достичь цели? Было ли сложно делать часть разработки на C++?
Насколько это было тяжело? Можно ли снова использовать Вашу работу?
Lauris Kaplinski: Я вел разработку на C++ на работе, и мне
начало это нравиться, так что вполне возможно, в будущем в Sodipodi
появится больше кода на C++...
Основная цель была в технически разумных пределах сделать Sodipodi
таким, чтобы пользователи KDE чувствовали себя в своей тарелке.
Определенно, стандарты Freedesktop и общедоступные темы стирают много
низкоуровневых отличий по части look&feel различных платформ для
приложений. Остаются (и бросаются в глаза) некоторые вещи высокого
уровня, такие как система печати - если все используют печать при
помощи KDE-print, то и Sodipodi не должен быть исключением - и
файловый диалог (файловый диалог Gtk+ выглядит довольно чуждым в
KDE).
Если Sodipodi компилируется с поддержкой KDE, создается
KApplication (вдобавок к инициализации Gtk+) и объект KDEBridge.
Потом включаются таймауты и слоты guiThreadAwake, которые вызывают
главный цикл обработки событий Gtk+, когда Sodipodi израсходует время
в цикле событий Qt/KDE.
Если Sodipodi нужно отобразить диалог KDE (сейчас они все
модальные), просто вызывается соответствующий статический метод,
вроде KfileDialog::getOpenFileName, и используется KDEBridge для
обновления окна Gtk+. Сделать настоящую печать настолько же просто,
насколько просто написать “оберточный код” для передачи
RGBA-строк, генерируемых Sodipodi, на KPrinter.
Написать KDEbridge было относительно просто (я просто восхищен
документацией по Qt/KDE ;-) Конечно, некоторое время уходит просто на
то, чтобы увидеть полную картину (MOC, что-то еще ;-), но в общем это
не тяжелее, чем начинать работать с любой другой незнакомой
библиотекой.
Код вполне можно использовать, если печать и файловый диалог это
все, что вам нужно... Но все это пока остается лишь небольшим хаком,
который можно написать за день... Я хотел бы использовать настоящую
интеграцию главного цикла, но единственное, что я нашел в этой связи,
это QGtkWidget написанный Bernhard Rosenkraenzer, и, к сожалению, он
не портирован под Gtk+ 2.0.
Philippe Fremy: Не противоречиво ли разрабатывать
приложение Gtk и интегрировать его в KDE?
Lauris Kaplinski: Около полутора лет назад я был
“просветлен” письмом от одного увлеченного пользователя
KDE. Этот парень устанавливал библиотеки разработчика Gnome каждый
раз, когда выходил новый релиз Sodipodi, только для того, чтобы его
скомпилировать. И в это время Sodipodi довольно сильно зависел от
Gnome, так что найти правильные библиотеки было не всегда простой
задачей.
Тогда я решил сделать программу для максимально возможной
аудитории. Поскольку чистого победителя в войне десктопов нет, в
обозримом будущем такой путь может оказаться выходом. Конечно, есть
вероятность, что в итоге многие вещи будут собраны вместе
(freedesktop), но если вы хотите распространять приложения сегодня, и
увеличивать количество потенциальных пользователей, а не участвовать
в войне десктопов, лучше попытаться подстроиться под любые
пользовательские предпочтения.
Если честно, я взял идею из библиотеки Qt/Win32, которая AFAIK
может по запросу использовать собственные диалоги Windows для выбора
файлов и печати. Кроме того, конечно присутствует некоторая туманная
позиция “потому что я могу” - такие штучки делают
программирование приятнее. Я надеюсь на днях расширить поддержку KDE,
реализовав ее как загружаемый модуль (так можно будет распространять
единый бинарный пакет Sodipodi), и добавить KIOSlaves...
Philippe Fremy: Чтобы Вы включили в список пожеланий для
того, чтобы в будущем было проще делать подобную интеграцию? Что Вы
думаете о текущих взаимоотношениях Gnome и KDE?
Lauris Kaplinski: Удобство подобных “хаков” для
мульти-десктопной интеграции сильно зависит от сотрудничества
различных десктопов в общем. Сейчас выбора нет - если я хочу
предоставить пользователю доступ из Sodipodi ко всем принтерам KDE, я
должен связываться с KDEPrint. Но может появиться выход, если
возникнут какие-то стандарты печати для десктопа.
Мое самое большое пожелание это простое объединение циклов событий
Qt и Gtk+. Возможно, это относительно просто сделать (и то и другое –
современные кроссплатформенные инструментарии), но нужен кто-то, кто
хорошо разбирается во внутренновтях того и другого...
Сотрудничество KDE и Gnome это, конечно, хорошо, но я не думаю,
что это первоочередная необходимость для того, чтобы Linux был
жизнеспособной десктопной платформой. По моему мнению, более
серьезной проблемой является функциональная совместимость разных
версий одного и тогоже набора инструментов/десктопа. Приложения
написаныне для Windows95 относительно неплохо смотрятся под
WindowsXP. Программы, написанные под Gtk1 выглядят совершенно
посторонними в последнем Gnome (не знаю как насчет Qt/KDE).
Philippe Fremy: Хотели бы Вы добавить что-нибудь еще?
Lauris Kaplinski: Все говорят о Линуксе на десктопе, но
иногда я думаю, действительно ли это то, чего мы хотим? Готовы ли
сетевые сообщества играть с крупными финансовыми интересами на их
поле? Планируем ли мы перейти на следующую партизанскую платформу,
чтобы наслаждаться свободой чистого программирования? Но все равно,
пусть все идет своим чередом. ;-)
|