KDE Frameworks

Last updated
KDE Frameworks
Original author(s) KDE
Developer(s) KDE
Initial release1 July 2014;10 years ago (2014-07-01)
Stable release
6.5.0 [1]   OOjs UI icon edit-ltr-progressive.svg / 9 August 2024;3 months ago (9 August 2024)
Repository
Written in C++ (Qt)
Operating system Cross-platform (including "partial" support for Android, [2] [3] Windows, [4] macOS and Haiku)
Type
License GNU Lesser General Public License (LGPL) [5]
Website api.kde.org/frameworks/index.html   OOjs UI icon edit-ltr-progressive.svg

KDE Frameworks is a collection of libraries and software frameworks readily available to any Qt-based software stacks or applications on multiple operating systems. [6] 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). [7]

Contents

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. [8]

Some source code was moved from being part of KDE Frameworks 5 to being part of Qt 5.2 and later. Evolution and development of KDE software.svg
Some source code was moved from being part of KDE Frameworks 5 to being part of Qt 5.2 and later.

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 [9] and use Git. [10] [11]

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

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. [13] 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. [14]

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

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 [18] developed by Marco Martin [19] 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, [20] the Kaidan messenger, [21] 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, [22] while Fedora Linux distributes it under the name kf5-kglobalaccel. [23]

Bindings

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

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. [27] [28] [29]

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. [8]

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

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. [8]

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. [32]

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. [33]

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.

Related Research Articles

<span class="mw-page-title-main">KDE</span> Free software community

KDE is an international free software community that develops free and open-source software. As a central development hub, it provides tools and resources that enable collaborative work on its projects. Its products include the Plasma Desktop, KDE Frameworks, and a range of applications such as Kate, digiKam, and Krita. Some KDE applications are cross-platform and can run on Unix and Unix-like operating systems, Microsoft Windows, and Android.

<span class="mw-page-title-main">Calligra</span> Office suite made for KDE

Calligra Suite is a graphic art and office suite by KDE. It is available for desktop PCs, tablet computers, and smartphones. It contains applications for word processing, spreadsheets, presentation, databases, vector graphics, and digital painting.

<span class="mw-page-title-main">Qt (software)</span> Object-oriented framework for software development

Qt is a cross-platform application development framework for creating graphical user interfaces as well as cross-platform applications that run on various software and hardware platforms such as Linux, Windows, macOS, Android or embedded systems with little or no change in the underlying codebase while still being a native application with native capabilities and speed.

<span class="mw-page-title-main">KDevelop</span> Integrated development environment

KDevelop is a free and open-source integrated development environment (IDE) for Unix-like computer operating systems and Windows. It provides editing, navigation and debugging features for several programming languages, and integration with build automation and version-control systems, using a plugin-based architecture.

<span class="mw-page-title-main">PyQt</span> Python GUI library

PyQt is a Python binding of the cross-platform GUI toolkit Qt, implemented as a Python plug-in. PyQt is free software developed by the British firm Riverbank Computing. It is available under similar terms to Qt versions older than 4.5; this means a variety of licenses including GNU General Public License (GPL) and commercial license, but not the GNU Lesser General Public License (LGPL). PyQt supports Microsoft Windows as well as various kinds of UNIX, including Linux and MacOS.

<span class="mw-page-title-main">KDE Software Compilation 4</span> Software

KDE Software Compilation 4 was the only series of the so-called KDE Software Compilation, first released in January 2008 and the last release being 4.14.3 released in November 2014. It was the follow-up to K Desktop Environment 3. Following KDE SC 4, the compilation was broken up into basic framework libraries, desktop environment and applications, which are termed KDE Frameworks 5, KDE Plasma 5 and KDE Applications, respectively.

<span class="mw-page-title-main">Phonon (software)</span>

Phonon is the multimedia API provided by KDE and is the standard abstraction for handling multimedia streams within KDE software and also used by several Qt applications.

<span class="mw-page-title-main">KDE Platform 4</span> Collection of software libraries and frameworks

KDE Platform 4 was a collection of libraries and software frameworks by KDE that served as technological foundation for KDE Software Compilation 4 distributed under the GNU Lesser General Public License (LGPL). KDE Platform 4 was the successor to KDElibs and the predecessor of KDE Frameworks. KDE Platform 4 is the only version of KDE Platform, and in 2013 it was replaced by KDE Frameworks 5.

<span class="mw-page-title-main">KDE Plasma 4</span> Graphical environments provided by KDE

KDE Plasma 4 is the fourth generation of the KDE workspace environments. It consists of three workspaces, each targeting a certain platform: Plasma Desktop for traditional desktop PCs and notebooks, Plasma Netbook for netbooks, and Plasma Active for tablet PCs and similar devices.

