вівторок, 27 серпня 2013 р.

Unity и Единство

Unity переводится как Единство, так почему название статьи объединяет через союз И два одинаковых слова, написанных на разных языках? Дело в том, что Ubuntu начала свой путь объединения всех аппаратных платформ и всех устройств с разными форм-факторами, экранами, сенсорными возможностями под своим крылом. Canonical движется к цели, когда есть единая кодовая база Убунту, которая легко адаптируется к тому на чём она работает. Десктоп? Ок! Смартфон? Нет проблем.

Unity - это графическая среда дефолтной установки Убунту. Появившись 3 года назад, Unity сфокусировалась на простоте и "одинаковости" на разных устройствах. Данная статья раскроет историю Unity и расскажет как Unity 8 приведёт нас к единому светлому будущему.

Хоть Unity и одна, но можно найти 3 составляющих:

  • Дизайн - внешнее представление и способ взаимодействия с пользователем.
  • Платформа - ядро платформы Unity.
  • Сервисы - набор функций, которые делают Unity доступной для сторонних приложений в плане интеграции с ней и отображения контента.

Некоторое время назад, когда команда Canonical начала свою работу над Unity, нужно было решить ключевые проблемы с пользовательским интерфейсом, который царствовал в мире Linux, чтобы начать строить простой и эффективный UI. Так же нужно было продумать набор шаблонов проектирования (design pattern), которые помогут решить задачу масштабирования на многие устройства.

Разработка абсолютно нового всегда сложный процесс и этот процесс, наполненный идеями, всегда ограничен суровым реальным миром. Команда продумывала идеи, тестировала их, снова продумывала и снова тестировала, чтобы из кучи идей "сварить" готовый набор шаблонов, которые подходят не только для десктопа, но и могут быть применены к другим видам вычислительных систем.

Важно помнить, что речь идёт не только о видимых вещах типа launcher, панелей, индикаторов и других строительных блоков Unity. Нужно проработать управление жестами, вход в систему, тулкиты, компоненты Dash и многое другое.

Вначале пути Unity у неё было 2 различные кодовые базы: 3D (не путать с игровым движком Unity3D) и 2D. Причина раздвоения проста: некоторые партнёры Canonical желали работу Unity на оборудовании без аппаратного 3D ускорения. Поэтому решено было поддерживать 2 ветки, чтобы поддержать всех потенциальных партнёров. Обе ветки радикально отличались друг от друга. Unity 3D была написана с использованием Compiz и применялся графический тулкит NUX.

Архитектура Unity NUX

Unity 2D была написана с помощью Qt/QML. Как вы видите это порождает дублирование усилий по реализации одного и того же в разных ветках.

Так как задачей было привести Ubuntu, и следовательно Unity, к единому целому на всех платформах ТВ, Мобильные системы, Планшеты и Десктоп, то нужно было принять волевое решение об этой ситуации с двумя кодовыми базами. После бурных дебатов решено сфокусироваться на Qt/QML ветке, как на основной, учитывая что Qt/QML ядро Ubuntu SDK.

Джоно Бэкон лично лоббировал акцент на Qt/QML в течение нескольких лет, чтобы наконец-то наступила техническая согласованность в Canonical. Qt/QML стал: основой Unity, важной частью Ubuntu SDK, рекомендацией при разработке приложений, причиной роста количества разработчиков.

Основное преимущество Unity в широком спектре услуг, которые она предлагает:

  • Launcher - показывает запущенные приложения, степень выполнения задачи в программе через индикатор процесса, быстрое меню приложения (quicklists).
  • Меню сообщений - все сообщения в одном месте, в независимости от источника.
  • HUD (Head-Up Display) - альтернатива огромным меню приложения, поиск нужного пункта через пару нажатий или даже голосом.

Ещё весомый довод - Dash. В предыдущих версиях Unity Dash предоставлял место поиска среди локальных данных компьютера и небольшим набором онлайн сервисов. Для Ubuntu 13.10 Dash уже предлагает более 50 поисковых онлайн сервисов. Но задача осталась неизменна - быть место поиска приложений, информации и так далее.

