=========================================
Notes on the IPython configuration system
=========================================

This document has some random notes on the configuration system.

To start, an IPython process needs:

* Configuration files
* Command line options
* Additional files (FURL files, extra scripts, etc.)

It feeds these things into the core logic of the process, and as output,
produces:

* Log files
* Security files

There are a number of things that complicate this:

* A process may need to be started on a different host that doesn't have
  any of the config files or additional files.  Those files need to be
  moved over and put in a staging area.  The process then needs to be told
  about them.
* The location of the output files should somehow be set by config files or
  command line options.
* Our config files are very hierarchical, but command line options are flat,
  making it difficult to relate command line options to config files.
* Some processes (like ipcluster and the daemons) have to manage the input and
  output files for multiple different subprocesses, each possibly on a
  different host.  Ahhhh!
* Our configurations are not singletons.  A given user will likely have
  many different configurations for different clusters.
