LXF96:Интервью
|
|
|
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, и программа работает хорошо, и когда наступит время интегрировать их, есть человек, который знает, что и как надо сделать. В идеале нам бы хотелось, чтобы это произошло быстрее, но тут трудно судить.