KDE4 Part 1

by muungwana

The KDE4 series started its life in January 11th, 2008 with the introduction of KDE 4.0. The third major release of KDE in this series will be on January 27th, 2009. If all goes well, this will be the version of KDE that will be added to the repository as an option to the default KDE3 desktop. This article will try to explain some KDE4 core technologies and why they were introduced in this series.

The transition from Qt3/KDE3 to Qt4/KDE4 was influenced by two major factors. Qt4 API (Application Programming Interface) changes made it necessary for much of KDE code to be ported to Qt4 and the license change added the possibility of KDE code to be ported to other systems at the same time. The Qt4 license for the first time allowed free software to be written using Qt for all major operating systems (Microsoft Windows, Linux/Unix and Macintosh computers) and KDE developers decided to take this opportunity to re-architect and rewrite portions of the KDE code base as they were porting it to Qt4 to make it run on other systems.

KDE4 had to be abstracted from the underlying operating systems for it to be ported to other operating systems and allow KDE developers and third party developers who are building KDE applications to work with the same code base. In essence, KDE developers wanted to build a virtual desktop and all hooks to the underlying operating system had to be abstracted and this lead to three KDE4 core technologies named Plasma, Phonon and Solid.


Each operating system has its own way of providing hardware functionality to applications that needthem. Solid hides these details and gives a consistent, Qt/KDE API and functionality of these hardware devices to KDE desktop developers and users. Solid allows both KDE users and developers to interact with their hardware in KDE across different operating systems in a consistent and predictable way.


Each operating system has its own way of handling media. Microsoft Windows has DirectX, Macintosh computers use Quick Time and the Linux/UNIX world has xine, mplayer, gstreamer, vlc among other multimedia backends. Phonon is primarily aimed for developers and its aim is to hide complexities and details of specific multimedia back ends and provide a clean and consistent API that fits very well with the rest of Qt/KDE API. Phonon will allow developers to build their media application using one API and run their application on multiple operating systems and backends. Critics of Phonon have said it will not be very flexible because it will support features that exist in all backends, and hence will aim for the lowest common denominator. Phonon is a simple system that is aimed to do simple media playback and is suitable to 90% of people's needs. It is not designed to handle complex tasks like video editing or audio mixing. Expecting it to do that is not understanding why it was created.


Plasma is the KDE4 desktop shell. Plasma is the most visible core technology of KDE4 and it has received most of the KDE4 criticism. The KDE3 desktop is made up of Kdesktop shell, kicker (KDE3 panel) and superkaramba (KDE3 applets). These components are heavily dependent on the X11 windowing system because KDE was only released on the X11 based system and most of this code had to be removed to allow KDE4 desktop components to run on other systems.

One of the biggest criticisms from "traditional" desktop users is plasma's "futuristic" desktop ambitions. A "traditional" desktop is a desktop that is found in KDE3 and Windows XP/2000. This desktop is made up of the desktop area and the panel. On the Microsoft Windows Operating system, the panel contains (from left to right) start button, quick launcher area, taskbar, tray area and the clock. The desktop area reflects contents of a given folder in a users home directory. The KDE4 desktop can be made to look like the KDE3 desktop by having a panel containment with the following plasmoids: (from left to right) kickoff plasmoid, pager plasmoid, taskbar plasmoids, tray plasmoid and clock plasmoid. The default desktop activity will also have to be set to "folder view" activity instead of the default "desktop" activity.

Plasma is made up of applets called plasmoids. Certain plasmoids are specialized to containment and activities. Containment are applets that can hold "regular" applets and activities are applets that can hold both containment and regular applets and can have a background image as a wallpaper. KDE4.2 will ship with desktop and folderview activities. Folderview activity, when configured to reflect all contents of ~/Desktop, will give a static and traditional KDE3 desktop area. A default KDE4 desktop uses a "Desktop" activity which allows for a dynamic desktop through various applets functionality that can be hosted on the desktop. Different activities can be "opened" at the same time and each can have a unique set of applets running in them.

The best comparison to plasma activities is virtual desktops. Opened windows can be set to appear on different virtual desktops in KDE3 or within the same activity in KDE4, different applets can be set to appear on different activities but they show up on all virtual desktops within that activity. Applets exist within activities and opened windows exist within virtual desktops and virtual desktops exist within activities. Basically, virtual desktops can be used to separate opened windows to different "workspaces" (in both KDE3 and KDE4) and activities can be used to separate running applets to different "activities" (KDE4 only).

The "futuristic" KDE4 desktop comes from how a user can arrange and interact with these plasmoids on the desktop. Plasma has flexibility built into it that will allow "traditional" people to have their desktop and "futurisitic" to have theirs. KDE4 is still young. Some KDE3 features will be re-added, some will be moved around and some will be dropped as KDE developers continue to refine and polish KDE4. The KDE4 foundation will increase choices to KDE users and will make it possible for developers to take KDE to places it has never been before.