summaryrefslogtreecommitdiff
path: root/HACKING
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2012-07-01 18:46:23 -0400
committerRyan Lortie <desrt@desrt.ca>2012-07-01 18:53:04 -0400
commit6a675a5bdef5949e2397b0d5ca9d0c8a36ccedfd (patch)
treebe2bf473587f9c0c353ec97d220b04a12593fd58 /HACKING
parent3e99260504a4544872a1db15ff52b791c8e04905 (diff)
downloaddconf-6a675a5bdef5949e2397b0d5ca9d0c8a36ccedfd.tar.gz
Add a HACKING
Diffstat (limited to 'HACKING')
-rw-r--r--HACKING80
1 files changed, 80 insertions, 0 deletions
diff --git a/HACKING b/HACKING
new file mode 100644
index 0000000..64a6984
--- /dev/null
+++ b/HACKING
@@ -0,0 +1,80 @@
+dconf is split into a large number of small modules. This is required
+because of the client/server architecture as well as the wide variety of
+situations that dconf is used in on the client side.
+
+gvdb/:
+
+ This code implements the GVDB file format used for the on-disk
+ database. GVDB is shared with a number of other users and lives in a
+ separate 'gvdb' module on git.gnome.org.
+
+ Changes should never be made to this directory. Instead, they should
+ be made against the 'gvdb' module and merged using git.
+
+ The code is split into a reader and a writer (builder).
+
+ This directory doesn't produce any libraries. The source files are
+ included into other libraries and executables by direct inclusion of
+ these source files into the Makefiles of other directories.
+
+common/:
+
+ Sources in this directory are used in both the dconf-service and
+ client-side library implementations.
+
+ This directory produces two libraries: libdconf-common.a and
+ libdconf-common-shared.a. They are exactly the same, except that
+ libdconf-common-shared.a was compiled with -fPIC.
+
+engine/:
+
+ This directory contains most of the core logic for implementing the
+ client-side of dconf.
+
+ The engine code requires (but does not contain) glue code for speaking
+ to D-Bus. All users of the engine must therefore include a module
+ that implements this glue.
+
+ This directory produces one library: libdconf-engine.a. This library
+ includes the gvdb-reader.
+
+gdbus/:
+
+ This directory contains the glue code for dconf over GDBus.
+
+ This directory produces one library: libdconf-gdbus.a.
+
+client/:
+
+ This is the standard GObject client-side library used for direct access to
+ dconf. It uses the GDBus glue from the gdbus/ directory above.
+
+ This directory produces the libdconf.so shared library.
+
+gsettings/:
+
+ This is the GSettings backend for dconf. It also uses GDBus.
+
+ This directory produces the libdconfsettings.so GIOModule.
+
+dbus-1/:
+
+ This directory contains a client-side library based on libdbus-1. It
+ also contains the D-Bus glue code for libdbus-1 (since it is the only
+ client-side library that is using it).
+
+ This directory produces the libdconf-dbus-1.so shared library.
+
+bin/:
+
+ This is the 'dconf' commandline tool. It uses the library from
+ client/ above.
+
+editor/:
+
+ This is the graphical dconf-editor. It also uses the client/ library.
+
+service/:
+
+ This is the dconf-service required for any client side library to do
+ writes.