Увидел свет Wayland 1.9, перешедший на современный вариант лицензии MIT

После трёх месяцев разработки представлен стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.9, а также развиваемого параллельно композитного сервера Weston 1.9. Ветка 1.9 обратно совместима на уровне API и ABI с выпусками 1.x, но дополнительно содержит порцию улучшений, расширяющих возможности композитного сервера Weston. Следующий выпуск 1.10 запланирован на середину февраля.

Важным изменением является устранение путаницы с лицензированием Wayland и Weston. Изначально в кодовую базу по недосмотру был скопирован текст лицензии X11 (HPND, Historical Permission Notice and Disclaimer), который является старым вариантом лицензии MIT, отличающимся от современного наличием запрета по упоминанию продукта в рекламных материалах производных работ. При этом автор Wayland полагал, что использует обычную лицензию MIT. В том числе про лицензию MIT было заявлено в документации. Лицензия HPND использовалась в старых выпусках X.org, но позднее была заменена на лицензию MIT. Проблема в том, что лицензия HPND устарела, не совместима с GPL, не совместима с современной кодовой базой X.Org и уже исключена из списка свободных лицензий OSI. В Wayland 1.9 данная проблема решена и текст лицензии обновлён до актуального варианта лицензии MIT.

Кроме смены лицензии в Wayland 1.9 представлена порция незначительных исправлений, улучшена система сборки, произведено разделение библиотеки libwayland-util на два компонента libwayland-util и libwayland-private. Небольшое число изменений связано с тем, что работа над протоколом Wayland главным образом уже завершена и стабилизирована. При этом основная разработка сосредоточена на композитном сервере Weston, в рамках которого развиваются технологии, содействующие появлению полноценной поддержки протокола Wayland в Enlightenment, GNOME, KDE и других пользовательских окружениях. Разработка Weston нацелена на предоставление высококачественной кодовой базы и рабочих примеров для использования Wayland в десктоп-окружениях и встраиваемых решениях, таких как платформы для автомобильных информационно-развлекательных систем, смартфонов, телевизоров и прочих потребительских устройств.

Основные новшества Weston 1.9:

  • Реализована предварительная поддержка инфраструктуры по выносу внутренней функциональности Weston в обособленную библиотеку libweston, которую можно будет использовать для создания простых композитных серверов, достаточных для работы легковесных десктоп-окружений. Реализация библиотеки и API пока находится на уровне эксперимента и не пригодна для применения в реальных проектах;
  • Приведена к должному виду поддержка горячего подключения устройств ввода, которая избавлена от основных проблем, возникающих при подключении/отключении клавиатуры и мыши, что положительно сказалось на возможности динамического создания многопользовательских окружений с несколькими клавиатурами и мышами (multi-seat);
  • Изменены привязки к средней и правой кнопкам мыши - средняя кнопка теперь применяется для включения функции вращения окон, а правая для инициирования изменения размера окон;
  • Переработан фреймворк unit-тестирования. Новый 'zuctest' написан под впечатлением от таких фреймворков, как Google Test и Boost Test;
  • В компоненте композитинга через прямое обращение к бэкенду DRM обеспечена поддержка видеокарт, поддерживающих подключение трёх мониторов, а также другого оборудования обеспечивающего работу более двух CRTC на видеокарту. Внесены разнообразные исправления к код управления видеорежимами;
  • В оболочку для информационно-развлекательных систем (IVI Shell) добавлен интерфейс для получения идентификатора экрана и методы для удаления callback-вызовов для некоторых видов уведомлений;
  • Удалён код клиента weston-screensaver, вместо которого рекомендуется использовать более простой интерфейс DPMS. Удаление weston-screensaver позволило избавиться от зависимости от GLU и уменьшить число компонентов, привязанных к cairo-gl;
  • Добавлено новое расширение linux_dmabuf, предоставляющее средство для прямого вывода (zero-copy) видео на экран.




