KDE Frameworks 5
   HOME

TheInfoList



OR:

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 In software, a spell checker (or spelling checker or spell check) is a software feature that checks for misspellings in a text. Spell-checking features are often embedded in software or services, such as a word processor, email client, electronic d ...
, 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 QML (Qt Meta-object Language) is a user interface markup language. It is a declarative language (similar to CSS and JSON) for designing user interface–centric applications. Inline JavaScript code handles imperative aspects. It is associate ...
, 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 Binary-code compatibility (binary compatible or object-code compatible) is a property of a computer system, meaning that it can run the same executable code, typically machine code for a general-purpose computer central processing unit (CPU), ...
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 QML (Qt Meta-object Language) is a user interface markup language. It is a declarative language (similar to CSS and JSON) for designing user interface–centric applications. Inline JavaScript code handles imperative aspects. It is associate ...
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 Qt ( pronounced "cute") 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, An ...
) * 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 Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (prog ...
* Kross: Embedded scripting for C++ applications, with support for Ruby,
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (prog ...
,
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 Calligra Suite is a Graphic art software, graphic art and office suite by KDE. It is available for Desktop computer, desktop PCs, tablet computers, and smartphones. It contains applications for word processor, word processing, spreadsheets, prese ...
, 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á Trojitá () is a free software IMAP and SMTP email client developed using the Qt C++ library. The design goals of the maintainers are to develop a fast e-mail client which respects open standards, is cross-platform and uses the available resour ...
or
Subsurface In geology, bedrock is solid rock that lies under loose material (regolith) within the crust of Earth or another terrestrial planet. Definition Bedrock is the solid rock that underlies looser surface material. An exposed portion of bedro ...
.


References


External links


KDE Frameworks in KDE's own Gitlab instanceKDE 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)