Copyright (C) 2010 Patrick Wieland.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU Free Documentation License".
This document is available online as HTML website
and as PDF file.
Table of contents
What is ND-Bus?
The name ND-Bus stands for Network-enabled Desktop Bus. ND-Bus is an inter-process communication system which can be used by applications on a single computer and/or within a network to exchange any kind of data, send messages and make remote function calls. Although many kinds of applications may use ND-Bus, it is mainly intended to connect applications with graphical user interfaces on desktop computers and mobile devices like laptops and smartphones. ND-Bus is currently only being developed by a single person but hopefully an international ND-Bus Community will soon emerge to realize ND-Bus. The community defines the ND-Bus Specification which can be used by everyone who wants to make her own implementations. Furthermore a reference implementation which supports many popular platforms is under development. ND-Bus wants to become the replacement for D-Bus which is the defacto standard message bus system for GNU/Linux now, but has no appropriate networking support by design. The overall design of ND-Bus is not only heavily inspired by D-Bus but also includes legacy support for the current D-Bus protocol. This is first of all because D-Bus is really good but also to simplify the migration from D-Bus to ND-Bus.
ND-Bus is free software
The ND-Bus Specification is open and freely available for everyone. There are no patent restrictions. All documentation is published under the terms of the GNU Free Documentation License. All sources are published under the terms of the GNU General Public License.
Features
The list of features is only a first draft. Nothing of this has been realized yet.
-
Replacement for D-Bus, but with network support by design
-
Legacy support for D-Bus
-
Make things like Telepathy less painful for developers
-
Transparent signals and slots mechanism across applications on one computer and on a network
-
Ability for file transport
-
Strong encryption between different machines
-
Authentication using certificates
-
Optional end-to-end-encryption between applications
-
Automatic service discovery
-
Service introspection
-
Fine grained access rights
-
Reference implementation running at least on GNU/Linux, Windows and MacOS
-
Later support for other platforms like: FreeBSD, MeeGo, Android, iPhone and Windows phones
Requirements
The following list states the requirements for running the current reference implementation.
-
Platform supported by Qt (see list here), currently only tested on GNU/Linux and Windows
-
Installed Qt libraries of version 4.6 or greater
General requirements for fully implementing the current ND-Bus Specification on an arbitrary platform:
Development status
Development of ND-Bus has just been started and is currently in the architecture design phase. No code has been released yet.
FAQ
-
Q: Why does ND-Bus beside of running on GNU also aim to run on proprietary platforms like Windows and MacOS instead of concentrating all afforts on supporting only free software?
-
A: Firstly ND-Bus is about connecting applications and thus about connecting users. ND-Bus wants to build a bridge between the users of GNU who are free and the people that want to use or for some reasons are forced to use proprietary systems and are thus not free. Secondly if applications on free and proprietary systems are able to talk to each other easily, the barrier to replace existing proprietary systems with free systems is lowered. I think more free software should also run on e.g. Windows as the average user doesn't care what operating system she is using as long as it runs all her applications. If all your applications run on all major platforms you are free to decide if you want to use a free or proprietary platform.
-
Q: Why do you start from scratch instead of extending the current D-Bus implementation?
-
A: D-Bus is optimized for operating on a single machine. Extending the design to support network transparency would break the implementation in multiple places and there would be a need to introduce incompatible changes to the protocol. The maintainers of D-Bus do not wish to support true network ability anyway and especially don't want to break compatibility. Furthermore D-Bus uses a binary protocol that is platform dependent and thus a problem in mixed environments. The last important point is that D-Bus is written in C and is thus hard to maintain, hard to modularize, error prone and in some ways platform dependent. ND-Bus tries to face these problems by making use of the multiplatform toolkit Qt. Not only does this allow to write ND-Bus in C++, it also abstracts all platform details, resp. operating system details, and so makes it possible to write one source that compiles with no changes on all major platforms, not only Unix-like systems (as D-Bus does) but also on Windows, MacOS and some smartphones. Using Qt makes the development much easier and the produced code becomes stable much faster. Also it is far easier to integrate encryption, network ability and things like regular expressions and state machines. Last but not least: As writing good code with Qt is much easier than with plain C more people with even lower programming skills can actively participate in the development process.
-
Q: Don't you think relying on Qt is a drawback? Gnome is based on GTK+ and not on Qt!
-
A: I don't like GTK+ and I think Qt is the only serious C++ toolkit available under the GPL today. Qt is the base for KDE, it is the base for MeeGo's GUI and it is used in more and more mobile devices like touchpads, smartphones and soon TVs and car entertainmaint computers. And it runs on Windows and MacOs. If you use Gnome then you'll have to install only a few additional libraries to be able to run Qt based applications.
-
Q: But doesn't this mean, that GTK+ applications won't be able to connect to ND-Bus?
-
A: No! The core of ND-Bus, the daemon process, will be written in Qt/C++. Applications that want to connect to this daemon can be written in any language and with any toolkit. Of course it will be easier to write applications that connect to ND-Bus when appropriate libraries are available for that language/toolkit. But those 'client' libraries have to be developed for all langauges, even for Qt.
-
Q: Telepathy does already everything one can want.
-
A: Parts of Telepathy do only exist, because of the missing features in D-Bus. In some places Telepathy abuses D-Bus for things D-Bus was not designed for.
-
Q: You're stupid and wasting your time!
-
A: We'll see.
Mailing list
All ND-Bus discussion is currently on nd-bus-interest@lists.sourceforge.net
Twitter
You can receive news and contact the community on Twitter
Bugs, patches, feature & support requests
Please use our tracking system: SorgeForge.net trackers
Developer guidelines
The developer guidelines shall help to keep the community afforts consistent. It is a work in progress, see the current document here: Developer guidelines
Source code
All sources are being managed with Git.