Текущее состояние SDE и план работ

О версионировании

Версионирование отдельных частей проекта осуществляется независимо. Версии отдельных компонентов SDE не привязаны к версии SDE как целого.

Для версионирования библиотек используется Semantic Versioning, однако только для тех major versions, которые явно указаны как таковые. Например, от libfm нам достался номер версии 1.2.0, который мы не намерены откатывать на 0.*.*, однако ветка 1.* не является стабильной и не следует правилам Semantic Versioning.

Для приложений следование правилам Semantic Versioning не гарантируется.

Для ветки SDE 0.* будет использовано следующее чередование релизов:

Ветка 1.* будет создана только когда все необходимые API будут признаны стабильными.

Намеченные Milestones в работе над SDE

Milestone Основная задача
0.1 Приведение в надлежащий вид ссылок, копирайтов, лицензий и решение прочих организационных вопросов
0.2 Переработка API резолвера ресурсов, внедрение резолвера во все компоненты проекта
0.3 Реализация новых возможностей
0.4 Разработка и внедрение libsde-utils-amdf
0.5 Реализация новых возможностей
0.6 Переработка libsmfm
0.7 Реализация новых возможностей

Компоненты SDE

Компонент Назначение
Опубликованные:  
libsde-utils унифицированные средства резолвинга путей к ресурсам и файлам конфигурации; средства ведения отладочного лога; некоторые вспомогательные функции
libsde-utils-x11 вспомогательные функции для работы с X11 (вероятно, будет удалено в 0.2)
libsde-utils-gtk вспомогательные функции для работы с Gtk (вероятно, будет удалено в 0.2)
libsde-utils-jansson вспомогательные функции для работы с Jansson (вероятно, будет удалено в 0.2)
libsmfm-core средства управления файлами, не зависящие от графического тулкита
libsmfm-gtk средства управления файлами, зависящие от Gtk
waterline фреймворк апплетов рабочего стола
stuurman-desktop менеджер иконок и фона рабочего стола
stuurman файловый менеджер
spicview средство просмотра изображений
rainbow-cm менеджер буфера обмена
qk текстовый редактор на основе medit
Запланированные:  
libsde-utils-amdf Application Metadata Framework - библиотека-перечислитель метаданных приложений
sde-session-manager Менеджер графического сеанса
sde-screensaver простой скринсейвер, ставящий акцент на надёжности и безопасности, а не на богатстве настроек
sde-task-manager диспетчер задач и монитор быстродействия системы
stuurman-find консольная утилита поиска файлов с использованием libsmfm
stormwm менеджер окон

Глобальные задачи (затрагивающие все или большинство компонентов проекта)

В этом разделе более развёрнуто описаны упомянутые в списке milestone-ов задачи:

Унифицированный доступ к ресурсам и файлам конфигурации приложений

Текущая реализация резолвера путей в libsde-utils построена на в корне ошибочных принципах. Следующие задачи должны успешно решаться после редизайна API и его реализации:

Предполагаемый интепретатор конфигурации резолвера - partcl [1], [2], будет встроен в libsde-utils.

Перечислитель метаданных приложений и других компонент

Сейчас для обработки файлов *.desktop используются:

Этот зоопарк необходимо устранить, разработав и внедрив в состав SDE библиотеку libsde-utils-amdf, обеспечивающую слежение за всеми иcточниками файлов *.desktop, файлами mimeinfo.cache, файлами mimeinfo.cache, mimeapps.list, defaults.list и т.п., предоставляющую унифицированный доступ к этим данным. Также обеспечивающую слежение и за файлами *.menu и *.directory и построение оглавления для меню приложений.

В перспективе - также необходимо обеспечивать сопоставление файлов *.desktop, классов окон WM_CLASS и имён dbus, аналогично тому как это делает bamf.

Переработка архитектуры libsmfm

Примерный план того, что должно получится:

Фундамент фреймворка:

Тип данных Назначение
FmPath путь файловой системы или URL
FmPathList список FmPath
FmFileInfo контейнер метаданных файла
FmFileInfoList список FmFileInfo
FmMonitor монитор файлов
FmFolder объект, обеспечивающий загрузку данных из каталога и слежение за появлением/удалением/изменением файлов
FmMimeType тип MIME
FmIcon описатель ассоцированной с файлом иконки
FmFile субкласс GFile для использования в предоставляемых расширениях GIO
FmJob базовый класс для многопоточных операций
FmFileInfoJob обеспечивает асинхронное чтение данных для указанного списка FmFileInfo
FmDirListJob обеспечивает асинхронное чтение данных для указанного каталога
FmSimpleJob обёрртка для запуска указанной функции асинхронно без необходимости создания субкласса от FmJob

Полезные для менеджмента файлов субклассы FmJob:

Тип данных Назначение
FmDeepCountJob рекурсивно подсчитывает элементы
FmFileOpsJobDelete рекурсивно выполняет различные операции (копирование, перемещение, удаление и пр.)

Расширяемая функциональность:

Тип данных Назначение
FmAddonEnumerator обеспечивает перечисление и загрузку модулей, расширяющих функциональность
FmThumbnailProvider высокоуровневый интерфейс, предоставляющий эскизы содержимого файлов
FmHighlighProvider высокоуровневый интерфейс, перечисляющий предлагаемые цвета для имён файлов различных типов
FmFileMenuProvider высокоуровневый интерфейс, обеспечивающий построение контекстного меню файлов
FmAppInfoProvider высокоуровневый интерфейс перечислителя приложений и их свойств
FmFileLauncher обеспечивает выполнение над файлами canonical verbs (Open, Run, View, Play, Edit) с использованием информации от FmAppInfoProvider и FmFileMenuProvider
FmThumbnailHandler интерфейс к модулю расширения функциональности
FmHighlighHandler интерфейс к модулю расширения функциональности
FmFileMenuHandler интерфейс к модулю расширения функциональности
FmAppInfoHandler интерфейс к модулю расширения функциональности

Реализации по умолчанию:

Тип данных Назначение
FmDefaultFileNameHandler строит меню для canonical verbs на основании данных от FmAppInfoProvider
FmDefaultHighlighHandler простой хайлайтер, читающий соответствия типа MIME и цвета из конфига
FmDefaultAppInfoHandler перечисляет приложения с использованием libsde-utils-amdf

Дополнительные модули в составе фреймворка:

Название Назначение
thunar-custom-actions-handler читает custom actions из файлов конфигурации, применяемых в Thunar
gdk-pixbuf-handler строит эскизы для файлов, поддерживаемых gdk-pixbuf
static-custom-verbs-handler перечисляет дополнительные пункты контестного меню, описанные при помощи особой разновидности файлов *.desktop

Модули GIO в составе фреймворка:

Название Назначение
fm-vfs-search поиск файлов по различным критериям
fm-vfs-menu представление меню приложений в виде дерева папок

Дополнительная функциональность

Название Назначение
fm-templates перечисляет известные шаблоны для создания новых файлов
fm-bookmarks управляет списком bookmark-ов

TODO

Различные задачи, не занесённые в багтрекер на данный момент. Если вы заинтересованы в решении каких-то из этих задач, ваши pull-реквесты горячо приветствуются: