LXF79:Solid

Материал из Linuxformat.

Перейти к: навигация, поиск

Что такое… SOLID?

Неудобное управление устройствами является слабостью Linux-систем. Программисты KDE придумали изящное решение этой проблемы. Джоно Бэкон (Jono Bacon), засучив рукава, исследует Solid.

Итак, что это – Solid?

Solid – значимая составная часть будущего KDE 4.0. Проект KDE 4.0 был разделен на несколько различных компонентов: Solid, Plasma, Oxygen и Phonon, каждый из которых выполняет свою работу на рабочем столе.

И что же Solid делает?

Solid отвечает за взаимодействие с оборудованием. Традиционно, легкое управление устройствами в Linux было равносильно просьбе одолжить золотой медальон у мистера Т: это возможно, но невероятно, и, скорее всего, вызовет неприятности. Solid направлен на устранение этого недостатка.

Как работает Solid?

Основная цель Solid – предоставить адекватный программный интерфейс для оборудования. Во времена KDE 1.x было невероятно сложно взаимодействовать с оборудованием в приложениях. Общение с устройствами осуществлялось индивидуально в каждом приложении. Например, если вы писали приложение для обмена информацией с цифровыми камерами, то вам пришлось бы включать в него код, ответственный за общение с камерой.

Звучит как-то дико. А если другим приложениям тоже нужно общаться с камерой?

Вот именно. В этом и была проблема поддержки устройств в приложениях – вместо сосредоточения на логике приложения, разработчикам приходилось заниматься спецификой оборудования. Различия в дистрибутивах, разные версии ядра Linux и другие факторы подбавляли сложностей. Кроме того, существовала проблема горячего подключения устройств. Вставив USB-устройство в компьютер, вы ожидаете появления иконки на рабочем столе. В Linux это делается совершенно не так, как в Solaris, BSD, Mac OS X и Windows.

Надеюсь, Solid решит все эти проблемы и избавит нас от лишних хлопот?

По большей части да. Задача Solid состоит в том, чтобы предоставить унифицированный программный интерфейс (API) к оборудованию. Вместо того, чтобы включать в приложение специфический для оборудования код, Solid позволит абстрагировать оборудование. Таким образом, другой инструмент будет выполнять работу по обмену информацией с устройствами.

Что значит «другой инструмент»?

Что-то наподобие HAL, Hardware Abstraction Layer [прим. перев.: HAL – уровень аппаратных абстракций]. HAL – это демон, который отслеживает аппаратные изменения в конфигурации системы и представляет эту информацию в форме, понятной приложениям. По существу, инструмент HAL дает вам ясное программное представление, как выглядит ваше оборудование. HAL, в свою очередь, полагается на D-BUS, который обеспечивает взаимодействие разных подсистем приложения. Например, если вы хотите синхронизировать свою музыкальную коллекцию с плейером, то можете использовать HAL и скрипт на Python.

Я не совсем понял, зачем тогда Solid? Почему нельзя просто обойтись HAL?

Одной строкой

«HAL – СРЕДСТВО ОБМЕНА ИНФОРМАЦИЕЙ С ОБОРУДОВАНИЕМ, А SOLID – ИНСТРУМЕНТ ОБРАБОТКИ СОБЫТИЙ НА РАБОЧЕМ СТОЛЕ.»

На это есть пара причин. Первая: проект KDE всегда старался поддерживать разные операционные системы, не ограничиваясь только Linux. По существу, должна быть поддержка Linux, BSD, Mac OS X, Windows, Solaris и других. Так как HAL полагается на специфические особенности ядра Linux, то он используется только в Linux. Ядро предоставляет информацию об оборудовании в Sysfs, которая в свою очередь используется udev, далее она используется D-BUS, которая затем используется HAL.

То есть Solid замещает HAL кроссплатформным эквивалентом? А так бывает?

Нет, это не входит в намерения разработчиков KDE. Не полагаясь исключительно на HAL, Solid будет поддерживать множество различных «основ» (back-end), которые зависят от операционной системы. На платформе Linux, Solid использует HAL для обмена информацией с устройствами, но на Solaris, BSD, Mac OS X и Windows, Solid будет использовать аналоги HAL.

