Проблемы X11 и их решения в Wayland

Эрик Гриффит (Eric Griffith), совместно с Дэниэлем Стоном (Daniel Stone), бывшим член совета директоров X.Org Foundation, опубликовал статью, детально рассказывающую о том, в чем заключаются проблемы X11 и как они решены в проекте Wayland. Кроме того, в статье также рассмотрены основные мифы и заблуждения, сложившиеся вокруг X11 и Wayland. Например, на сегодняшний день сетевая прозрачность X может рассматриваться как миф, так как в реальных условиях данная особенность протокола уже давно неприменима. В своей основе X-ы и DRI-1 обеспечивают сетевую прозрачность, но никто уже не ограничивается ими, а повсеместно используемые DRI-2 и средства работы с разделяемой памятью, не говоря о дополнительных надстройках вида D-Bus и API нотификации, не поддерживают работу по сети. Но даже в идеальных условиях сетевая прозрачность превращается в кошмар для пользователя с учётом синхронного характера работы Xlib.

С момента выхода X11 прошло более 25 лет, для обеспечения поддержки технологий, ставших актуальными за это время, таких как вывод видео, OpenGL и подключение нескольких устройств ввода и вывода, протокол оброс значительным числом расширений. Без встроенных средств версионного контроля на уровне привязки функциональности система расширений X11 крайне не эффективна. Версионный контроль X-расширений реализован на уровне клиента, т.е. если программа поддерживает одну версию расширения, а тулкит — другую, то выбор расширения непредсказуем. Например, браузер Rekonq поддерживает Xinput 2.2, Kdelibs — Xinput 2.0, а плагин Flash — ввод через Core X11, но в результате для работы приложения будет выбрана только одна из версий Xinput и не факт, что это будет версия необходимая для работы и поддерживаемая всеми компонентами.

При этом многие системы неоправданно усложнены, например, предоставляется четыре подсистемы ввода Core X11, Xinput 1.0, Xinput 2.0 и Xinput 2.2, зависимости между которыми настолько запутаны, что особенности их взаимодействии понимают, по словам Дэниэля Стона, только три человека. Другим примером усложнённости является изначально избыточная, раздутая и при этом невостребованная функциональность, в частности, тулкит для работы с графическими примитивами давно никем не используется, в состав до недавних пор входили реализация собственного сервера печати и бинарного интерпретатора ELF, COFF и a.out, что превращало X-ы в подобие операционной системы.

Главной концепцией X-ов является понятие «всё является окном», но нет разделения окон на типы, что приводит к том, что хранитель экрана по сути является обычным окном, развёрнутым на весь экран и блокирующим доступ к другим окнам путем перехвата активного ввода. Похожим образом реализованы всплывающие окна, поэтому они конфликтуют с хранителем экрана, также желающим получить эксклюзивный контроль ввода и не получающим его до закрытия подобного окна.

Полный текст статьи читайте на OpenNet