KDE Frameworks explained

KDE Frameworks
KDE Frameworks
Author:KDE
Developer:KDE
Programming Language:C++ (Qt)
Operating System:Cross-platform (including "partial" support for Android,[1] [2] Windows,[3] macOS and Haiku)
License:GNU Lesser General Public License (LGPL)[4]

KDE Frameworks is a collection of libraries and software frameworks readily available to any Qt-based software stacks or applications on multiple operating systems.[5] Featuring frequently needed functionality solutions like hardware integration, file format support, additional graphical control elements, plotting functions, and spell checking, the collection serves as the technological foundation for KDE Plasma and KDE Gear. It is distributed under the GNU Lesser General Public License (LGPL).[6]

Overview

KDE Frameworks is based on Qt, which enables a more widespread use of QML, a simpler JavaScript-based declarative programming language, for the design of user interfaces. The graphics rendering engine used by QML allows for more fluid user interfaces across different devices.

Since the split of the KDE Software Compilation into KDE Frameworks 5, KDE Plasma 5 and KDE Applications, each sub-project can pick its own development pace. KDE Frameworks are released on a monthly basis[7] and use Git.[8] [9]

It should be possible to install KDE Frameworks alongside the KDE Platform 4 so apps can use either one.[10]

API and ABI stability

Platform releases are those which begin a series (version number X.0). Only these major releases are allowed to break binary compatibility with the predecessor. Releases in the minor series (X.1, X.2, ...) will guarantee binary portability (API & ABI). This means, for instance, that software that was developed for KDE 3.0 will work on all (future) KDE 3 releases; however, an application developed for KDE 2 is not guaranteed to be able to make use of the KDE 3 libraries. KDE major version numbers mainly follow the Qt release cycle, meaning that KDE SC 4 is based on Qt 4, while KDE 3 was based on Qt 3.

Supported operating systems

The repository of each framework should contain a file named metainfo.yaml.[11] This file documents the maintainer of the framework, the type, the supported operating system and other information. The currently supported platforms are Linux, Microsoft Windows, macOS and Android.

Software architecture

Structure

The Frameworks have a clear dependency structure, divided into "categories" and "tiers". The "categories" refer to runtime dependencies:

Components

The KDE Frameworks bundle consists of over 70 packages. These existed as a single large package, called kdelibs, in KDE SC 4. Kdelibs was split into several individual frameworks, some of which are no longer part of KDE but were integrated into Qt 5.2.[12]

KDE Frameworks are grouped in four different tiers according to dependency on other libraries.[13] [14]

