Lomiri

Материал из J2MEdia
Версия от 01:22, 16 июля 2025; Sunderland93 (обсуждение | вклад) (Черновик)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Редактирую.png Извините, статья уже редактируется участником Sunderland93 (обсуждение)!
Эту статью в настоящий момент редактирует другой участник или группа участников. Если хотите отредактировать что-либо — пожалуйста, подождите, пока данный шаблон не будет снят. В крайнем случае оповестите о своём решении на странице обсуждения.

Lomiri (ранее известна под названием Unity 8) - графическая оболочка операционной системы Ubuntu Touch. Главной особенностью Unity 8 является возможность адаптивно подстраиваться под различные устройства - смартфоны, планшеты, компьютеры и т.д. Unity 8 являлась эволюционным этапом развития графической оболочки Unity (известна как Unity 7) от компании Canonical, длительное время использовавшейся по умолчанию в настольной редакции Ubuntu. Unity 8 также должна была использовать свой собственный графический стек - дисплейный сервер Mir, также разработанный в недрах Canonical, как альтернативу уже существовавшему тогда проекту Wayland. Однако сообществом разработчиков это было воспринято как фрагментация, желание "подмять под себя" графический стек в Linux (изначально разработка велась за закрытыми дверьми, и Canonical весьма неохотно позволяла сообществу принимать участие в разработке), кроме того было много критики в адрес Canonical и лично Марка Шаттлворта, из-за их агрессивного навязывания Mir разработчикам других графических оболочек. В итоге, в 2017 году, Марк Шаттлворт объявил о сворачивании разработки проектов Unity 8, Mir и Ubuntu Touch, и возвращении Ubuntu на рабочий стол GNOME и графический стек на основе Wayland.

В настоящее время компания Canonical не принимает участния в разработке ни Unity 8 ни Ubuntu Touch, разработку взяло в свои руки сообщество UBports, также развивающее порты Ubuntu Touch на различные устройства. Оболочка Unity 8 была переименована в Lomiri. Дисплейный сервер Mir остался востребован в проектах Canonical, связанных с интернетом вещей и облачными сервисами, был почти полностью переписан для работы через протокол Wayland, а сама разработка перенесена на GitHub.

История

Оболочка Unity была представлена в качестве интерфейса для нетбуков в 2009 году, в составе специальной версии Ubuntu - Ubuntu Netbook Remix. Основное преимущество новой оболочки было в максимально эффективном использовании ограниченного экранного пространства, а также в предоставлении быстрого доступа к приложениям (меню приложений представляло из себя полноэкранный launcher с возможностью быстрой и удобной навигации). В основе Unity лежали OpenGL-тулкит Nux, а также оконный менеджер Compiz, предоставивший поддержку аппаратного ускорения отрисовки и различных эффектов рабочего стола. В качестве библиотеки для создания интерфейса пользователя и приложений, была задействована GTK 2, также применявшаяся в GNOME 2.

Начиная с выпуска Ubuntu 10.10, Unity стала предлагаться для установки и в настольной редакции Ubuntu. После прекращения разработки графической оболочки GNOME 2, выхода в 2011 году GNOME 3 и появления целого ряда проблем с ним (многочисленные проблемы с отрисовкой интерфейса, нестабильность, высокая нагрузка на видеокарту и процессор), разработчиками Ubuntu было принято решение задействовать Unity в качестве основного рабочего стола, начиная с выпуска Ubuntu 11.04. Оболочка была доработана, портирована на графическую библиотеку GTK 3, и адаптирована под программный стек обновленного GNOME, и вплоть до версии Ubuntu 17.04 оставалась основным рабочим столом.

В 2013 году компания Canonical представила новое направление развития своих продуктов на ближайшие годы - конвергенцию (convergency). Идея состояла в том, чтобы применить единую операционную систему с единым интерфейсом на разных устройствах, будь то телефоны, планшеты, компьютеры или телевизоры. Интерфейс был бы адаптивным, что позволило бы, например, подключить к смартфону клавиатуру, мышь и монитор, и получить десктопное окружение рабочего стола. Изначальный план был портировать оболочку Unity на Wayland - совсем молодой в те годы протокол для создания дисплейного сервера, призванный заменить морально устаревший X11 и Xorg. Оболочку решено было перевести на использование библиотеки Qt5 и языка декларативного описания интерфейса QML, что позволило бы сосредоточиться на дизайне и юзабилити интерфейса пользователя и не тратить много времени на написание сложного программного кода с использованием классических виджетов Qt. Однако впоследствии, Canonical отказались от планов по переводу Unity на Wayland, вместо этого представив свою собственную разработку - дисплейный сервер Mir. Сама же Unity X, позднее сменившая имя на Unity 8 (классическая Unity к тому моменту имела версию 7) разрабатывалась весьма медленно, в первую очередь была разработана её мобильная версия, которая запускалась по умолчанию и в настольном режиме. Позднее был готов вариант для рабочих столов, однако оболочка работала весьма нестабильно, а многие её функции не были реализованы (вместо них были неработающие заглушки). В своей поздней версии, Unity 8 лишилась поддержки умных областей, вместо которой было добавлено обычное меню приложений с категориями, помимо этого был представлен собственный файловый менеджер и эмулятор терминала.