Статус поддержки Wayland в окружениях рабочего стола и дистрибутивах:

  • В GNOME поддержка Wayland доведена до состояния, пригодного для ежедневного использования. В Fedora Workstation 23 поддержку Wayland планируется довести до стабильного и полнофункционального состояния, пригодного для повседневного пользования. Переход по умолчанию на окружение GNOME, работающее поверх Wayland, ожидается в Fedora 24. В Ubuntu GNOME поставляется опциональный сеанс рабочего стола GNOME на базе Wayland (следует установить пакет gnome-session-wayland и выбрать на экране входа "GNOME on wayland").
  • Разработчики KDE развивают kwin_wayland, вариант оконного менеджера KWin для Wayland, а также библиотеку KWayland, в которую вынесен весь код, специфичный для поддержки Wayland. Работа KDE Plasma с kwin_wayland уже пригодна для оценочного использования. Экспериментальная поддержка Wayland представлена в выпуске Plasma 5.4. Wayland применяется по умолчанию в платформе Plasma Mobile.

    Kwin_wayland не обращается для отрисовки к внешним серверам на базе протоколов X11 или Wayland (например, Weston), а выполняет все операции с графикой своими силами через прямое обращение к бэкенду DRM (Direct Rendering Manager), выступая в роли самодостаточного композитного сервера Wayland. Через DRM также осуществляется управление видеорежимами и видеопамятью. При этом для взаимодействия с оборудованием kwin_wayland обходится без привилегий root - для открытия файла-устройства DRM с привилегиями обычного пользователя применяется logind. Для компоновки целостного изображения (композитинг) поддерживается использование OpenGL и QPainter.

  • Wayland задействован по умолчанию в мобильных платформах Sailfish 2 и Tizen 3.
  • В панели Cairo-Dock реализована возможность работы в окружении композитного сервера Weston.
  • Wayland опционально поддерживается в Enlightenment E19.
  • Работа по добавлению поддержки Wayland ведётся для рабочих столов LXQt и MATE.
  • Развиваются новые десктоп-окружения, работающее только на базе технологий Wayland: Quantum Shell, Hawaii и Orbital.
  • Для тестирования работы GNOME, KDE и Enlightenment, Hawai и Orbital поверх Wayland выпускается специальный Live-дистрибутив Rebecca Black Linux.
  • Отмечается значительный прогресс в адаптации Firefox и LibreOffice для работы поверх Wayland без привлечения прослойки XWayland.

Wayland представляет собой протокол взаимодействия композитного сервера и работающих с ним приложений. Клиенты самостоятельно выполняют отрисовку своих окон в отдельном буфере, передавая информацию об обновлениях композитному серверу, который комбинирует содержимое буферов отдельных приложений для формирования итогового вывода с учётом возможных нюансов, таких как перекрытие окон и прозрачность. Иными словами, композитный сервер не предоставляет API для отрисовки отдельных элементов, а оперирует только с уже сформированными окнами, что позволяет избавиться от двойной буферизации при использовании высокоуровневых библиотек, таких как GTK+ и Qt, берущих на себя работу по компоновке содержимого окон. В настоящее время поддержка прямой работы c Wayland уже реализована для библиотек GTK3+, Qt 5, SDL (начиная с выпуска 2.0.2), Clutter и EFL (Enlightenment Foundation Library). Начиная с Qt 5.4 в состав включён модуль QtWayland с реализацией компонентов для работы Qt-приложений в окружении композитного сервера Weston, развиваемого проектом Wayland.

Взаимодействие с аппаратным обеспечением в Wayland/Weston, например, проведение инициализации, переключение видеорежимов (drm modesetting) и управление памятью (GEM для i915 и TTM для radeon и nouveau) графических карт, может производиться напрямую через модуль, работающий на уровне ядра, что позволяет обойтись без привилегий суперпользователя. Отмечается значительный прогресс в направлении поддержки Wayland в проприетарных драйверах NVIDIA - в ветку 355.x уже включена поддержка всех необходимых расширений EGL, но остаётся реализовать KMS API и KMS ioctl. Композитный сервер Weston может работать не только с использованием DRM-модуля ядра Linux, но и поверх X11 или поверх другого композитного сервера Wayland. Кроме того, развиваются проекты по обеспечению работы поверх графического стека платформы Android.

В рамках проекта Weston развивается одна из реализаций композитного сервера. В роли композитного сервера также может выступать любой другой продукт, поддерживающий протокол Wayland. Например, в настоящее время ведётся работа по обеспечению поддержки Wayland в KWin. В текущем виде Weston уже вышел за рамки набора примеров для тестирования протокола Wayland и может обрастать функциональностью через плагины и дополнения. Пользовательские оболочки и расширенные функций управления окнами предлагается реализовывать в форме внешних бэкендов к Wayland.

Для обеспечения выполнения обычных X11-приложений в окружении на базе Wayland используется DDX-компонент XWayland (Device-Dependent X), похожий по организации работы на Xwin и Xquartz для платформ Win32 и OS X. Поддержку запуска X11-приложений планируется встроить непосредственно в композитный сервер Weston, который при попытке выполнения X11-приложения будет инициировать запуск X-сервера и связанных с ним компонентов XWayland. При таком подходе процесс запуска X11-приложений будет бесшовным и неотличимым для пользователя от запуска приложений, работающих напрямую с Wayland.

© OpenNet