<span class="mw-page-title-main">Kdenlive</span> Free and open-source video editing software

Kdenlive is a free and open-source video editing software based on the MLT Framework, KDE and Qt. The project was started by Jason Wood in 2002, and is now maintained by a small team of developers.

<span class="mw-page-title-main">Qt Creator</span> QT development environment

Qt Creator is a cross-platform C++, JavaScript, Python and QML integrated development environment (IDE) which simplifies GUI application development. It is part of the SDK for the Qt GUI application development framework and uses the Qt API, which encapsulates host OS GUI function calls. It includes a visual debugger and an integrated WYSIWYG GUI layout and forms designer. The editor has features such as syntax highlighting and autocompletion. Qt Creator uses the C++ compiler from the GNU Compiler Collection on Linux. On Windows it can use MinGW or MSVC with the default install and can also use Microsoft Console Debugger when compiled from source code. Clang is also supported.

<span class="mw-page-title-main">KDE Partition Manager</span> Disk partitioning application for KDE desktop environment

KDE Partition Manager is a disk partitioning application originally written by Volker Lanz for the KDE Platform. It was first released for KDE SC 4.1 and is released independently of the central KDE release cycle. After the death of Volker Lanz in April 2014, Andrius Štikonas continued the development and took over as the maintainer.

<span class="mw-page-title-main">KDE Software Compilation</span> Desktop environment and an associated range of KDE Applications produced by KDE

The KDE Software Compilation was an umbrella term for the desktop environment plus a range of included applications produced by KDE. From its 1.0 release in July 1998 until the release of version 4.4 in February 2010, the Software Compilation was simply known as KDE, which stood for K Desktop Environment until the rebrand. The then called KDE SC was used from 4.4 onward until the final release 4.14 in July 2014. It consisted of the KDE Plasma 4 desktop and those KDE applications, whose development teams chose to follow the Software Compilation's release schedule. After that, the KDE SC was split into three separate product entities: KDE Plasma, KDE Frameworks and KDE Applications, each with their own independent release schedules.

<span class="mw-page-title-main">KVIrc</span> IRC Client

KVIrc is a graphical IRC client for Linux, Unix, Mac OS and Windows. The name is an acronym of K Visual IRC in which the K stands for a dependency to KDE, which became optional from version 2.0.0. The software is based on the Qt framework and its code is released under a modified GNU General Public License.

<span class="mw-page-title-main">KDE Gear</span> Set of applications and supporting libraries

The KDE Gear is a set of applications and supporting libraries that are developed by the KDE community, primarily used on Linux-based operating systems but mostly multiplatform, and released on a common release schedule.

<span class="mw-page-title-main">Snap (software)</span> Software deployment system for Linux by Canonical

Snap is a software packaging and deployment system developed by Canonical for operating systems that use the Linux kernel and the systemd init system. The packages, called snaps, and the tool for using them, snapd, work across a range of Linux distributions and allow upstream software developers to distribute their applications directly to users. Snaps are self-contained applications running in a sandbox with mediated access to the host system. Snap was originally released for cloud applications but was later ported to also work for Internet of Things devices and desktop applications.

<span class="mw-page-title-main">KDE neon</span> Linux distribution based on Ubuntu

KDE neon is a Linux distribution developed by KDE based on Ubuntu long-term support (LTS) releases, bundled with a set of additional software repositories containing the latest versions of the Plasma 6 desktop environment/framework, Qt 6 toolkit and other compatible KDE software. First announced in June 2016 by Kubuntu founder Jonathan Riddell following his departure from Canonical Ltd., it has been adopted by a steadily growing number of Linux users, regularly appearing in the Top 20 on DistroWatch.com's popularity tables.

<span class="mw-page-title-main">KDE Projects</span>

KDE Projects are projects maintained by the KDE community, a group of people developing and advocating free software for everyday use, for example KDE Plasma and KDE Frameworks or applications such as Amarok, Krita or Digikam. There are also non-coding projects like designing the Breeze desktop theme and iconset, which is coordinated by KDE's Visual Design Group. Even non-Qt applications like GCompris, which started as a GTK-based application, or web-based projects like WikiToLearn are officially part of KDE.

<span class="mw-page-title-main">KaOS</span> KDE-focused Linux distribution

KaOS is a desktop Linux distribution that features the latest version of the KDE desktop environment, the LibreOffice office suite, and other popular software applications that use the Qt toolkit.

<span class="mw-page-title-main">KDE Plasma</span> Set of graphical environments for Unix-like operating systems

