http://www.freedesktop.org/wiki/Software/dbusWhat is D-Bus?D-Bus is a message bus system, a simple way for applications to talk to one another. In addition to interprocess communication, D-Bus helps coordinate process lifecycle; it makes it simple and reliable to code a "single instance" application or daemon, and to launch applications and daemons on demand when their services are needed. D-Bus supplies both a system daemon (for events such as "new hardware device added" or "printer queue changed") and a per-user-login-session daemon (for general IPC needs among user applications). Also, the message bus is built on top of a general one-to-one message passing framework, which can be used by any two apps to communicate directly (without going through the message bus daemon). Currently the communicating applications are on one computer, or through unencrypted TCP/IP suitable for use behind a firewall with shared NFS home directories. (Help wanted with better remote transports - the transport mechanism is well-abstracted and extensible.) The D-Bus low-level API reference implementation and protocol have been heavily tested in the real world over several years, and are now "set in stone." Future changes will either be compatible or versioned appropriately. The low-level libdbus reference implementation has no required dependencies; the bus daemon's only *required* dependency is an XML parser (either libxml or expat). Higher-level bindings specific to particular frameworks (Qt, GLib, Java, C#, Python, etc.) add more dependencies, but can make more assumptions and are thus much simpler to use. The bindings evolve separately from the low-level libdbus, so some are more mature and ABI-stable than others; check the docs for the binding you plan to use. There are also some reimplementations of the D-Bus protocol for languages such as C#, Java, and Ruby. These do not use the libdbus reference implementation. It should be noted that the low-level implementation is not primarily designed for application authors to use. Rather, it is a basis for binding authors and a reference for reimplementations. If you are able to do so it is recommended that you use one of the higher level bindings or implementations. A list of these can be found on the bindings page. The list of projects using D-Bus is growing and they provide a wealth of examples of using the various APIs to learn from. D-Bus is very portable to any Linux or UNIX flavor, and a port to Windows is in progress. If you have any trouble with D-Bus or suggestions for improvement, bug reports and comments are very welcome. Get on D-Bus today!DocumentationSome stuff from the doc/ subdirectory is prebuilt and browsable here. If you're new to D-Bus, the tutorial is probably the best place to start (even though it is very incomplete, the basics are covered). Generic D-Bus protocol information:
Please note that the D-Bus spec is incomplete, especially in its description of the message bus daemon. The spec for the protocol itself is reasonably complete, though not always clear or precise. Your patches are welcome! In the meantime, you may need to supplement your reading of the spec with a reading of the reference implementation source code. Docs specific to the reference implementation:
Keep in mind that libdbus is a low-level library, intended to be the backend for a language binding and with extra complexity needed to implement dbus-daemon. You will save yourself a lot of pain if you use a higher-level wrapper or a reimplementation. Documentation of these is usually linked from the bindings page. Articles from around the web, including some tutorials:
DownloadReference Implementation (dbus-daemon and libdbus)The dbus 1.2 stable branch has been split into two streams. The "1.2.4Xpermissive" branch originates from 1.2.4, and maintains the unintended permissive default for messages. Releases after 1.2.4 (1.2.6+) have a default deny. It is intended that the permissive branch only be used temporarily by vendors. For more information, see this mail. The current development version is based on the primary (not permissive) branch: it is expected that vendors will have fixed the problems created by the unintended defaults. The current primary release is D-Bus 1.2.16. (2009-07-14) The current permissive release is D-Bus 1.2.4.6permissive. (2009-05-06) The current development release is D-Bus 1.3.0 (2009-07-29) DBus 1.3.0This release is the current development version of D-Bus. It is in early development cycle and is intended for beta testers. D-Bus 1.3.0 contains new features when compared to 1.2.x that maturing. It is expected that there will be a few more 1.3 releases before this branch is considered stable and released as D-Bus 1.4.0. For a list of new features, please see the NEWS file in the package. Contributors to this release are: Artem Bityutskiy, Benjamin Reed, Brian Cameron, Christian Persch, Colin Walters, Daniel Reed, Dennis Kaarsemaker, Diego E. Pettenò, Eamon Walsh, Federico Mena Quintero, Grzegorz Dąbrowski, Hasso Tepper, James Carter, Jens Granseuer, Joe Marcus Clarke, Johan Gyllenspetz, Jon Gosting, Kimmo Hämäläinen, Kjartan Maraas, Kurt Miller, Lawrence R. Steeger, Lennart Poettering, Lionel Landwerlin, Marc Mutz, Matthias Clasen, Matt McCutchen, Michael Meeks, Paul Bolle, Peter Breitenlohner, Peter McCurdy, Scott James Remnant, Thiago Macieira, Tobias Mueller, Tomas Hoger, Tor Lillqvist, William Lachance, Will Thompson, Xan Lopez. DBus 1.2.16See the Release announcement. Permissive Stream, DBus 1.2.4.6permissiveContributors to this release: Federico Mena Quintero, Eamon Walsh, Colin Walters, Tomas Hoger, Marc Mutz, Xan Lopez, Johan Gyllenspetz. Changes in 1.2.4.6permissive:
Previous releases can be found in the release archive. Reference Implementation, Legacy Version (dbus-daemon and libdbus)The legacy 1.0.x branch is still supported but only for security fixes. Only use this version when upgrading from older stable releases. For all new development use the new stable releases. The latest legacy release is D-Bus 1.0.3. (2008-02-27)
|