Однако в серию эти наработки не успели попасть, поскольку в начале 2017 года, Шаттлворт объявил о сворачивании проектов Unity 8, Ubuntu Touch и конвергенции. Эти наработки подхватило сообщество UBports, и продолжило их развитие.

Mir

Первую половину 2013 года, Mir являлся внутренней закрытой разработкой Canonical. Mir черпал архитектурные идеи из SurfaceFlinger — дисплейного сервера Android, что позволяло упростить перенос Ubuntu Touch на мобильные устройства. Сделано это было по двум причинам: во первых это был уже обкатанный в "боевых условиях" графический стек, что одновременно существенно упрощало перенос Ubuntu Touch на различные мобильные устройства, а во-вторых - позволило бы с минимальными усилиями адаптировать это для настольных систем. В качестве внутренного IPC был выбран Google Protobuf, рендеринг осуществлялся с использованием EGL и OpenGL ES, отрисовка содержимого была полностью аналогична Android (сервер имел больше контроля над окнами, чем типовой Wayland-композитор, в частности Mir сам управлял отрисовкой рамок окна, панелей и т.д.).

Главной причиной создания Mir было несогласие разработчиков Ubuntu с вектором развития протокола Wayland, в частности с его моделью ввода: Canonical критиковала Wayland за устаревшую модель ввода, во многом повторяющую подход X11, однако к тому моменту она уже была переработана и ничем не отличалась от того, что предлагал Mir. Это вызвало реакцию сообщества, включая опровержения от Кристиана Хогсберга (автора Wayland) и других разработчиков графического стека. Кроме того, одним из ведущих разработчиков KDE, Мартином Флоссером, были даны аргументы по каждому пункту в заявлениях Canonical, что Mir должен стать универсальной заменой Wayland, и призывала разработчиков графических окружений ориентироваться на него. Однако ответы Canonical на критику носили агрессивный и односторонний характер, что лишь усугубило напряжённость между Canonical и остальной частью сообщества. Это привело к тому, что большинство разработчиков графического стека Linux (в частности разработчики KDE, видеодрайверов для чипов Intel и многие другие) объявили бойкот Canonical и Ubuntu в частности, и отказались принимать какие либо патчи от них. Вследствии чего, разработчикам Mir приходилось своими силами поддерживать патчи для обеспечения его работы в видеодрайверах и графических библиотеках.

Основным отличием Mir от Wayland является то, что первый - это полноценный дисплейный сервер, берущий на себя большую часть работы по отрисовке окон и рабочего стола, тогда как Wayland - лишь протокол для организации дисплейного сервера, в котором все задачи по отрисовке содержимого окон и рабочего стола, целиком и полностью возложены на клиентские приложения и библиотеки, а роль дисплейного сервера (Wayland-композитора) сводится лишь к компановке передаваемых клиентами буферов (compositing) и управлением устройствами ввода-вывода. Это существенно упростило архитектуру дисплейного сервера, однако разработчики Mir посчитали такой подход неэффективным: подход Mir был гораздо более похожим на Xorg, единый дисплейный сервер, для которого разработчики могли просто писать альтернативные графические оболочки.

Однако на практике это вылилось в целый ряд проблем. Во первых было важно обеспечить совместимость с программами, не поддерживающими Mir напрямую. По аналогии с Wayland, где для подобной обратной совместимости применяется Xwayland, для Mir был создан XMir - небольшой X-сервер, позволяющй запускать классический софт и обеспечивать его бесшовную работу. Однако сделать это было существенно сложнее чем в случае Xwayland, а дополнительный груз в виде необходимости поддержки всего стека (драйверы, библиотеки, графические тулкиты) силами небольшой команды разработчиков Ubuntu, привел к существенному замедлению разработки. Последней каплей стала изоляция сообщества - поскольку изначально Canonical не проявляла интерес к совместной разработке своего графического стека, поругалась со многими разработчиками Wayland, видеодрайверов и т.д, то и сообщество ответило тем же - бойкотом. Никто из сторонних разработчиков не был заинтересован ни в развитии Mir, ни в развитии Unity 8.

После сворачивания работы над Unity 8 и Ubuntu Touch, было решено превратить Mir в набор для построения дисплейного сервера Wayland, по иронии судьбы - его основного конкурента. В настоящее время Mir активно развивается в этом направлении, и на его основе даже есть готовые, рабочие решения (помимо Lomiri) - оконные менеджеры Miriway, создающийся как универсальная база для разнообразных оболочек, и MiracleWM, предлагающий концепцию мозаичного размещения окон (тайлинг).

Дальнейшая разработка

27 февраля 2023 года Lomiri появилась в официальных репозиториях дистрибутива Debian. Также были добавлены актуальные выпуски Mir и сопустсвующего стека приложений и библиотек. Впоследствии Lomiri появилась и в репозиториях многих других дистрибутивов, в особенности тех, что имеют версию для мобильных устройств, например Manjaro. Основное внимание уделяется мобильной составляющей оболочки, поскольку UBports заинтересованы в первую очередь в предоставлении удобной мобильной платформы. Однако и десктопный режим, хоть и медленно, продолжает совершенствоваться.

Примечания