Журнал LinuxFormat - перейти на главную

LXF96:Интервью

Материал из Linuxformat
Перейти к: навигация, поиск

GEGL идет в будущее

Студент, изучающий графику, и демо-художник в одном лице, Ойвинд Колас обосновался в самом сердце создания Грааля разработчиков GIMP – движке GEGL. Мы отправились в Монреаль, где он представлял обновление на конференции Libre Graphics...

У Ойвинда Коласа [Øyvind Kolås], более известного разработчикам GIMP и всем участникам этого проекта под ником «pippin», весьма непринужденные манеры. Я зажал его в угол с чашкой кофе, вытащив из зала, где проходила большая часть нынешней конференции Libre Graphics, и хочу поговорить с ним о GEGL: в этом вопросе он разбирается лучше всех в мире.

Проект GEGL стартовал больше семи лет назад. Его главной идеей было создание движка для обработки графики, способного решить все проблемы GIMP, на которые жалуются пользователи: скорость, отсутствие пространств цветов, ограниченная разрядность цвета. Однако изначальный проект забуксовал, едва появившись, и сдвинулся только тогда, когда в него заглянул Ойвинд Колас – из чистого любопытства. И теперь GEGL уверенно продвигается по прямой дороге к будущим версиям. Как же получилось, что Ойвинд Колас принял на себя полную ответственность за проект? Ник Вейч разберется.

Linux Format: Что привело вас к программированию инструментов для работы с графикой?

Ойвинд Колас: Я начал программировать всякую всячину, связанную с графикой, когда мне было лет 13–14. У меня есть опыт и в искусстве, и в компьютерах. После окончания школы я задумался, чем бы заняться дальше, и предпочел изобразительное искусство, решив стать дизайнером. Ну, и отправился в художественную школу, в Испанию. Я поступал в разные учреждения, и уже почти поступил, но не совсем: тут я вернулся к своему второму хобби и принялся за изучение мультимедиа и компьютеров, занимался этим года два, а потом вдруг стал преподавать!

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

LXF: Да, уметь совместить эти два хобби, должно быть, действительно круто. Как вы думаете, вы пришли бы к этому, если бы поступили в колледж искусств?

OK: Я бы продолжал использовать компьютер – я и тогда уже писал свои небольшие инструменты.

LXF: Значит, это было неизбежно?

OK: Я всегда занимался и тем, и другим.

LXF: Давайте вернемся к настоящему. Вы — ведущий разработчик GEGL, движка, который, помимо прочего, станет сердцем будущих версий GIMP. И как дела у GEGL?

OK: Положение дел на данный момент таково: GEGL уже существует, и он делает то, для чего и был разработан. Пока что он не вполне оптимален, но у него есть небольшой публичный API, который – я уверен – надолго останется стабильным. Он достиг той стадии, когда создаются привязки для языков C#, Python и Ruby, и уже можно начинать рекомендовать его к использованию.

LXF: Я не заглядывал в код где-то месяц. Вы не введете меня быстренько в курс того, что происходит с последней версией?

OK: Последняя версия появилась как раз перед Fosdem. Несколько месяцев перед Fosdem у меня был прямо спринт, связанный с кодом, но с тех пор мне было как-то некогда с ним поработать. Разработка впала в спячку. В прошлом месяце у меня вылетела из головы вся кодовая база GEGL. А теперь я в процессе закидывания ее обратно.

LXF: По-вашему, это трудно? Трудно писать код для GEGL?

OK: Некоторые вещи в нем очень нетривиальны. Сейчас там есть масса интересных штук – сделать их нетрудно, но делать-то все-таки надо! То, что я сумел достичь той стадии, когда появился публичный API для Fosdem, было весьма утешающим. Теперь можно вернуться назад, перетрясти внутренности, увеличить скорость и заняться рефакторингом, не меняя внешний API. Все созданные скрипты будут и дальше работать, но в более поздних версиях скорость будет продолжать увеличиваться.

LXF: Это, должно быть, лучший способ – потому что постоянно видна осязаемая разница.

