На прошедшей в Швейцарии встрече разработчиков KDE был рассмотрен вопрос усовершенствования платформы для разработки приложений. В обсуждении приняли участие разработчики базового набора библиотек KDE (kdelibs), системы сборки, представители дистрибутивов и разработчики развиваемых вне проекта приложений. В результате обсуждения, разработчики согласились, что необходимо сделать платформу KDE более модульной. Конечной целью является подготовка хорошо поддерживаемого и качественного набора библиотек, отвечающего потребностям существующего сообщества разработчиков, предоставляющего доступ к возможностям KDE и пригодных для использования в широком круге приложений, в том числе и предназначенных для мобильных устройств и потребительской техники.
В итоге, планируется уйти от монолитной платформы к набору интегрируемых друг с другом разрозненных фреймворков, реализующих ту или иную функциональность и отвечающих потребностям базовых подсистем KDE и пользовательских приложений. Отмечена необходимость подготовки для каждой библиотеки исчерпывающего описания, в котором следует указать назначение компонента и способы его применения в Qt или KDE приложениях.
В настоящее время рассматривается разделение KDE-фреймворков на три категории, каждая из которых имеет свою иерархию зависимостей для предотвращения путаницы с внутренними зависимостями.
- Функциональные дополнения к Qt, расширяющие возможности Qt в определенных направлениях, например, в плане предоставления средств для управления конфигурацией. Отнесенные к данной категории библиотеки не будут требовать дополнительных зависимостей, кроме Qt;
- Компоненты для интеграции с операционной системой, расширяющие функции первой категории зависимостями, специфичными для различных операционных систем (например, libktimezone может использовать ktimezoned в Linux и отдельный API на платформе Windows);
- Полнофункциональный программный стек, включающий зависимости от дополнительных библиотек и runtime-компонентов.
Главным достоинством подобного разделения является более явное восприятие разработчиками уровня зависимостей при задействовании в своих приложениях определенных библиотек. Сокращения графа зависимостей и возможность обособленного использования библиотек сделают подобные KDE-библиотеки привлекательными для разработчиков на Qt, не желающих привязывать свои приложения к KDE (в зависимостях будет не весь kdelibs, а только одна библиотека, выступающая в роли надстройки над Qt). Кроме того, такие библиотеки смогут быть задействованы в других программных окружениях, не связанных с KDE.
В процессе обсуждения трансформации KDE Platform в KDE Frameworks, разработчики уже провели анализ классов и библиотек из таких компонентов, как kdesupport, kdelibs, kde-runtime, kdepimlibs и kdepim-runtime. Разработчики отмечают, что реализация идеи KDE Frameworks как нельзя кстати сочетается с грядущим релизом Qt 5, который Nokia планирует выпустить в следующем году. В будущем некоторые подготовленные в рамках KDE Frameworks надстройки над Qt имеют шанс войти в состав основного фреймворка Qt. Новая политика Nokia в направлении увеличения открытости процесса разработки Qt в сочетании с усилением модульности Qt открывают двери для подобной интеграции дополнений к Qt, развиваемых в рамках проекта KDE. Более того сообщается, что первые патчи от проекта KDE уже приняты в состав ветки Qt 5.
Точная дата выхода первого релаза KDE Frameworks пока не называется, но разработчики планируют успеть ко времени выхода релиза Qt 5. Плотную работу над реализацией KDE Frameworks планируется начать после выпуска релиза KDE 4.7.0, запланированного на конец июля. На первом этапе планируется заняться реструктуризацией существующих модулей, таких как kdesupport, kdelibs и kde-runtime, которые будут разбиты в расчете один модуль на каждую библиотеку. Возможность сборки всех частей KDE Frameworks разом будет оставлена, так же как и формирование монолитных пакетов с набором библиотек при формировании релизов (т.е. в рамках релиза KDE как и раньше будет предоставляться возможность загрузить один архив с библиотеками, а не копировать десяток поставляемых разрознено модулей).
Параллельно с разработкой KDE Frameworks будет продолжено развитие компонентов рабочего стола и приложений KDE 4.x, которые будут создаваться на базе текущей платформы KDE (KDE Platform 4.x). Подобный подход позволит максимально сгладить переход разработчиков с использования KDE Platform на KDE Frameworks. Когда KDE Frameworks перейдет в фазу окончательной стабилизации будет развернута кампания по привлечению разработчиков конечных приложений к использованию новых фреймворков. Как и в случае с Qt 5 планируется обеспечить высокий уровень совместимости на уровне исходных текстов, что даст возможность минимизировать изменения существующего кода при миграции на KDE Frameworks приложений и таких компонентов KDE, как Plasma Desktop.