========================================= 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.