В данной статье описываются некоторые улучшения, которые собирается ввести Canonical, чтобы упростить и ускорить появление программ от разработчиков приложений.
Убунту, как систему, можно представить в виде двух слоёв:
В далёком 2004 году, когда появилась на свет Убунту, понятия Система и Приложения были тесно переплетены между собой. Разработчики Убунту синхронизировались с репозиторием Дебиан, применяли свои патчи и получался новый релиз Убунту. А всё что можно было найти в репозиториях Дебиан и Убунту было доступны пользователям как Приложения.
У такого подхода есть врождённые проблемы:
Ситуацию пытались решить с помощью создания Application Review Board (ARB). ARB - это группа людей из сообщества, которая рассматривала пакеты с упрощёнными критериями. К сожалению, несмотря на все усилия ARB, технические ограничения взяли вверх.
Основным техническим ограничением, с которыми пришлось столкнуться группе ARB, стало отсутствие в Убунту "песочницы" (sandbox) для непослушных приложений. На практике это означало, что каждое приложение, ожидающее рассмотрения, требовало полной проверки кода для каждой своей версии. То есть, если разработчик приложения выпустил версию 1.0, а через пару недель вышла 1.1, то полную проверку кода нужно делать у двух версий. Добавьте сюда, что в Дебиан пакете (.deb) есть понятие maintainer scripts, которые выполняют действия в системе от root'а и их нужно тоже проверять.
Растущий список приложений, требующих рассмотрения, оставил человеческие возможности группы ARB далеко позади. Как результат, разочарование для всех: для ARB; для разработчиков приложений, ждущих одобрения; для всех тех, кто работает на улучшением Убунту.
Ещё раз о недостатках предыдущей системы:
Разработчики из Canonical начали создавать черновой вариант новой системы, которая радикально улучшит ситуацию.
Главные части новой системы это пакеты click, песочница, отправка на рассмотрение.
Чтобы понять новый формат пакета Клик, вспомните два уровня:
Формат пакета deb обеспечивает всем необходимым для создания Операционной Системы. Но разработчикам приложений, которые хотят просто упаковать код программы, в нечто, что может быть загружено пользователем, предоставлен новый формат пакета под названием Click.
Пакет Click очень просто создать. В вашем открытом проекте в Ubuntu SDK вы просто нажимаете кнопку - создать пакет Click. Всё! Пакеты Click не содержат maintainer scripts, они просто не нужны подавляющему большинству прикладных программ. Это сразу удаляет вопрос с безопасностью maintainer scripts и проверку их кода.
Ключевым преимуществом Click является отсутствие полного разрешения зависимостей (full dependency resolution). Многие знают что происходит при вызове sudo apt-get update
. Скачивается актуальный список доступных в репозиториях программ и выясняются все зависимости, типа GIMP зависит от GTK, который требует X. Это занимает много времени и плохо масштабируется, когда пакетов программ тысячи и они постоянно обновляются.
Пакет Click просто зависит от Ubuntu SDK. Это означает, что не нужно беспокоится о сложных зависимостях. Разработчики Canonical знают что зависимость одна - Ubuntu SDK.
Вся информация об зависимостях между различными модулями может храниться в веб сервисе, который будет обслуживать пользователей, вместо ведения локальных списков. Ведь пользователю всё равно нужно сетевое соединение для загрузки пакета, так почему бы не спросить об пакете и зависимостях у веб службы?
Тут предстоит проделать много работы. Команда разработчиков, создающая новую систему, подготовила огромный список требований, которые необходимы для вердикта - приложение можно автоматически одобрить без полной проверки кода человеком.
В списке требований не только защита системы от возможных несанкционированных вызовов, но и решения вопросов о перехвате (sniffing) клавиатурных событий в приложениях Х.
Ubuntu Security Team работает над песочницей в рамках всей системы и бо́льшая часть работы уже завершена. Наработки команды безопасности отчасти повлияли на некоторые дизайнерские решения для нового дисплейного сервера Mir и его работу с клавиатурными событиями.
Основным результатом работы разработчиков из Ubuntu Security Team стало создание песочницы, которая защищает всю систему от тестового злонамеренного приложения.
Песочница существенно убавляет необходимость в полной проверке кода приложений, что в основном и снижало скорость рассмотрения программ. Всё это в сочетании с пакетами Click, которые не несут в себе maintainer скрипты и не обладают сложными цепочками зависимостей, делает проверку программы более эффективной и быстрой!
Процедура отправки программы на рассмотрение останется в целом такой же как и прежде. Как и прежде разработчик программы указывает пакет для отправки, заполняет информацию о программе, добавляет скриншоты и так далее. Затем программа попадает в очередь рассмотрения, прежде чем попадёт в репозитории и потом к пользователям.
Хорошая новость в том, что теперь просмотр будет требовать небольшого количества информации: проверки прав доступа, мета данных и ещё пару простых вещей. Тут стоит сказать спасибо формату пакета Click и песочнице! Анализ приложения будет занимать 15 минут, а не много дней. Одобрение приложений должно идти более быстрыми темпами.
Если приложение было одобрено, то оно может быть установлено на любом устройстве под управлением Убунту. Вскоре появится функционал, позволяющий отображать только приложения специфичные для данного устройства. Например, показать для телефона программы с "телефонным" UI.
Формат пакета Click в основе своей завершён. Есть инструменты создания click пакетов в Ubuntu SDK и установке их в систему.
Бо́льшая часть работы над песочницей завершена, НО из-за ситуации с возможностью перехватывать клавиатурные события в Х (много ненужной работы исправлять это), песочница будет внедрена в Убунту только когда Mir полностью заменит Х на посту дисплейного сервера. Это произойдёт только в Ubuntu 14.10.
Цель одна. Сделать единую операционную систему для всех платформ, не важно десктоп это или смартфон. На единой Убунту будут доступны ещё больше приложений, чем прежде, и появление новых приложений и их версий должно происходит быстро и легко для разработчиков и пользователей.
Дополнительные материалы:
Оглавление "серии заметок об Ubuntu".
Ubuntu SDK и разработка ПО. Следующая статья и серии.