OK: Это я позаимствовал из другого проекта. Он фокусировался на стабильности API и весьма консервативно относился к любым изменениям в нем, но при этом добавлял в код инструменты, чтобы отслеживать изменения от версии до версии. Я тоже могу создавать графики процессов внутри кода GEGL и отслеживать, какие из них используют больше всего времени – скажем, обработка данных или преобразование пикселей.

LXF: Хотя в GEGL много участников, вам по большей части приходится работать над ним самому, не так ли?

OK: Да. Я не являюсь исходным автором, но...

LXF: А у вас нет ощущения, что вы предоставлены сами себе?

OK: Мне всегда помогали. Чего я добился – это попыток мыслить стратегически о том, что можно сделать, чтобы вовлечь в проект новых людей. Когда я начал воскрешать GEGL почти два года назад, ко мне обращались люди и спрашивали, чем они могут помочь, а я отвечал: «Не знаю». Мне потребовалось время на освоение существующей кодовой базы, на то, чтобы разобраться в ее работе, и на то, чтобы изменить то, что не нравилось другим или не нравилось мне.

Теперь, когда есть публичный API, этот API и есть GEGL. Сейчас простора для экспериментов куда больше, чем раньше. Все компоненты определены, и они работают. Еще одна сфера, куда можно привлечь других – модули расширения.

Это та часть API, которая пока что нестабильна, кроме кусочка, который отвечает за создание приложением конвейера для обработки изображения и настройки параметров для каждого действия. Но по части создания новых элементов обработки – тут такой гарантии нет. Причина в том, что начинка требует рефакторинга и реструктуризации, и я бы хотел добавить несколько функций, которых пока нет. И если мне удастся вдохновить кого-нибудь на написание модулей расширения, то нужно будет решить все эти проблемы.

LXF: Насколько высоко это все стоит в вашем списке приоритетов?

OK: Я еще не так далеко зашел.

LXF: Но ведь при каждом добавлении наверняка есть искушение взять да добавить еще что-то?

OK: Есть определенные вещи, которые пока невозможны, но должны стать возможными. И в процессе их превращения в возможные не исключено, что каждому модулю расширения придется изменять свое поведение. И поскольку я в курсе изменений, я не очень охотно публикую API. Он просто очень быстро устареет.

LXF: Раньше мы говорили о том, сколько времени вы сможете уделять GEGL в будущем. Можно ли считать, что сейчас он достиг такого состояния, что при необходимости эстафету может принять кто-то другой?

OK: М-мм... да.

LXF: Желающие найдутся?

OK: Я думаю, что заинтересованных найдется немало. Сейчас код в таком хорошем состоянии, что у любого получится поддерживать его в рабочем состоянии – и это не займет много времени. И теперь уже есть кое-какая документация, так что это в принципе будет возможно.

LXF: Намного проще, чем то, что делали вы...

OK: Я сильно боялся приниматься за GEGL. Когда я впервые загрузил код из CVS, я просмотрел его и ничего не понял. Мне очень понравилась сама идея. Поэтому я написал собственный прототип библиотеки обработки изображений, очень похожий на GEGL, а заодно использовал его для своего проекта редактирования видео. Процесс возрождения GEGL был фактически слиянием этих двух проектов. В моей программе обработки изображений уже имелись модули расширения, и она была частью полного приложения для редактирования видео, в котором можно было создавать композиции и добавлять спецэффекты. Мы с другом сделали несколько клипов с использованием этой программы.

LXF: Потрясающе, и они были хороши?

OK: Ну... один из них заработал какую-то награду в области независимого видео, а другой пару раз прокрутили на MTV. Так что это была работа по редактированию коммерческого видео. Опыт создания той библиотеки позволил вернуться к GEGL и подумать: «Так, ну и что должна делать эта программа?» Я осознал, что есть большие куски кода, которые не имеют ничего общего с остальными. То есть получалось три или четыре реализации одного и того же, часть из них не работала, и ни одна не стыковалась с центром.

