about summary refs log tree commit diff
path: root/doc/manual/introduction.xml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/manual/introduction.xml')
-rw-r--r--doc/manual/introduction.xml98
1 files changed, 98 insertions, 0 deletions
diff --git a/doc/manual/introduction.xml b/doc/manual/introduction.xml
new file mode 100644
index 000000000000..77a5f917ee71
--- /dev/null
+++ b/doc/manual/introduction.xml
@@ -0,0 +1,98 @@
+<chapter>
+  <title>Introduction</title>
+
+  <sect1>
+    <title>The problem space</title>
+
+    <para>
+      Nix is a system for controlling the automatic creation and distribution
+      of data, such as computer programs and other software artifacts.  This is
+      a very general problem, and there are many applications that fall under
+      this description.
+    </para>
+
+    <sect2>
+      <title>Build management</title>
+
+      <para>
+	  Build management tools are used to perform <emphasis>software
+	  builds</emphasis>, that is, the construction of derived products such
+	as executable programs from source code.  A commonly used build tool is
+	Make, which is a standard tool on Unix systems. These tools have to
+	deal with several issues:
+	  <itemizedlist>
+	  <listitem>
+	    <para>
+	    </para>
+	  </listitem>
+	  </itemizedlist>
+      </para>
+
+    </sect2>
+
+    <sect2>
+      <title>Package management</title>
+
+      <para>
+	  After software has been built, is must also be
+	<emphasis>deployed</emphasis> in the intended target environment, e.g.,
+	the user's workstation.  Examples include the Red Hat package manager
+	(RPM), Microsoft's MSI, and so on.  Here also we have to deal with
+	several issues:
+	  <itemizedlist>
+	  <listitem>
+	    <para>
+	      The <emphasis>creation</emphasis> of packages from some formal
+	      description of what artifacts should be distributed in the
+	      package.
+	    </para>
+	  </listitem>
+	  <listitem>
+	    <para>
+	      The <emphasis>deployment</emphasis> of packages, that is, the
+	      mechanism by which we get them onto the intended target
+	      environment.  This can be as simple as copying a file, but
+	      complexity comes from the wide range of possible installation
+	      media (such as a network install), and the scalability of the
+	      process (if a program must be installed on a thousand systems, we
+	      do not want to visit each system and perform some manual steps to
+	      install the program on that system; that is, the complexity for
+	      the system administrator should be constant, not linear).
+	    </para>
+	  </listitem>
+	  </itemizedlist>
+      </para>
+    </sect2>
+
+  </sect1>
+
+  <sect1>
+    <title>The Nix system</title>
+
+    <para>
+      ...
+    </para>
+
+    <para>
+      Existing tools in this field generally both a underlying model (such as
+      the derivation graph of build tools, or the versioning scheme that
+      determines when two packages are <quote>compatible</quote> in a package
+      management system) and a formalism that allows ...
+    </para>
+
+    <para>
+      Following the principle of separation of mechanism and policy, the Nix
+      system separates the <emphasis>low-level aspect</emphasis> of file system
+      object management form the <emphasis>high-level aspect</emphasis> of the
+      ...
+    </para>
+
+  </sect1>
+
+</chapter>
+
+<!--
+local variables:
+sgml-parent-document: ("book.xml" "chapter")
+end:
+-->