This document defines how to continue work on cdist:

x general stuff
   x Define configuration paths (doc/internal/config-layout)
   - check whether remote and local view of objects can be the same,
    i.e. local:/outdir == remote:/var/lib/cdist

x get information from target (stage 1)
   x Define how to get information from targets
      x Create shell script that creates code to run on client (cdist-build-explorer)
   x Redo explorers (see manpage)
x run initial manifest (stage 2)
   x Create configuration tree from manifest
      x write binaries, which create the tree when called from manifest (cdist_tree_wrapper)

x be able to run manifest of types (stage 3)
   x Parse configuration tree/objects recursively
      x can/may types modify tree?
         -> yes, of everything a type created itself!
         x may open door for getting information from manifest / other stuff
   x Cleanly define paths for object creation, especially recursive calls
      x doc/man/cdist-config-layout.text
   x cd $__object_dir, before running manifest
   x rename $__object_dir to $__object_base_dir
   x use $type/manifest instead of $type/init
   x find $object_id in recursive runner (before merge)
   - move attributes of object to subdir attributes
   - run explorers for every object

x generate code to be executed on clients (stage 4)
   x for one object
   x for all objects

x execute code on client (stage 5)

- Other stuff pre 1.0:
   - Write some basic types
      - file (with directory)
      - package
   - doc cleanup for 1.0:
      - ensure every file in bin/ has a correspondent manpage
      - cdist manpage (main manpage)
         - cleanup following man + their tree:
            - cdist-language        [CLEANUP AND REMOVE]
            - cdist-design.text     [CLEANUP AND REMOVE]
            - cdist-push-pull       [WRITE]
            - cdist-quickstart      [WRITE]
               - how to write a minimal host manifest
            - cdist-types           [IMPORTANT]
               - only do necessary work [TYPE IMPLEMENTATION HINTS]
                  - install packages only if not existent
                  - copy file only if different
            - cdist                 [IMPORTANT]
            - cdist-explorers
         - add terminology
         - define steps within configuration apply
            - detect impossible/unsafe things:
            - creating a file twice
            - installing and removing a package
            - and report location of occurence
            - parse afterwards?
         - multi master setups
         - templating
            - how to define templates
               - variable substitution from shell may be problematic
            - SHELL SCRIPTS! (executables? do not support?)
               - stdout == output of template == what will be used
      - cleanup website
      - remove HACKERS_README
      - create doc/dev/HACKERS_README
   - Add install target to Makefile
   - create cdist-config-init to create basic tree
   - cdist-type integration!
   - DOC document "cd $__object_dir, before running manifest" in doc/man/cdist-types.text
   - DOC document that $type/manifest is executed for every object/instance
   - DOC: types can always access __cdist_out_objects, __cdist_out_explorers, __cdist_out_execs
      --> create cdist-variables document?

   - include generation in makefile