KDE Frameworks is a collection of
libraries
A library is a collection of Book, books, and possibly other Document, materials and Media (communication), media, that is accessible for use by its members and members of allied institutions. Libraries provide physical (hard copies) or electron ...
and
software framework
In computer programming, a software framework is a software abstraction that provides generic functionality which developers can extend with custom code to create applications. It establishes a standard foundation for building and deploying soft ...
s readily available to any
Qt-based software stacks or applications on multiple
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
s. Featuring frequently needed functionality solutions like hardware integration, file format support, additional
graphical control element
A graphical widget (also graphical control element or control) in a graphical user interface is an element of interaction, such as a button or a scroll bar. Controls are software components that a computer user interacts with through direct m ...
s, plotting functions, and
spell checking, the collection serves as the technological foundation for
KDE Plasma
KDE Plasma is a Shell (computing), graphical shell developed by the KDE community for Unix-like operating systems. It serves as the interface layer between the user and the operating system, providing a graphical user interface (GUI) and workspa ...
and
KDE Gear
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.
The bundle is compos ...
. It is distributed under the
GNU Lesser General Public License
The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
(LGPL).
Overview
KDE Frameworks is based on Qt, which enables a more widespread use of
QML, a simpler
JavaScript
JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior.
Web browsers have ...
-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
The KDE Software Compilation (KDE SC) 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 Compi ...
into KDE Frameworks 5, KDE Plasma 5
KDE Plasma 5 is the fifth generation of the KDE Plasma graphical workspaces environment, created by KDE primarily for Linux systems. KDE Plasma 5 is the successor of KDE Plasma 4 and was first released on 15 July 2014. It was succeeded by KDE Pl ...
and KDE Applications
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.
The bundle is compos ...
, each sub-project can pick its own development pace. KDE Frameworks are released on a monthly basis and use Git
Git () is a distributed version control system that tracks versions of files. It is often used to control source code by programmers who are developing software collaboratively.
Design goals of Git include speed, data integrity, and suppor ...
.
It should be possible to install KDE Frameworks alongside the KDE Platform 4 so apps can use either one.
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
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
& 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''. 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:
* Functional elements have no runtime dependencies.
* Integration designates code that may require runtime dependencies for integration depending on what the OS or platform offers.
* Solutions have mandatory 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.
KDE Frameworks are grouped in four different tiers according to dependency on other libraries.
; 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 developed by Marco Martin 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
Linus Benedict Torvalds ( , ; born 28 December 1969) is a Finnish software engineer who is the creator and lead developer of the Linux kernel. He also created the distributed version control system Git.
He was honored, along with Shinya Yam ...
and Dirk Hohndels' scuba diving application Subsurface, the messenger client Banji, the Kaidan messenger, Vvave music player and the KDE software center Discover.
Software packages
Linux distribution use some package management system
A package manager or package management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.
A package manager deals wi ...
to package the software they distribute. Debian
Debian () is a free and open-source software, free and open source Linux distribution, developed by the Debian Project, which was established by Ian Murdock in August 1993. Debian is one of the oldest operating systems based on the Linux kerne ...
for example distributes ''KGlobalAccel'' under the package name ''libkf5globalaccel'', while Fedora Linux
Fedora Linux is a Linux distribution developed by the Fedora Project. It was originally developed in 2003 as a continuation of the Red Hat Linux project. It contains software distributed under various free and open-source licenses and aims to b ...
distributes it under the name ''kf5-kglobalaccel''.
Bindings
While being mainly written in C++, there are many bindings for other programming languages available:
* Python
* Ruby ( Korundum, built on top of QtRuby)
* Perl
* C# (however, the current framework for binding to C# and other .NET languages has been deprecated, and the replacement only compiles on Windows).
These and other bindings use the following technologies:
* Smoke: for creating bindings for Ruby
Ruby is a pinkish-red-to-blood-red-colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sapph ...
, C# and PHP
PHP is a general-purpose scripting language geared towards web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by the PHP Group. ...
* SIP: for creating bindings for Python
* Kross: Embedded scripting for C++ applications, with support for Ruby, Python, JavaScript
JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior.
Web browsers have ...
, QtScript
QtScript is a scripting engine that has been part of the Qt cross-platform application framework since version 4.3.0. It was first deprecated as of Qt 5.5, then dropped as of Qt 6.5, and replaced by Qt Meta-object Language ( QML).
The scripting l ...
, Falcon and Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
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.
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
KDE Platform 4 was a collection of Library (computing), 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 ...
).
The transition from KDE Platform
KDE Platform 4 was a collection of Library (computing), 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 ...
to KDE Frameworks began in August 2013, guided by top KDE technical contributors.
After the initial release of KDE Frameworks 5.0, the developers focused on adding new features to the components in KDE Frameworks 5, an example being better integration of Firefox
Mozilla Firefox, or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. It uses the Gecko rendering engine to display web pages, which implements curr ...
into KDE.
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.[
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.
]
KDE4 transformation
During KDE SC 4, the then so called KDE Platform
KDE Platform 4 was a collection of Library (computing), 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 ...
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
Solid is a state of matter where molecules are closely packed and can not slide past each other. Solids resist compression, expansion, or external forces that would alter its shape, with the degree to which they are resisted dependent upon the ...
, Nepomuk
Nepomuk (; ) is a town in Plzeň-South District in the Plzeň Region of the Czech Republic. It has about 3,600 inhabitants. It is known as the birthplace of Saint John of Nepomuk, who was born here around 1340.
Administrative division
Nepomuk ...
, Phonon
A phonon is a collective excitation in a periodic, elastic arrangement of atoms or molecules in condensed matter, specifically in solids and some liquids. In the context of optically trapped objects, the quantized vibration mode can be defined a ...
, etc. and are licensed either under the LGPL, BSD license, MIT License
The MIT License is a permissive software license originating at the Massachusetts Institute of Technology (MIT) in the late 1980s. As a permissive license, it puts very few restrictions on reuse and therefore has high license compatibility.
Unl ...
or X11 license.
Adoption
Besides the KDE Software Compilation
The KDE Software Compilation (KDE SC) 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 Compi ...
, there are other adopters such as the desktop environment
In computing, a desktop environment (DE) is an implementation of the desktop metaphor made of a bundle of programs running on top of a computer operating system that share a common graphical user interface (GUI), sometimes described as a graphi ...
s LXQt
LXQt is a free and open-source software, free and open source lightweight desktop environment. It was formed from the merger of the LXDE and Razor-qt projects.
Like its GTK predecessor LXDE, LXQt does not ship or develop its own window manager ...
, MoonLightDE or Hawaii.
Version 3.0 of Krita
Krita ( ) is a free and open-source software, free and open-source raster graphics editor designed primarily for digital art and 2D animation. Originally created for Linux, the software also runs on Windows, macOS, Haiku (operating system), Hai ...
, 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.
References
External links
KDE Frameworks in KDE's own Gitlab instance
KDE Frameworks in old Phabricator
{{KDE
Application programming interfaces
C++ libraries
Computing platforms
Free computer libraries
KDE software
Unix windowing system-related software
X-based libraries
Wayland (display server protocol)