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

LXF151:Интервью: Чейз Дуглас

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «=Интервью: Чейз Дуглас= : Ко­ди­ров­щик поль­зо­ва­тель­ско­го ин­тер­фей­са Canonical ло­м…»)
 
Строка 1: Строка 1:
 
=Интервью: Чейз Дуглас=
 
=Интервью: Чейз Дуглас=
: Ко­ди­ров­щик поль­зо­ва­тель­ско­го ин­тер­фей­са Canonical ло­ма­ет го­ло­ву над до­бав­ле­ни­ем под­держ­ки муль­ти­тач в Ubuntu...
+
: Кодировщик пользовательского интерфейса Canonical ломает голову над добавлением поддержки мультитач в Ubuntu...
Чейз Ду­глас [Chase Douglas] ра­бо­та­ет над внедре­нием тех­но­ло­гии муль­ти­тач и жес­тов в ра­бо­чий стол Ubuntu. Мы пойма­ли его по­сле вы­сту­п­ления на кон­фе­рен­ции OSCON и рас­спро­си­ли о труд­но­стях ра­бо­ты с X Window System и о том, с чем стал­ки­ва­ет­ся его ко­ман­да, ук­ро­щаю­щая бес­чис­лен­ные сен­сор­ные уст­рой­ст­ва.
+
Чейз Дуглас [Chase Douglas] работает над внедрением технологии мультитач и жестов в рабочий стол Ubuntu. Мы поймали его после выступления на конференции OSCON и расспросили о трудностях работы с X Window System и о том, с чем сталкивается его команда, укрощающая бесчисленные сенсорные устройства.
  
'''LXF''':Ра­бо­тая с муль­ти­тач, не ощу­щае­те ли вы, что на­сту­пае­те на но­гу Apple? На офи­ци­аль­ной пре­зен­та­ции iPhone Стив Джобс [Steve Jobs] пред­ста­вил ин­тер­фейс муль­ти­тач и ска­зал: «Ре­бя­та, мы это за­па­тен­то­ва­ли».
+
'''LXF''': Работая с мультитач, не ощущаете ли вы, что наступаете на ногу Apple? На официальной презентации iPhone Стив Джобс [Steve Jobs] представил интерфейс мультитач и сказал: «Ребята, мы это запатентовали».
  
'''ЧД''':Я раз­ра­бот­чик, и мне луч­ше дер­жать­ся по­даль­ше от па­тен­тов, так что я в них не раз­би­ра­юсь. Я про­сто вы­пол­няю свою ра­бо­т у как мож­но луч­ше, а па­тен­ты де­ло юри­стов.
+
'''ЧД''': Я разработчик, и мне лучше держаться подальше от патентов, так что я в них не разбираюсь. Я просто выполняю свою работ у как можно лучше, а патенты дело юристов.
  
'''LXF''':Вы­сту­пая на OSCON, вы мно­го го­во­ри­ли о том, как труд­но бы­ло впих­нуть все эти муль­ти­тач-тех­но­ло­гии в X Window System, ко­то­рой, по ва­шим сло­вам, уже 24 го­да. Не в том ли про­бле­ма, что X соз­на­тель­но по­де­ле­на на сер­вер, менед­жер окон и ин­ст­ру­мен­та­рий?
+
'''LXF''': Выступая на OSCON, вы много говорили о том, как трудно было впихнуть все эти мультитач-технологии в X Window System, которой, по вашим словам, уже 24 года. Не в том ли проблема, что X сознательно поделена на сервер, менеджер окон и инструментарий?
  
'''ЧД''':Знае­те, не та­кая уж это и про­бле­ма. Это соз­да­ет неко­то­рые труд­но­сти, но за­то из­бав­ля­ет от дру­гих. Глав­ной труд­но­стью был тот факт, что она соз­да­ла про­то­кол се­рию про­то­ко­лов ко­то­рые нуж­но со­блю­дать. Мы не мог­ли ни на­ру­шить, ни из­менить их. По­это­му при­хо­ди­лось ре­шать во­про­сы с об­рат­ной со­вмес­ти­мо­стью – это про­бле­ма по­серь­езнее, по крайней ме­ре, на мой взгляд. Кто-то, на­обо­рот, ви­дит в этом плюс – до сих пор мож­но за­пускать при­ло­жения 20‐летней дав­но­сти. Что од­но­му – хлам, то дру­го­му –клад... Мы ста­ра­ем­ся сде­лать сре­ду бо­лее со­вре­мен­ной. Мы хо­тим, что­ бы Ubuntu бы­ла доступ­ной и, ра­зу­ме­ет­ся, не хо­тим, что­бы она вы­гля­де­ла при­шед­шей из вось­ми­де­ся­тых.
+
'''ЧД''': Знаете, не такая уж это и проблема. Это создает некоторые трудности, но зато избавляет от других. Главной трудностью был тот факт, что она создала протокол серию протоколов которые нужно соблюдать. Мы не могли ни нарушить, ни изменить их. Поэтому приходилось решать вопросы с обратной совместимостью – это проблема посерьезнее, по крайней мере, на мой взгляд. Кто-то, наоборот, видит в этом плюс – до сих пор можно запускать приложения 20‐летней давности. Что одному – хлам, то другому –клад... Мы стараемся сделать среду более современной. Мы хотим, что бы Ubuntu была доступной и, разумеется, не хотим, чтобы она выглядела пришедшей из восьмидесятых.
  