Опять же, важно понять, что все предлагаемые сервисы в Убунту не ограничены десктопом, услуги доступны всем Убунту на любом устройстве с любым форм-фактором. Предложенный Ubuntu SDK предоставляет все возможности платформы Убунту для любого приложения.

Unity 8.

Ранее упоминалось про решение сфокусироваться на Qt/QML как на платформе разработки, но это было не единственное решение, связанное с Unity. Целью было создание на единой кодовой базе Unity - всеобъемлющее единство платформы Убунту. Если вы работаете на Десктопе, то у вы получаете один опыт общения с системой. Используете Unity на мобильных системах, то ваш опыт не теряется, а только преумножается.

Когда единение станет абсолютным, исправление бага в единой кодовой базе - исправит его на всех устройствах. Вот идеал, к которому стремится Canonical - единая кодовая база, с возможностью масштабироваться на широком спектре устройств.

Мечта начинает воплощаться в Unity 8, следующем поколении Unity, работающая пока в мобильном секторе. На десктопе пока работает Unity 7, основанная на Compiz и Nux.

Если хотите увидеть будущее единение прямо сейчас, то в разрабатываемом релизе Ubuntu 13.10 Saucy Salamander можете установить Unity8:

sudo apt-get install unity8

Запустить в виде приложения:

export UBUNTU_ICON_THEME=ubuntu-mobile
unity8 -mousetouch

Загрузится вид, схожий с Ubuntu Phone, на вашем Рабочем столе в виде окна.

Unity 8

Unity работает, оперируя размерами экрана. Если изменить размер окна, то можно увидеть аля LightDM.

Unity 8

Сделайте экран меньше размером, вернув как было. В этом первоначальном виде вызовите с левого края Launcher и щёлкните значок с лого Ubuntu и затем щёлкните Поиск. Заметьте, что поле поиска занимает всю ширину окна.

Unity 8

Теперь измените окно, чтобы оно стало снова больше, и снова вызовите Поиск. Поисковое поле теперь находится справа.

Unity 8

Этот небольшой пример показывает как Unity 8 адаптируется к размерам экрана устройства, на котором ей предстоит работать. Цель в том, что будет делаться множество улучшений для Unity, но основные ингредиенты, технологии и фокусировка на контенте останутся как и прежде, только будут просматриваться с различных углов.

И где всё это?

Сегодня Unity 8 работает в секторе телефонов и планшетов. Но Unity 8 не рассматривается только в этом узком контексте, она проверяется на работу и с другими устройствами.

Пример с Поиском может навести на мысль, что Unity 8 выглядит как эмулятор мобильного устройства. Это не так! Родной десктопный UI будет добавлен чуть позже, но Dash и все системные сервисы к десктопу уже готовы. Просто нужно добавить для десктопа экранный профиль, что и будет сделано.

Другими словами, могло показаться, что все в Canonical только и работают над "мобильной" Unity 8. Unity разрабатывается и тестируется одновременно для различных форм-факторов, в том числе и для Desktop. Теперь каждые 4 часа запускаются тесты кодовой базы и если они успешны, то пакеты становятся доступны в репозитории. Сообщество может протестировать и отследить последние достижения Unity 8.

Новые возможности описаны в blueprints и обсуждаются на Ubuntu Developer Summits.

"Телефонный" интерфейс в Unity 8 будет полностью закончен в Ubuntu 13.10 Saucy Salamander. Затем, в центре внимания будет Desktop на протяжении релизов Ubuntu 13.10 до Ubuntu 14.10. Итогом должно стать появление Unity 8 на десктопной Ubuntu 14.10 и тогда цель будет достигнута - единая кодовая база Unity для всех разношёрстных устройств!

Дополнительные материалы:
Оглавление. Серия заметок об Ubuntu.
Предыдущая статья. Ubuntu SDK и разработка ПО.
Unity Ubuntu изнутри. Линзы и области.
Unity 8 уже работает через Mir.

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments