LXF151:Интервью: Чейз Дуглас
|
|
|
- Кодировщик пользовательского интерфейса Canonical ломает голову над добавлением поддержки мультитач в Ubuntu...
Чейз Дуглас [Chase Douglas] работает над внедрением технологии мультитач и жестов в рабочий стол Ubuntu. Мы поймали его после выступления на конференции OSCON и расспросили о трудностях работы с X Window System и о том, с чем сталкивается его команда, укрощающая бесчисленные сенсорные устройства.
LXF: Работая с мультитач, не ощущаете ли вы, что наступаете на ногу Apple? На официальной презентации iPhone Стив Джобс [Steve Jobs] представил интерфейс мультитач и сказал: «Ребята, мы это запатентовали».
ЧД: Я разработчик, и мне лучше держаться подальше от патентов, так что я в них не разбираюсь. Я просто выполняю свою работ у как можно лучше, а патенты – дело юристов.
LXF: Выступая на OSCON, вы много говорили о том, как трудно было впихнуть все эти мультитач-технологии в X Window System, которой, по вашим словам, уже 24 года. Не в том ли проблема, что X сознательно поделена на сервер, менеджер окон и инструментарий?
ЧД: Знаете, не такая уж это и проблема. Это создает некоторые трудности, но зато избавляет от других. Главной трудностью был тот факт, что она создала протокол – серию протоколов – которые нужно соблюдать. Мы не могли ни нарушить, ни изменить их. Поэтому приходилось решать вопросы с обратной совместимостью – это проблема посерьезнее, по крайней мере, на мой взгляд. Кто-то, наоборот, видит в этом плюс – до сих пор можно запускать приложения 20‐летней давности. Что одному – хлам, то другому –клад... Мы стараемся сделать среду более современной. Мы хотим, что бы Ubuntu была доступной и, разумеется, не хотим, чтобы она выглядела пришедшей из восьмидесятых.
LXF: C этими приложениями Xlib...
ЧД: Да. Пока это для нас некоторое препятс твие. Но ведь они добились и много хорошего, отвлекаясь от протоколов. Я вовсе не ругаю X и не утверж даю, что это плохой проект. Просто в наше время с ним трудно работать, из-за принятых ими решений, но что выросло, то выросло.
LXF: А стоило ли вкладывать столько средств и сил, впихивая все это в X — не начать ли было прямо с Wayland?
ЧД: Меня пока не привлекали к работе с Wayland, но, надеюсь, вскоре это произойдет. Проблема, насколько я знаю, в том, что Wayland пока просто не готов. Мы же пытаемся разрабатывать решения на сегодня – причем готовые, и разработчики могут их использовать. Медленно создавая этот стек с самого начала – внедряя мультитач в ядро, создавая протокол, добавляя драйверы устройств. Закончил и с ядром, теперь нужно провести все через Window Server... Далее нужно создать стек жестов, собрать их в библиотеку... Конечно, никто не хочет использовать низкоуровневую библиотек у С, с чего и надо начать, поэтому мы создаем что-то вроде QML для Qt или libgrip для приложений GTK. Короче, нужна отправная точка. А Wayland для этого пока не годится. Хотя через год, или около того, он будет очевидной альтернативой. Мы просто начали слишком рано, чтобы базировать все на Wayland. Мы к этому не готовы. Qt все больше интегрируется с Wayland, но я все равно не думаю, что им удастся добиться полной поддержки до Qt 5, который выйдет не раньше конца этого года или начала следующего – пока что его нет.
LXF: И каковы сейчас ваши возможности? У вас есть движок жестов и uTouch. Допустим, вы пишете приложение для Gnome или GTK 3, и хотите включить поддержку жестов — что для этого нужно сделать?
ЧД: Мы постарались максимально обойтись без требования специальных знаний. Пишете ли вы приложение GTK или QML – в теории, все что вам нужно знать – это как работают наши расширения. Мы абстрагировали X, абстрагировали ядро. Это положительный момент. За ним стоит вопрос, поддерживает ли ваша среда какой-либо из наших проектов, и если нет, можете ли вы перейти на низкий уровень, в C? Так что в GTK у нас есть libgrip – весьма простая библиотека, предлагающая слой абстракции для обработки жестов. Она не совершенна, но позволяет решать простые задачи, которые вам, возможно, нужны, такие как проведение по экрану двумя пальцами для пролистывания страницы, или поворота картинки. Но выполнять сложные жесты в разных частях окна она не умеет. Одолеть «сырые» события мультитач не так просто.
LXF: Можете ли вы получать координаты точек прикосновения?
ЧД: С libgrip – не думаю. Можно использовать X, если вы уверенно себя чувствуете на низком уровне; там это есть. Наш следующий шаг такой: у нас есть низкоуровневые решения, и нам нужно их предъявить, так проще.
LXF: Должно быть, сложно писать движки распознавания жестов, ведь они должны быть очень быстрыми — и вы же не хотите, чтобы из-за их работы зашкаливал CPU? Наверняка потребовалась масса расчетов?
ЧД: На самом деле, не так уж и много. В распознаватель включены две основные вещи. Во-первых, это простые вычисления, вроде расстояния перетаскивания, угла поворота, силы нажатия. Все это технически выполнимо и не слишком сложно. Во-вторых, пороговые значения. Первоначально нашей целью был Unity. Мы должны были обдумать такие действия, как масштабирование тремя пальцами. Если вы просто делаете вот так [кладет два пальца на стол] и слегка двигаете, это не нажатие, так что нужны пороги. Это второе, зачем нужен распознаватель. Третье, что мы добавляем именно сейчас, это комбинаторная логика, но это просто клубок циклов ‘for’ и все такое. Со стороны кажется сложно, а фактически... всего лишь куча соединений и переключений. Сложнее всего сейчас, пожалуй, приручить некоторые устройства. Лучшие мультитач-устройства, c которыми нам довелось поработать, это Apple. Сенсоры на их ноутбуках – такие как сенсор Bluetooth и мышь Bluetooth – самые точные и подробные. Настолько точные и подробные, что приходилось даже фильтровать в ядре часть их сообщений. Но даже при этом, желая распечатать все события, которые устройство посылает в терминал, приходится ждать минут 10, пока этот непрерывный поток не остановится. В конечном итоге, это стало одной из наших трудностей: как получить нужные данные, но без излишней подробности. Думаю, насчет нагрузки на CPU мы можем быть спокойны. Она не так уж велика. Вспомним о расчетах графики в играх – по большей части это GPU, но когда вы играете, в каждом кадре все равно появляется немало чего. По сравнению с жестами, не думаю, что они требуют столько же ресурсов.
LXF:Полагаю, есть и другая проблема: одно дело — высокоточное оборудование, но Linux должен работать и с массой других устройств, так что вам придется столкнуться и с устройствами ввода, не столь точными.
ЧД: Верно, такие попадаются, и часто. У Apple оборудование потрясающее, и я не хотел бы порочить других производителей, но... иногда, реализовывая поддержку сенсорных экранов некоторых компаний, мы сталкивались с «фантомными жестами» – то есть вы ничего не трогали, а оно говорит: «о, касание там-то!». Кратковременно.. может, статическое электричество или подобные штуки. Не знаю, возможно, нужно улучшение калибровки, но когда вы пытаетесь распознать жест двумя пальцами, а получаете фантомное событие, значение и семантика распознавания от этого меняется, и все идет прахом. Обратный случай – когда вы трогаете экран, а он тут же отвечает «касания нет» – тоже проблема. Есть проблемы с некоторыми сенсорными устройствами. Некоторые устройства Synaptic, например, выдают всего лишь ограничивающий прямоугольник ваших жестов, и если вы прикасаетесь двумя пальцами, вы знаете, где максимум X и Y и где минимум X и Y, но точные координаты вам неизвестны. Поэтому когда мы сталкиваемся с такого типа устройствами, мы знаем, что с ними можем только наладить перетаскивание двумя пальцами, поскольку видно перемещение ограничивающого прямоугольника, и настроить масштабирование, поскольку видно его сжатие и расширение, но вот повернуть его не удастся. То есть эвристически это возможно, но сложно.
LXF:С этими менее совершенными тачпадами, наверное, стоит добавить в коде чуточку искусственнного интеллекта, чтобы не получалось, что кто-то при перетаскивании прерывает касание на долю секунды..
ЧД: Мы над этим работаем. Пока просто не получалось уделить этому достаточно времени, но это у нас в планах. Надеемся, вскоре часть этих проблем удастся устранить.