И такие аналоги есть?

На одних системах есть, на других – нет. Если вы хотите узнать об аналоге HAL в BSD, возможно, стоит почитать BSD Format. Хотя, погодите…

Вы сказали, есть пара причин, почему HAL нельзя просто заменить Solid. В чем вторая?

У Solid и HAL немного разная идеология. Главная задача HAL – предоставить информацию о доступных устройствах в системе. Если вы хотите использовать эту информацию, чтобы как-то повлиять на рабочий стол, то придется самим писать код приложения. Собственно, даже и с чем-то вроде HAL вам придется писать много лишнего кода для обработки события при подключении устройства.

Приведите пример…

Предположим, вы подключаете USB-брелок и хотите, чтобы появилось окно, отображающее список файлов на этом устройстве. Тогда вам понадобиться написать код, который вызывает окно в ответ на событие, возникающее при подключении устройства, которое генерирует HAL. Другой пример – цифровые камеры. Когда вы подключаете камеру к системе, то хотите воспользоваться функциональностью, характерной для цифровой камеры и KDE. В этом случае пригодится Solid.

То есть Solid – это API KDE, отрабатывающий сценарии для оборудования?

Верно. Можно считать, что HAL – средство обмена информацией с оборудованием, а Solid – инструмент для обработки событий на рабочем столе. По существу, Solid может не только работать с аналогами HAL, но и предоставляет независимый от операционный системы API, позволяющий обрабатывать различные события, связанные с устройствами, в приложениях KDE.

Хорошо. Как все это работает технически?

KDE базируется на наборе инструментов Qt от Trolltech. Qt базируется на системе сигналов и слотов: когда в каком-то приложении что-то происходит, оно может запустить сигнал. Например, при нажатии кнопки инициируется сигнал clicked(), который можно присоединить к слоту. Слот – определенная программистом функция, которая будет обрабатывать сигнал. Solid предоставит множество сигналов, которые будут говорить об изменениях в оборудовании, а разработчики смогут просто написать слоты для их обработки.

Зачем Solid поддерживать Windows и Mac OS X? Вряд ли им нужен KDE…

Qt доступна на Linux и Mac OS X по лицензии GPL уже многие годы, а Windows-версия Qt выпущена под GPL в феврале 2005 года. Это событие открыло дорогу приложениям KDE на другие операционные системы и дало разработчикам новый импульс. Команда разработчиков KDE намерена создать самую лучшую рабочую среду, и хотя многие из разработчиков, конечно, пользуются Linux, было принято соглашение о создании платформы, которая сможет работать на максимальном количестве ОС. Теперь, когда Qt стала свободной на всех основных платформах, выполнять соглашение будет проще.

Пока все это слова, а в каком состоянии сейчас находится эта разработка?

В настоящий момент напряженная разработка Solid ведется под руководством Кевина Оттенса (Kevin Ottens); написан код для некоторых классов устройств (например, CD-ROM), а также заготовлено некоторое количество сигналов. Несмотря на текущее положение дел, Solid находится в состоянии разработки и уже вписан как ключевая особенность KDE 4. Выпуск KDE 4 в ближайшее время не ожидается, поэтому пройдет некоторое время, прежде чем вы увидите Solid на рабочем столе.

Где об этом узнать поподробнее?

Большая часть работы по Solid ведется через главный сайт – solid.kde.org. Дополнительно можно посмотреть рассылки разработчиков в lists.kde.org. Главная дискуссия, где обсуждают Solid, происходит в Kde-hardware-devel.

Если вы мыслите настоящим временем, информацию можно почерпнуть и на IRC-канале #solid сети Freenode IRC. Наконец, больше всего о разработке Solid и других технологий, относящихся к KDE 4, можно узнать на Planet KDE (www.planetkde.org). Этот сайт содержит заметки разработчиков KDE и позволяет понять текущее состояние проекта. Там вы можете узнать, какие технологии приняты на вооружение, а от каких отказались.

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию