Version 0.1.4.
[guestfs-browser.git] / HACKING
diff --git a/HACKING b/HACKING
index 7a139bc..7cd3f2d 100644 (file)
--- a/HACKING
+++ b/HACKING
@@ -1,5 +1,5 @@
-This document describes the software architecture of the Guestfs
-Browser, useful if you want to hack on it.
+This document describes the software architecture of the
+guestfs-browser, useful if you want to hack on it.
 
 About OCaml
 -----------
@@ -7,6 +7,7 @@ About OCaml
 First of all about OCaml: Read the tutorial and other resources
 available from this site:
 
+  http://caml.inria.fr/
   http://ocaml-tutorial.org/
 
 If you are using emacs, install tuareg-mode instead of using the
@@ -22,12 +23,15 @@ In OCaml, a module such as 'Slave' is defined by its interface in
 'slave.mli' (note lowercase first letter), and its implementation
 in 'slave.ml'.
 
+In general terms, always start by reading the .mli file (if it exists)
+in order to understand the module and before opening the .ml file.
+
 Threads and messages
 --------------------
 
 Because libvirt and libguestfs API calls are usually long-running, we
 have to use threads, making these API calls in one thread, while
-another thread keeps the display updated.  In Guestfs Browser we use
+another thread keeps the display updated.  In guestfs-browser we use
 two threads, and send messages between them.  The main thread keeps
 the display updated and runs the glib main loop.  The slave thread
 issues libvirt and libguestfs API calls serially.  There is a FIFO
@@ -48,9 +52,9 @@ safe, and in any case we don't want the main thread to block because
 it performs some long-running operation by accident).
 
 The slave thread is defined in the Slave module (interface:
-'slave.mli') and all slave_* files.  The Slave module also defines
-what commands are possible.  Every other module and file is part of
-the main thread except for a few utility / library modules.
+'slave.mli') and the slave.ml implementation.  The Slave module also
+defines what commands are possible.  Every other module and file is
+part of the main thread except for a few utility modules.
 
 The main thread starts in the module Main.