diff --git a/build/index.rst b/build/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..d54a2748dce8ae68e290c3e7f0c377bb66c802af
--- /dev/null
+++ b/build/index.rst
@@ -0,0 +1,19 @@
+############
+Build manual
+############
+
+The Jami build manual documents the various aspects of building Jami
+from source, as well as packaging Jami for various package systems.
+This manual is aimed at those looking to build Jami from source -- for
+instance to hack on Jami and contribute to its development, or to try
+recently-added unreleased features -- as well as package maintainers
+and contributors to GNU/Linux distributions looking to package or help
+maintain a Jami package for their distribution's repositories.
+
+.. toctree::
+   :maxdepth: 1
+
+   introduction
+   dependencies
+   building
+   packaging
diff --git a/build/introduction.rst b/build/introduction.rst
new file mode 100644
index 0000000000000000000000000000000000000000..78cf92626fd32ba33669ba8905870a670d14ee33
--- /dev/null
+++ b/build/introduction.rst
@@ -0,0 +1,48 @@
+Introduction
+============
+
+An installation of Jami typically has two main components:
+
+1. the Jami daemon/library, and
+2. the client (i.e. front-end or user interface).
+
+To use Jami, the Jami daemon/library is always needed, since it is
+the core of Jami and contains all of the connectivity, communication,
+cryptography, and media logic.  It uses libraries such as OpenDHT,
+PJSIP, GnuTLS, and FFmpeg, and has several APIs including DBus,
+libwrap (shared library), JNI, and REST.  These APIs make it possible
+to interact with Jami without going through a graphical user interface
+(especially useful for using Jami in a headless/server setting), build
+automation tools/scripts around Jami, and build custom user interfaces
+for Jami.
+
+The client (i.e. user interface) may vary depending on the operating
+system and/or platform being used.  For example, on Android/Replicant
+systems this would be jami-client-android, and on GNU/Linux, Windows,
+and macOS this would be the jami-client-qt.  There also used to be a
+GTK-based jami-client-gnome for GNU/Linux and a jami-client-macos for
+macOS, both of which were deprecated in favour of the newer
+cross-platform jami-client-qt based on the Qt framework.
+
+On GNU/Linux systems, jami-client-qt can be configured and built to
+use one of two main APIs for communicating with the Jami
+daemon/library:
+
+1. libwrap: when jami-client-qt is configured to use libwrap (which is
+   always the case on macOS and Windows), it will use Jami daemon's
+   shared library API, and there will be no separate daemon process.
+   This has the advantage of things being somewhat more efficient than
+   with the DBus API mentioned below, in exchange for less flexibility
+   (not being able to interact with Jami via DBus when using libwrap).
+
+   The Jami packages distributed via dl.jami.net are currently all
+   configured to use the libwrap API.
+
+2. DBus: when jami-client-qt is configured to use DBus, it will
+   communicate with the Jami daemon via its DBus API, and the daemon
+   will be running as a separate process by itself.  This is greatly
+   flexible for communicating with and controlling the daemon through
+   other means (for example small utility scripts) simultaneously
+   while the Jami Qt client also uses and interacts with it.
+   The associated cost of this added flexibility is the overhead of
+   using DBus.
diff --git a/index.rst b/index.rst
index 5bda01b6b856a1aa6e5942a0bf78d43f57d9daa5..aabc84b5576011f7289bb17d4f03775716db6c9b 100644
--- a/index.rst
+++ b/index.rst
@@ -22,4 +22,5 @@ This documentation is community-driven and :ref:`anyone can contribute
    :maxdepth: 2
 
    user/index
+   build/index
    technical/index