ci: Fix documentation build for `pages` job
[dconf.git] / HACKING
blobd071e035ebaa8824d6901efb47f1f014dea45e04
1 dconf is split into a large number of small modules.  This is required
2 because of the client/server architecture as well as the wide variety of
3 situations that dconf is used in on the client side.
5 gvdb/:
7   This code implements the GVDB file format used for the on-disk
8   database.  GVDB is shared with a number of other users and lives in a
9   separate 'gvdb' module on git.gnome.org.
11   Changes should never be made to this directory.  Instead, they should
12   be made against the 'gvdb' module and merged using git.
14   The code is split into a reader and a writer (builder).
16   This directory produces two libraries: libgvdb.a and libgvdb-shared.a.
17   They are exactly the same, except that libgvdb-shared.a was compiled
18   with -fPIC.
20 common/:
22   Sources in this directory are used in both the dconf-service and
23   client-side library implementations.
25   This directory produces two libraries: libdconf-common.a and
26   libdconf-common-shared.a.  They are exactly the same, except that
27   libdconf-common-shared.a was compiled with -fPIC.
29 engine/:
31   This directory contains most of the core logic for implementing the
32   client-side of dconf.
34   The engine code requires (but does not contain) glue code for speaking
35   to D-Bus.  All users of the engine must therefore include a module
36   that implements this glue.
38   The engine also requires gvdb.
40   This directory produces libdconf-engine.a and its -shared variant.
42 gdbus/:
44   This directory contains the glue code for dconf over GDBus.
46   There are two implementations of this code: a threaded approach and an
47   approach based on GDBus filter functions.  The threaded one is in use
48   by default, but both are built for testing purposes.
50   This directory produces a library for each backend:
51   libdconf-gdbus-thread.a and libdconf-gdbus-filter.a, plus their
52   -shared variants.
54 client/:
56   This is the standard GObject client-side library used for direct access to
57   dconf.  It uses the GDBus glue from the gdbus/ directory above.
59   This directory produces the libdconf.so shared library as well as
60   libdconf-client.a which is used for testing.
62 gsettings/:
64   This is the GSettings backend for dconf.  It also uses GDBus.
66   This directory produces the libdconfsettings.so GIOModule.
68 dbus-1/:
70   This directory contains a client-side library based on libdbus-1.  It
71   also contains the D-Bus glue code for libdbus-1 (since it is the only
72   client-side library that is using it).
74   This directory produces the libdconf-dbus-1.so shared library.
76   It also produces libdconf-libdbus-1.a (containing the D-Bus glue) for
77   testing purposes, and its -shared variant.
79 bin/:
81   This is the 'dconf' commandline tool.  It uses the library from
82   client/ above.
84 editor/:
86   This is the graphical dconf-editor.  It also uses the client/ library.
88 service/:
90   This is the dconf-service required for any client side library to do
91   writes.