'''LXF''':C эти­ми при­ло­жения­ми Xlib...
+
'''LXF''': C этими приложениями Xlib...
  
'''ЧД''':Да. По­ка это для нас неко­то­рое пре­пят­с т­вие. Но ведь они до­би­лись и мно­го хо­ро­ше­го, от­вле­ка­ясь от про­то­ко­лов. Я во­все не ру­гаю X и не утвер­ж даю, что это пло­хой про­ект. Про­сто в на­ше вре­мя с ним труд­но ра­ботать, из-за при­ня­тых ими ре­шений, но что вы­росло, то вы­росло.
+
'''ЧД''': Да. Пока это для нас некоторое препятс твие. Но ведь они добились и много хорошего, отвлекаясь от протоколов. Я вовсе не ругаю X и не утверж даю, что это плохой проект. Просто в наше время с ним трудно работать, из-за принятых ими решений, но что выросло, то выросло.
  
'''LXF''':А стои­ло ли вкла­ды­вать столь­ко средств и сил, впи­хи­вая все это в X — не на­чать ли бы­ло пря­мо с Wayland?
+
'''LXF''': А стоило ли вкладывать столько средств и сил, впихивая все это в X — не начать ли было прямо с Wayland?
  
'''ЧД''':Ме­ня по­ка не при­вле­ка­ли к ра­бо­те с Wayland, но, на­де­юсь, вско­ре это про­изой­дет. Про­бле­ма, на­сколь­ко я знаю, в том, что Wayland по­ка про­сто не го­тов. Мы же пы­та­ем­ся раз­ра­ба­ты­вать ре­шения на се­го­дня при­чем го­то­вые, и раз­ра­бот­чи­ки могут их ис­поль­зо­вать. Мед­лен­но соз­да­вая этот стек с  са­мо­го на­ча­ла – внедряя муль­ти­тач в яд­ро, соз­да­вая про­то­кол, до­бав­ляя драй­ве­ры уст­ройств. За­кон­чи­л и с ядром, те­перь нуж­но про­вес­ти все че­рез Window Server... Да­лее нуж­но соз­дать стек жес­тов, со­брать их в биб­лио­те­ку... Конеч­но, никто не хо­чет ис­поль­зо­вать низ­ко­уровневую биб­лио­те­к у С, с че­го и на­до на­чать, по­это­му мы соз­да­ем что-то вро­де QML для Qt или libgrip для при­ло­жений GTK. Ко­ро­че, нуж­на от­прав­ная точ­ка. А Wayland для это­го по­ка не го­дит­ся. Хо­тя че­рез год, или око­ло то­го, он бу­дет оче­вид­ной аль­тер­на­ти­вой. Мы про­сто на­ча­ли слишком ра­но, что­бы ба­зи­ро­вать все на Wayland. Мы к это­му не го­то­вы. Qt все боль­ше ин­тег­ри­ру­ет­ся с Wayland, но я все рав­но не ду­маю, что им уда­ст­ся до­бить­ся пол­ной под­держ­ки до Qt 5, ко­то­рый вый­дет не рань­ше кон­ца это­го го­да или на­ча­ла сле­дую­ще­го по­ка что его нет.
+
'''ЧД''': Меня пока не привлекали к работе с 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:'''С этими менее совершенными тачпадами, наверное, стоит добавить в коде чуточку искусственнного интеллекта, чтобы не получалось, что кто-то при перетаскивании прерывает касание на долю секунды..
 +
 
 +
'''ЧД:''' Мы над этим работаем. Пока просто не получалось уделить этому достаточно времени, но это у нас в планах. Надеемся, вскоре часть этих проблем удастся устранить.

Версия 00:48, 12 декабря 2017

Интервью: Чейз Дуглас

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

ЧД: Мы над этим работаем. Пока просто не получалось уделить этому достаточно времени, но это у нас в планах. Надеемся, вскоре часть этих проблем удастся устранить.

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