Когда мы начали чистить код, этим занимались разработчики GIMP, Свен Нойман [Sven Neuman] и Митч Наттерер [Mitch Natterer], и они же следили за тем, чтобы все соответствовало основному направлению работы GIMP. А я в это время пытался втиснуть туда концепции, которые были в моем прототипе. Это было летом 2005 года.

Тогда много чего произошло, а потом какое-то время было затишье. И я создал библиотеку под названием Babl, которая была просто средой для преобразования изображений, вырванной из прототипа. У меня уже был код, но я отдельно выделил его для Babl а затем использовал её в GEGL. Для кода GEGL, сделанного в прошлом году, я многое позаимствовал из собственного кода, интегрируя в GEGL то, над чем работал последние пять или шесть лет.

LXF: Трудно будет бросить GEGL, если вдруг придется это сделать?

OK: Вообще-то я не собираюсь расставаться с этим проектом. Это моя игрушка. Мне самому подавай, чтоб была библиотека для работы с алгоритмами обработки изображений. Еще я хочу попробовать несколько экспериментов по использованию GEGL.

LXF: Как движок он имеет множество потенциальных возможностей использования. Понятно, что в нем заинтересованы разработчики GIMP, ведь он обеспечит работу будущих версий этой программы. Но людям интересно: а годен ли он и для других приложений?

OK: Надеюсь, да. Поэтому я и занимаюсь и привязками, о которых говорил раньше, и стабильностью API. Это попытки вдохновить других использовать его и создать вокруг него солидное сообщество пользователей. Много чего мы никогда не узнаем, пока люди не начнут этим пользоваться. И также станет возможным иметь общие модули расширения.

LXF: Даже доступ к цветовым пространствам пригодится некоторым простым приложениям. Но пока что никакие другие крупные проекты не заинтересовались GEGL?

OK: Ну, привязки к C# делает человек, работавший в проекте F-spot, а привязки к Python задумывал один создатель анимационных программ. Много всего разного происходит.

LXF: Странно было бы, если бы охотников не нашлось. Отложим на время GEGL в сторону: есть ли другие проекты, которые вас интересуют?

OK: У меня не так уж мало проектов, которыми я занимаюсь, и в частности, меня очень интересует интерфейс пользователя и его дизайн. Я подхожу к пользовательскому интерфейсу экспериментально. Когда-нибудь я, возможно, напишу нечто вроде Aperture или другого приложения для работы с фото. Я экспериментировал со множеством техник. В данный момент у меня есть пара безумных идей, но я не уверен, что они сработают.

LXF: Вы никогда не ощущали, что на вас давят, потому что GIMP смотрит на GEGL как на движок для своих будущих версий?

OK: Ну, это, конечно, еще одна мотивация для меня. Но это не такое уж давление. GEGL находится в такой стадии, что как только они [разработчики GIMP] начнут им пользоваться и поинтересуются, почему некоторые функции тормозят, у них найдутся талантливые программисты, способные помочь с GEGL.

LXF: Полагаю, что деятельность начнется весьма кипучая – это будет отличной проверкой работы GEGL...

OK: Когда я рассказывал, что было сделано раньше, некоторые из упомянутых изменений относились к производительности и к тому, как архитектура справляется с требованиями производительности. С некоторыми вещами уже все ясно – по типу: допустим, сейчас скорость невелика, а вот изменим то-то и то-то...

Однако это не причина их не интегрировать, потому что все эти изменения будет внутренними и не будут отображаться в публичном API.

LXF: И когда мы увидим первый GEGL, на котором работает GIMP?

OK: Когда он будет готов!

LXF: Я уж было решил, что в этом году, однако сейчас моя уверенность ослабела... OK: Чтобы оптимизировать работу, я решил остаться с GEGL. Это важно и для меня, и для основных разработчиков GIMP – они знают, что кто-то работает над GEGL, и программа работает хорошо, и когда наступит время интегрировать их, есть человек, который знает, что и как надо сделать. В идеале нам бы хотелось, чтобы это произошло быстрее, но тут трудно судить.

Персональные инструменты
купить
подписаться
Яндекс.Метрика