2006-07-16 Havoc Pennington <hp@redhat.com>
[platform/upstream/dbus.git] / README
1 D-BUS is a simple IPC library based on messages.
2
3 See also the file HACKING for notes of interest to developers working on D-BUS.
4
5 See http://www.freedesktop.org/software/dbus/ for lots of documentation, 
6 mailing lists, etc.
7
8 Note
9 ===
10
11 A core concept of the D-BUS implementation is that "libdbus" is
12 intended to be a low-level API, similar to Xlib. Most programmers are
13 intended to use the bindings to GLib, Qt, Python, Mono, Java, or
14 whatever. These bindings have varying levels of completeness.
15
16 Configuration flags
17 ===
18
19 These are the dbus-specific configuration flags that can be given to
20 the ./configure program.
21
22   --enable-qt             enable Qt-friendly client library (note: Qt4)
23   --enable-qt-debug       enable Qt-friendly client library, linked to debug
24                           Qt libraries
25   --enable-qt3            enable Qt3-friendly client library
26   --enable-glib           enable GLib-friendly client library
27   --enable-gtk            enable GTK-requiring executables
28   --enable-tests          enable unit test code
29   --enable-ansi           enable -ansi -pedantic gcc flags
30   --enable-verbose-mode   support verbose debug mode
31   --enable-asserts        include assertion checks
32   --enable-checks         include sanity checks on public API
33   --enable-xml-docs       build XML documentation (requires xmlto)
34   --enable-doxygen-docs   build DOXYGEN documentation (requires Doxygen)
35   --enable-gcov           compile with coverage profiling instrumentation (gcc only)
36   --enable-abstract-sockets
37                           use abstract socket namespace (linux only)
38   --enable-gcj            build gcj bindings
39   --enable-mono           build mono bindings
40   --enable-mono-docs      build mono docs
41   --enable-python         build python bindings
42   --enable-selinux        build with SELinux support
43   --enable-dnotify        build with dnotify support (linux only)
44
45   --with-qt-moc=<path>              moc for Qt
46   --with-qt3-moc=<path>             moc for Qt3
47   --with-xml=libxml/expat           XML library to use
48   --with-init-scripts=redhat        Style of init scripts to install
49   --with-session-socket-dir=dirname Where to put sockets for the per-login-session message bus
50   --with-test-socket-dir=dirname    Where to put sockets for make check
51   --with-system-pid-file=pidfile    PID file for systemwide daemon
52   --with-system-socket=filename     UNIX domain socket for systemwide daemon
53   --with-console-auth-dir=dirname   directory to check for console ownerhip
54   --with-dbus-user=<user>           User for running the DBUS daemon (messagebus)
55   --with-gnu-ld                     assume the C compiler uses GNU ld [default=no]
56   --with-tags[=TAGS]                include additional configurations [automatic]
57   --with-x                          use the X Window System
58
59
60 API/ABI Policy
61 ===
62
63 D-BUS API/ABI and protocol necessarily remain in flux until we are
64 sure it will meet the various needs it's intended to meet. This means
65 we need to see some significant sample usage in the contexts of GNOME,
66 KDE, desktop applications, and systemwide uses such as print queue
67 monitoring, hotplug events, or whatever. We need the flexibility to
68 incorporate feedback from this sample usage.
69
70 Once we feel confident in the protocol and the API, we will release a 
71 version 1.0. At that point, the intent is:
72
73  - The protocol will never be broken again; any message bus should 
74    work with any client forever. However, extensions are possible
75    where the protocol is extensible.
76
77  - If the library API is modified incompatibly, we will rename it 
78    as in http://ometer.com/parallel.html - in other words, 
79    it will always be possible to compile against and use the older 
80    API, and apps will always get the API they expect.
81
82 Until 1.0 is released, feedback that requires API changes may be
83 incorporated into D-BUS. This may break the API, the ABI, the
84 protocol, or all three.
85
86 To avoid a huge soname, the plan is to increment the soname only
87 between official stable releases, not with every development snapshot.
88 Versions numbered 0.x are considered development snapshots.
89
90 Until 1.0 is released, you have to define -DDBUS_API_SUBJECT_TO_CHANGE
91 just as a safety check to be sure everyone is aware of this API/ABI
92 policy and has the right expectations.
93
94 We do need people to test the APIs, so please do use the development
95 snapshots of D-BUS. They are intended to work and we do actively
96 address bugs.
97
98 However, if you're shipping a commercial binary-only application that
99 needs to keep running on M future versions of N operating systems, you
100 might want to include your own copy of D-BUS rather than relying on
101 the installed copy, for example.