Decibel is a real-time communication framework. It enables software engineers to easily integrate communication into their applications.
Possible use cases
.. inside KDE:
- Kopete Instant Messaging client.
- Plasmoid for Presence-Information
- Marble: Plugin for viewing Presence-Information
- collaborative Editing using Telepathy-Tubes. Decibel is the central place to
start up applications for incoming channels
- starting/controlling IM from other apps such as addressbook etc.
Decibel: Unified Communication Interface
Decibel is implemented in a desktop wide server process, offering services via DBus. This daemon process is desktop agnostic and uses desktop dependent components (e.g. GUIs) to integrate into the users preferred desktop environment. Components are configured to be started in response to communication events. This saves resources and allows for users work with those components that work best for them.
Decibel uses telepathy compatible protocol implementations to connect to realtime communication servers. By using this open source standard, Decibel supports a wide range of communication protocols.
Decibel software stack
The Decibel software stack
The Decibel daemon offers the following services:
- (Communication) account management The desktop user is able to manage all his communication accounts in Decibel, using a common interface for all settings on all supported communication protocols. Decibel will make sure, that configured accounts are brought online and offline as configured.
- Protocol configuration management Preferred telepathy connection managers can get configured in Decibel, eleminating the need for applications to store these settings.
- Contact management Decibel can get contact information from the desktops PIM database and use this information to connect to any contact. It stores and updates presence information on contacts in the PIM database.
- Component management Decibel will start up desktop specific components in response to communication events like new communication channels opening as configured by the user.
These services dramatically reduce the complexity and effort required to integrate realtime communication into applications, enableing even "normal" desktop applications to offer realtime communication based services to their users. We hope that this ease of use will make application developers think about new uses of these communication methods, enableing users to interact with each other within the application they are currently working in.
Integration into Desktop environments
The Decibel daemon stores communication account data for the user and must have access to the user's PIM database to look up contact data. These integration points are desktop specific and currently implemented as compile time configuration options. All other integration into the desktop environment is done by components which are selected and started by the Decibel daemon as required using DBus activation.
The Decibel sources contain an example implementation of these integration points, using an INI-style text file for data storage. Integration into the KDE and Gnome desktop and other targets like embedded plattforms, Microsoft Windows or Mac OS X are possible.
Components are used to decouple the Decibel daemon from the desktop environment used. They are started to handle a single communication channel between users. Which component is started depends on the configuration of the Decibel daemon: Based on communication type (text chat, audio/video stream, etc.), protocol used or even contact trying to communicate users may configure their preferred component to handle any incoming or outgoing communication request.
This concept offers a great flexibility: User can eg. forward audio streams to a answerphone, send a note in reply to any communication request from one special contact and have all other text-based communication attempts pop up a chat window.
These component preferences are stored in profiles. Decibel makes it easy to switch between these profiles, allowing external applications to do that. This makes it possible to have eg. a cronjob switch between settings for "office hours" and "out of office hours".
mailing list: firstname.lastname@example.org
IRC: #decibel on freenode.net