Plasma is a set of graphical shells developed by KDE for Unix-like operating systems. With the KDE brand repositioning in 2009, Plasma 4.4 succeeded KDE 4.3. Currently, it has four workspace variants: one for desktop PCs and laptops, one for TVs, one for smartphones, and another for embedded and touch-enabled devices. Plasma Desktop, in its default configuration, resembles KDesktop from K Desktop Environment 3 and Microsoft Windows XP; however, extensive configurability allows radical departures from the default layout.

References

  1. "KDE Ships Frameworks 6.5.0". 9 August 2024. Retrieved 20 August 2024.
  2. "Release of KDE Frameworks 5.24.0". 9 July 2016. Archived from the original on 11 July 2016. Retrieved 10 July 2016.
  3. "Android - KDE Community Wiki". Archived from the original on 2016-08-26. Retrieved 2016-07-11.
  4. "KDE API Homepage". Archived from the original on 2016-08-26. Retrieved 2016-07-11.
  5. "First release of KDE Frameworks 5". 2014-07-07. Archived from the original on 2015-09-05. Retrieved 2014-07-08.
  6. "The KDE Frameworks". API Documentation. Archived from the original on 2019-12-07. Retrieved 2020-03-17.
  7. "KDE Frameworks". Tech Base. Archived from the original on 2020-08-13. Retrieved 2020-03-17.
  8. 1 2 3 Howard Chan (2013-09-04). "KDE Release Structure Evolves". KDE. Archived from the original on 2020-11-12. Retrieved 2014-02-27.
  9. "Release schedule for KDE Frameworks 5". Archived from the original on 2016-06-24. Retrieved 2016-05-18.
  10. "Git workflow for Frameworks". Archived from the original on 2020-10-20. Retrieved 2014-08-19.
  11. "KDE Frameworks5 API documentation". Archived from the original on 2014-08-22.
  12. "Coinstallability with KDE Platform 4". Archived from the original on 2020-12-01. Retrieved 2014-08-19.
  13. "metainfo.yaml of KConfig".[ permanent dead link ]
  14. Jos Poortvliet (2013-12-17). "Qt 5.2 - Foundation for KDE Frameworks 5". Dot.kde.org. Archived from the original on 2020-11-11. Retrieved 2014-03-10.
  15. Howard Chan (2013-09-25). "Frameworks 5". Dot.kde.org. Archived from the original on 2020-11-26. Retrieved 2014-03-10.
  16. "API Documentation". api.kde.org. Archived from the original on 2021-10-02. Retrieved 2021-10-02.
  17. "KWindowSystem in Frameworks 5". 6 February 2014. Archived from the original on 28 July 2014. Retrieved 25 July 2014.
  18. "KDE Kirigami". KDE. Archived from the original on July 29, 2019. Retrieved November 25, 2018.
  19. "Contributors to KDE/Kirigami". GitHub . Archived from the original on 2019-04-30. Retrieved 2021-08-08.
  20. Archived at Ghostarchive and the Wayback Machine : "Banji (Ring-KDE) new skin on desktop Linux and Android". YouTube . March 2019.
  21. "Kaidan - A user-friendly XMPP client for every device!". GitHub . 4 July 2021. Archived from the original on 26 April 2019. Retrieved 8 August 2021.
  22. "KGlobalAccel in Debian". Archived from the original on 2016-09-20. Retrieved 2016-09-11.
  23. "KGlobalAccel in Fedora".[ permanent dead link ]
  24. "The KDE development platform". Archived from the original on 2018-10-03. Retrieved 2010-11-26.
  25. Development/Languages - KDE TechBase Archived 2021-02-03 at the Wayback Machine . Techbase.kde.org (2012-07-12). Retrieved on 2013-07-17.
  26. "Qyoto". Archived from the original on 2020-11-27. Retrieved 2015-01-18.
  27. "Frameworks 5 Technology Preview". KDE. 2014-01-07. Archived from the original on 2014-02-26. Retrieved 2014-02-27.
  28. "KDE Ships First Alpha of Frameworks 5". KDE. 2014-02-14. Archived from the original on 2014-03-01. Retrieved 2014-02-27.
  29. "KDE Ships Second Alpha of Frameworks 5". KDE. 2014-03-03. Archived from the original on 2014-03-09. Retrieved 2014-03-04.
  30. "KF5 Update Meeting Minutes 2014-w28". 2014-07-08. Archived from the original on 2016-03-07. Retrieved 2014-07-10.
  31. "Firefox + KDE integration: Getting FF to use Dolphin reliably". 2014-07-03. Archived from the original on 2018-05-15. Retrieved 2014-07-10.
  32. "KDE MegaRelease 6 Announcement". 2024-02-28. Retrieved 2024-03-20.
  33. "KDE Licensing Policy". Archived from the original on 2010-12-16. Retrieved 2010-11-06.