Tiers of Frameworks:
  • Tier 1 Mostly depend only on Qt, highly portable
  • Tier 2 Depends on Tier 1, but dependencies are still manageable.
  • Tier 3 Complex dependencies, including Tiers 12 etc.
  • Tier 4 Mostly plugins that provide additional features like platform support can be ignored.

    Kirigami

    Kirigami is a QML application framework[16] developed by Marco Martin[17] that enables developers to write applications that run natively on Android, iOS, Windows, Plasma Mobile and any classic Linux desktop environment without code adjustments.

    It is used by various applications, for example Linus Torvalds and Dirk Hohndels' scuba diving application Subsurface, the messenger client Banji,[18] the Kaidan messenger,[19] Vvave music player and the KDE software center Discover.

    Software packages

    Linux distribution use some package management system to package the software they distribute. Debian for example distributes KGlobalAccel under the package name libkf5globalaccel,[20] while Fedora Linux distributes it under the name kf5-kglobalaccel.[21]

    Bindings

    While being mainly written in C++, there are many bindings for other programming languages available:[22] [23]

    These and other bindings use the following technologies:

    Many bindings weren't updated to Qt5 and KF5 or only later in the release cycle.

    History

    The 5.0 release was preceded by a technology preview, two alpha releases, and three beta releases.[25] [26] [27]

    The source code of KDE Frameworks has been around since KDElibs 1. The first release as KDE Frameworks was with version 5, to account for the fact that the code base was that of KDE Platform version 4 (the only major version of KDE Platform).

    The transition from KDE Platform to KDE Frameworks began in August 2013, guided by top KDE technical contributors.[28]

    After the initial release of KDE Frameworks 5.0, the developers focused on adding new features to the components in KDE Frameworks 5,[29] an example being better integration of Firefox into KDE.[30]

    The major improvement of Frameworks 5 is its modularization. In earlier KDE versions, the libraries were bundled as a single large package. In Frameworks, the libraries were split into individual smaller packages. This facilitates utilization of the libraries by other Qt-based software, since dependencies can be kept at a minimum.[28]

    While KDE 4 was based on version 4 of the Qt widget toolkit, Frameworks 5 is based on version 5.

    As part of the KDE project's 'MegaRelease 6', on February 28, 2024, KDE Frameworks 6 was released, upgrading it to a Qt 6 base.[31]

    KDE4 transformation

    During KDE SC 4, the then so called KDE Platform consisted of all libraries and services needed for KDE Plasma and the applications. Starting with Qt 5, this platform was transformed into a set of modules that is now referred to as KDE Frameworks. These modules include: Solid, Nepomuk, Phonon, etc. and are licensed either under the LGPL, BSD license, MIT License or X11 license.[32]

    Adoption

    Besides the KDE Software Compilation, there are other adopters such as the desktop environments LXQt, MoonLightDE or Hawaii.

    Version 3.0 of Krita, the raster graphics editor of the Calligra Suite, which was released on May 31, 2016, depends on KDE Frameworks 5 and Qt 5.2.

    With Kirigami, there is also increased usage by applications such as Amarok, Avogadro, Trojitá or Subsurface.

    External links

    Notes and References

    1. Web site: Release of KDE Frameworks 5.24.0. 9 July 2016. 10 July 2016. 11 July 2016. https://web.archive.org/web/20160711112725/https://www.kde.org/announcements/kde-frameworks-5.24.0.php. live.
    2. Web site: Android - KDE Community Wiki. 2016-07-11. 2016-08-26. https://web.archive.org/web/20160826060254/https://community.kde.org/Android. live.
    3. Web site: KDE API Homepage. 2016-07-11. 2016-08-26. https://web.archive.org/web/20160826081136/https://api.kde.org/. live.
    4. Web site: First release of KDE Frameworks 5 . 2014-07-07 . 2014-07-08 . 2015-09-05 . https://web.archive.org/web/20150905235848/https://www.kde.org/announcements/kde-frameworks-5.0.php . live .
    5. Web site: The KDE Frameworks. API Documentation. 2020-03-17. 2019-12-07. https://web.archive.org/web/20191207081505/https://api.kde.org/frameworks/index.html. live.
    6. Web site: KDE Frameworks. Tech Base. 2020-03-17. 2020-08-13. https://web.archive.org/web/20200813210057/https://techbase.kde.org/KDE_Frameworks. live.
    7. Web site: Release schedule for KDE Frameworks 5 . 2016-05-18 . 2016-06-24 . https://web.archive.org/web/20160624011418/https://community.kde.org/Schedules/Frameworks . live .
    8. Web site: Git workflow for Frameworks . 2014-08-19 . 2020-10-20 . https://web.archive.org/web/20201020230548/https://community.kde.org/Frameworks/Git_Workflow . live .
    9. Web site: KDE Frameworks5 API documentation . dead . https://web.archive.org/web/20140822020749/http://api.kde.org/frameworks-api/frameworks5-apidocs/ . 2014-08-22 .
    10. Web site: Coinstallability with KDE Platform 4 . 2014-08-19 . 2020-12-01 . https://web.archive.org/web/20201201003619/https://community.kde.org/Frameworks/Coinstallability . live .
    11. Web site: metainfo.yaml of KConfig .
    12. Web site: Qt 5.2 - Foundation for KDE Frameworks 5. Dot.kde.org. Jos Poortvliet. 2013-12-17. 2014-03-10. 2020-11-11. https://web.archive.org/web/20201111211242/https://dot.kde.org/2013/12/17/qt-52-foundation-kde-frameworks-5. live.
    13. Web site: Frameworks 5. Dot.kde.org. Howard Chan. 2013-09-25. 2014-03-10. 2020-11-26. https://web.archive.org/web/20201126022246/https://dot.kde.org/2013/09/25/frameworks-5. live.
    14. Web site: API Documentation. 2021-10-02. api.kde.org. 2021-10-02. https://web.archive.org/web/20211002160917/https://api.kde.org/frameworks/#sg-tier_1. live.
    15. Web site: KWindowSystem in Frameworks 5. 6 February 2014. 25 July 2014. 28 July 2014. https://web.archive.org/web/20140728155928/http://blog.martin-graesslin.com/blog/2014/02/kwindowsystem-in-frameworks-5/. live.
    16. Web site: KDE Kirigami. November 25, 2018. KDE. July 29, 2019. https://web.archive.org/web/20190729201722/https://kde.org/products/kirigami/. live.
    17. Web site: Contributors to KDE/Kirigami. GitHub. 2021-08-08. 2019-04-30. https://web.archive.org/web/20190430053626/https://github.com/KDE/kirigami/graphs/contributors. live.
    18. Archived at Ghostarchive and the Wayback Machine: Web site: Banji (Ring-KDE) new skin on desktop Linux and Android . YouTube.
    19. Web site: Kaidan - A user-friendly XMPP client for every device!. GitHub. 4 July 2021. 8 August 2021. 26 April 2019. https://web.archive.org/web/20190426025950/https://github.com/KaidanIM/Kaidan. live.
    20. Web site: KGlobalAccel in Debian . 2016-09-11 . 2016-09-20 . https://web.archive.org/web/20160920164942/https://packages.debian.org/search?suite=default&section=all&arch=amd64&searchon=names&keywords=libkf5globalaccel . live .
    21. Web site: KGlobalAccel in Fedora.
    22. Web site: The KDE development platform. 2010-11-26. 2018-10-03. https://web.archive.org/web/20181003161722/https://www.kde.org/developerplatform/. live.
    23. http://techbase.kde.org/Development/Languages Development/Languages - KDE TechBase
    24. Web site: Qyoto. 2015-01-18. 2020-11-27. https://web.archive.org/web/20201127041557/https://techbase.kde.org/Development/Languages/Qyoto. live.
    25. Web site: Frameworks 5 Technology Preview. KDE. 2014-01-07. 2014-02-27. 2014-02-26. https://web.archive.org/web/20140226212223/http://www.kde.org/announcements/frameworks5TP/. live.
    26. Web site: KDE Ships First Alpha of Frameworks 5. KDE. 2014-02-14. 2014-02-27. 2014-03-01. https://web.archive.org/web/20140301164720/http://www.kde.org/announcements/announce-frameworks5-alpha.php. live.
    27. Web site: KDE Ships Second Alpha of Frameworks 5. KDE. 2014-03-03. 2014-03-04. 2014-03-09. https://web.archive.org/web/20140309093024/http://www.kde.org/announcements/announce-frameworks5-alpha2.php. live.
    28. Web site: KDE Release Structure Evolves. Howard Chan. KDE. 2013-09-04. 2014-02-27. 2020-11-12. https://web.archive.org/web/20201112015744/https://dot.kde.org/2013/09/04/kde-release-structure-evolves. live.
    29. Web site: KF5 Update Meeting Minutes 2014-w28 . 2014-07-08 . 2014-07-10 . 2016-03-07 . https://web.archive.org/web/20160307155318/https://mail.kde.org/pipermail/kde-frameworks-devel/2014-July/017410.html . live .
    30. Web site: Firefox + KDE integration: Getting FF to use Dolphin reliably. 2014-07-03. 2014-07-10. 2018-05-15. https://web.archive.org/web/20180515070853/https://mail.mozilla.org/pipermail/firefox-dev/2014-July/001940.html. live.
    31. Web site: KDE MegaRelease 6 Announcement. 2024-02-28. 2024-03-20.
    32. Web site: KDE Licensing Policy. 2010-11-06. 2010-12-16. https://web.archive.org/web/20101216003927/http://techbase.kde.org/index.php?title=Policies%2FLicensing_Policy. live.