The design of Telepathy, and its approach to real-time communications
comes from a very specific rationale:
-
Robustness:
one component can crash without crashing others.
-
Ease of development:
components can be replaced within a running system; tools like
dbus-inspector can trace interactions between components.
-
Language independence:
components can be written in any language that has a D-Bus binding;
if the best free and open implementation of a given communications
protocol is in a certain language, you are able to write your
Connection Manager in that language and still have it available to
all Telepathy clients.
-
Desktop independence:
D-Bus has been adopted by both GNOME and KDE. Multiple user
interfaces can be developed on top of the same Telepathy components.
-
License independence:
Components can be under different licenses that would be incompatible
if all components were running in one process.
-
Code reuse:
Telepathy allows clients to ignore protocol details as much as
possible, easing transitions between different communications
systems.
-
Connection reuse:
Multiple Telepathy clients can use the same connection simultaneously.
-
Security:
Components can run with very limited privileges; a typical connection
manager only needs access to the network and to the D-Bus session bus
(e.g. making it possible to use an SELinux policy to prevent protocol
code from accessing the disk).