KDE Frameworks
   HOME

TheInfoList



OR:

KDE Frameworks is a collection of
libraries A library is a collection of Document, materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or electronic media, digital access (soft copies) materials, and may be a ...
and
software framework In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard ...
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, software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
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 dir ...
s, plotting functions, and spell checking, the collection serves as technological foundation for
KDE Plasma 5 KDE Plasma 5 is the fifth and current generation of the 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 includes a new default ...
and
KDE Gear The KDE Gear (also known as the KDE Applications Bundle or KDE Applications) 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, an ...
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

Current KDE Frameworks are based on Qt 5, which enables a more widespread use of
QML QML (Qt Modeling 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 associated wi ...
, a simpler
JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of websites use JavaScript on the client side for webpage behavior, of ...
-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 Comp ...
into KDE Frameworks 5,
KDE Plasma 5 KDE Plasma 5 is the fifth and current generation of the 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 includes a new default ...
and
KDE Applications The KDE Gear (also known as the KDE Applications Bundle or KDE Applications) 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 ...
, each sub-project can pick its own development pace. KDE Frameworks are released on a monthly basis and use git. 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 CPU, that another computer system ...
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''. 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 1-2 etc. :Tier 4 - Mostly plugins that provide additional features like platform support can be ignored.


Kirigami

Kirigami is a
QML QML (Qt Modeling 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 associated wi ...
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, historically, the lead developer of the Linux kernel, used by Linux distributions and other operating systems such as Android. He also ...
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 w ...
to package the software they distribute.
Debian Debian (), also known as Debian GNU/Linux, is a Linux distribution composed of free and open-source software, developed by the community-supported Debian Project, which was established by Ian Murdock on August 16, 1993. The first version of De ...
for example distributes ''KGlobalAccel'' under the package name ''libkf5globalaccel'', while
Fedora Linux Fedora Linux is a Linux distribution developed by the Fedora Project. Fedora contains software distributed under various free and open-source licenses and aims to be on the leading edge of open-source technologies. Fedora is the upstream source ...
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 QtRuby is a binding of the application framework Qt for Ruby. Korundum is an additional set of bindings for KDE which extend QtRuby. QtRuby is cross-platform, as all the underlying technologies are platform agnostic. QtRuby hello world r ...
) * 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 A 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 ...
, C# and PHP * 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 that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of websites use JavaScript on the client side for webpage behavior, of ...
, QtScript, Falcon and
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
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). The transition from KDE Platform 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 current ...
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.


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 Solid is one of the four fundamental states of matter (the others being liquid, gas, and plasma). The molecules in a solid are closely packed together and contain the least amount of kinetic energy. A solid is characterized by structur ...
, Nepomuk,
Phonon In physics, a phonon is a collective excitation in a periodic, elastic arrangement of atoms or molecules in condensed matter, specifically in solids and some liquids. A type of quasiparticle, a phonon is an excited state in the quantum mechani ...
, etc. and are licensed either under the LGPL, BSD license,
MIT License The MIT License is a permissive free software license originating at the Massachusetts Institute of Technology (MIT) in the late 1980s. As a permissive license, it puts only very limited restriction on reuse and has, therefore, high license comp ...
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 Comp ...
, 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 grap ...
s
LXQt LXQt is a 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, instead LXQt lets the user ...
, MoonLightDE or Hawaii. Version 3.0 of
Krita Krita ( ) is a free and open-source raster graphics editor designed primarily for digital art and 2D animation. The software runs on Windows, macOS, Linux, Android, and ChromeOS, and features an OpenGL-accelerated canvas, colour management su ...
, 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á 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 resource ...
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 bedr ...
.


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)