Migrate TODOs into documentation

Signed-off-by: martin f. krafft <madduck@madduck.net>
diff --git a/doc/source/ansible.rst b/doc/source/ansible.rst
index 3409ed8..b77a2c3 100644
--- a/doc/source/ansible.rst
+++ b/doc/source/ansible.rst
@@ -22,6 +22,11 @@
 
 /…/reclass refers to the location of your |reclass| checkout.
 
+.. todo::
+
+  With |reclass| now in Debian, as well as installable from source, the
+  following should be checked for path consistency…
+
 #. Complete the installation steps described in the :doc:`installation section
    <install>`.
 
diff --git a/doc/source/hacking.rst b/doc/source/hacking.rst
index e158c16..bb86f75 100644
--- a/doc/source/hacking.rst
+++ b/doc/source/hacking.rst
@@ -54,6 +54,9 @@
 cleaning up the code. If this is the sort of stuff you want to do — by all
 means — be my guest! ;)
 
+There are a number of items on the :doc:`to-do list <todo>`, so if you are
+bored…
+
 If you have larger ideas, I'll be looking forward to discuss them with you.
 
 .. include:: substs.inc
diff --git a/doc/source/index.rst b/doc/source/index.rst
index dd1f4ab..114064d 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -20,6 +20,7 @@
    ansible
    puppet
    hacking
+   todo
 
 Community
 ---------
diff --git a/doc/source/install.rst b/doc/source/install.rst
index e587dca..fefccf5 100644
--- a/doc/source/install.rst
+++ b/doc/source/install.rst
@@ -38,6 +38,13 @@
 
   $ python setup.py install --prefix=/opt/local
 
+.. todo::
+
+  These will install the ``reclass-salt`` and ``reclass-ansible`` adapters to
+  ``$prefix/bin``, but they should go to ``$prefix/share/reclass``. How can
+  setup.py be told to do so? It would be better for consistency if this was
+  done "upstream", rather than fixed by the distros.
+
 Just make sure that the destination is in the Python module search path, which
 you can check like this::
 
diff --git a/doc/source/puppet.rst b/doc/source/puppet.rst
index 9f92da4..869655f 100644
--- a/doc/source/puppet.rst
+++ b/doc/source/puppet.rst
@@ -1,12 +1,15 @@
 =========================
 Using reclass with Puppet
 =========================
-The adapter between |reclass| and `Puppet`_ has not actually been written,
-since I rage-quit using Puppet before the rewrite of |reclass|.
 
-It should be trivial to do, and if you need it or are interested in working on
-it, and you require assistance, please `get in touch with me
-<mailto:reclass@pobox.madduck.net>`_. Else just send the patch!
+.. todo::
+
+  The adapter between |reclass| and `Puppet`_ has not actually been written,
+  since I rage-quit using Puppet before the rewrite of |reclass|.
+
+  It should be trivial to do, and if you need it or are interested in working on
+  it, and you require assistance, please `get in touch with me
+  <mailto:reclass@pobox.madduck.net>`_. Else just send the patch!
 
 .. include:: extrefs.inc
 .. include:: substs.inc
diff --git a/doc/source/salt.rst b/doc/source/salt.rst
index ccf30bb..5a6dbd6 100644
--- a/doc/source/salt.rst
+++ b/doc/source/salt.rst
@@ -30,6 +30,11 @@
 
 /…/reclass refers to the location of your |reclass| checkout.
 
+.. todo::
+
+  With |reclass| now in Debian, as well as installable from source, the
+  following should be checked for path consistency…
+
 #. Complete the installation steps described in the :doc:`installation section
    <install>`.
 
diff --git a/doc/source/todo.rst b/doc/source/todo.rst
new file mode 100644
index 0000000..0cf0bf1
--- /dev/null
+++ b/doc/source/todo.rst
@@ -0,0 +1,52 @@
+==================
+reclass to-do list
+==================
+
+Testing framework
+-----------------
+There is rudimentary testing in place, but it's inconsistent. I got
+side-tracked into discussions about the philosphy of mocking objects. This
+could all be fixed and unified.
+
+Also, storage, outputters, CLI and adapters have absolutely no tests yet…
+
+Configurable file extension
+---------------------------
+Right now, ``.yml`` is hard-coded. This could be exported to the
+configuration file, or even given as a list, so that ``.yml`` and ``.yaml``
+can both be used.
+
+Verbosity, debugging
+--------------------
+Verbose output and debug logging would be a very useful addition to help
+people understand what's going on, where data are being changed/merged, and to
+help solve problems.
+
+Default classes
+---------------
+Through the configuration file, it should be possible to define a set of
+default classes that are applied to all nodes (before anything else).
+
+This would be covered by the next point:
+
+Wildcards, regexp→class mapping
+-------------------------------
+I envision the ability to define mappings between regexps and classes, e.g.::
+
+    /^www\d+/   →  webservers
+    /\.ch\./    →  hosted@switzerland
+
+These classes would be applied before a YAML file matching the actual hostname
+would be read and merged.
+
+Data from CMS for interpolation
+-------------------------------
+Depending on the CMS in question, it would be nice if |reclass| had access to
+the host-specific data (facts, grains, etc.) and could use those in parameter
+interpolation. I can imagine this working for Salt, where the ``grains``
+dictionary (and results from previous external node classifiers) is made
+available to the external node classifiers, but I am not convinced this will
+be possible in Ansible and Puppet.
+
+Ideally, |reclass| could unify the interface so that even templates can be
+shared between the various CMS.
diff --git a/doc/source/usage.rst b/doc/source/usage.rst
index c87114e..bcd5450 100644
--- a/doc/source/usage.rst
+++ b/doc/source/usage.rst
@@ -1,6 +1,11 @@
 =============
 Using reclass
 =============
+.. todo::
+
+  With |reclass| now in Debian, as well as installable from source, the
+  following should be checked for path consistency…
+
 For information on how to use |reclass| directly, call ``reclass --help``
 and study the output, or have a look at its :doc:`manual page <manpage>`.