Phonons in Solids - Internals and Usage Explained

KDE 4 will reuse well known frameworks coming from previous versions, but it'll also
introduce brand new technologies like Phonon and Solid. We decided to present
them together since a few interesting similarities and interactions have been
identified between them.

The talk will be structured in three parts described below. It aims at
explaining to developers Phonon and Solid internals, how they can develop
similar systems, but also how they can use both of them for their needs.

1. Frontend/Backend Architecture

Phonon and Solid both make use of a frontend/backend architecture to bring a
rich high level API to KDE developers while at the same time reusing existing
projects to implement the functionality. Since KDE 4 raises the bar regarding
portability and binary compatibility, a loose coupling with the underlying
system is required for such low level frameworks. It led us to develop new
architecture patterns to address those concerns.

In the first part of the talk we will explain the architectures used in Solid
and Phonon. It is interesting to see two different approaches to the problem. We
will explain the approaches and compare the pros and cons. We'll particularly
emphasize on how those architectures have an impact on testability and release
management.

2. Solid

During aKademy '05, the basics of what is currently named Solid were written.
It was of course far from being featureful. Since then it evolved a lot, and
discussions with the HAL crew during last year Gnome Boston Summit paved the way
to the current architecture. In a few months, many features were added and a few
backends have been implemented.

During this part of the talk we'll give an overview of the features covered by
the Solid library. We'll also show how it can be used by application developers
for hardware discovery and power management - network management would require a
talk by itself. Finally, we'll give a broader picture on how the library and a
few policy applications will enable the user to interact with his hardware in an
efficient way.

3. Phonon

At aKademy '05 a KDEMM version was presented that was able to play back audio
(and 30 minutes after the talk also video). Since then the name has changed,
many features have been added and backend implementations have been started.
Also the internals have been reworked a few times (the result is presented in
the first part of the talk).

This part of the talk will give an as complete as possible overview on the usage
of the Phonon API. Having learned about the architecture before, a short look at
backends will give you the complete picture on Phonon.

There are challenges that go beyond audio and video playback. We'll give special
attention to the listing of audio and video devices which is a cooperation of
Solid and Phonon.

Matthias Kretz

Matthias Kretz has been an active KDE developer since 2000. To get started with
KDE development he worked in the KDE graphics module as the maintainer of KView
as well as contributing to KDE core components from time to time. In the last
few years he has shifted his focus towards aRts and KDE multimedia and is one of
the chief architects of the upcoming KDE 4 multimedia framework. He has just
finished his fourth year as a physics and computer science student at the
University of Heidelberg.

Kevin Ottens

Kevin Ottens has been involved in the KDE project for a few years. He started
with hardware interaction and kept improving the situation in this area since
then. He also brought a few Konqueror improvements and contributes regularly
to kdelibs. PhD student in computer science by day, and KDE developer by night,
he tries to keep is sanity while driving the Solid effort.