project
    1. name
      1. Dependency Manager

    2. name
      1. dem

    3. solution
      1. scheduling
        1. queues
          1. priority
            1. toDo
              1. Clean up guide lines.

            2. toDo
              1. Clean up ConfigurationI.

              2. toDo
                1. Create to validate framework.

            3. toDo
              1. Support deterministic mode.

              2. toDo
                1. Maps

              3. toDo
                1. Sets

            4. toDo
              1. Create echo paging, when Domsole outputs to file.

            5. toDo
              1. Fix up code guide lines.

            6. toDo
              1. Make unit tests.

              1. Use fuzzy testing.

            7. toDo
              1. Simple aspect oriented programming.

              2. toDo
                1. Check consistency.

              3. toDo
                1. Implement test injection.

            8. toDo
              1. Console should print message asynchronously.

            9. toDo
              1. Implement test injection and recursive test injection.

            10. toDo
              1. Create functional effect system.

            11. idea
              1. Create BNF grammar for XML and check files with it, instead of using XSD.

            12. toDo
              1. Create a mode, which makes dependency injection fast via a standard value.

              2. toDo
                1. Create a resource class, that marks a resource as supporting such functionality.

            13. toDo
              1. Define XML schemas for own format and ensure compliance.

            14. toDo
              1. Split Dem into core, merger and Java bootstrapping subproject.

        2. unscheduled
          1. toDo
            1. Why are certain things done? i.e. object factory with static interface

          2. toDo
            1. Split class functionality into different independent classes for dependency, configuration and resource management.

          3. idea
            1. Implement static interface.

          4. toDo
            1. Standardize usage of down and up casting.

            2. toDo
              1. Covariance and Contravariance

        3. objective
          1. objective
            1. Support automatic refactoring.

          2. objective
            1. Provide an environment for programs that acts as an generic interface and abstracts away implementation details of the environment. Environment is implemented via interfaces and things, but only accessed via interfaces. Implement side effects like input and output only over this environment.

          3. objective
            1. Minimize complexity.

            2. objective
              1. Maximize compatibility to other programming paradigms and make it therefore easy to translate automatically or manually to other languages.

              2. solution
                1. Work with only one state variable.

                2. solution
                  1. Support different types of environment object variable.

                  2. solution
                    1. Support environment object access via a variable that is passed through everywhere.

                  3. solution
                    1. Support environment object access via a static variable.

                  4. solution
                    1. Support environment object access via thread local variable.

              3. solution
                1. Use no inheritance.

              4. solution
                1. Use dependency injection via static methods.

            3. solution
              1. Minimize side effects.

            4. solution
              1. Split everything into core, merger, sheath, environment.

              2. solution
                1. No explicit splitting in order to safe development resources. It is enough to ensure, that it is possible to split everything at any given time, with an acceptable amount of resources.

          4. objective
            1. Every thing has a state machine (even immutable) and only valid states/values should be reachable.

            2. objective
              1. The value space and transition functions of an thing should be split in order to be able to define stateless programs.

            3. objective
              1. The basic transition functions, that define all valid transitions, should form a group that cannot be extended from the outside and are therefore inherently coupled with the value space.

              2. objective
                1. This function set should be as small as possible.

            4. objective
              1. Complex things are a tree of things and every action on them is an transformation of tree.

      2. val
        logging
        1. solution
          1. There is no differences between logs and console output.

        2. toDo
          1. End of log does not contain closing tag.

        3. toDo
          1. Increase logging speed by making logging asynchronous.

      3. val
        side-effects
        1. toDo
          1. Create program system as effect system.

          2. toDo
            1. Create event processor.

            2. toDo
              1. Create event queue at processor.

          3. toDo
            1. Event processor executor.

        2. s:article
          1. s:chapter
            1. s:title
              1. Side Effects

            2. s:paragraph
              1. Secondary side effects are parts of the programs which are undefined. Primary side effects are modeled side effects that are explicitly caused by the program.

            3. s:paragraph
              1. Configuration of secondary effects are done with secondary effects or the executor of the programs. Configuration of primary effects are done via program arguments or the executor.

            4. s:chapter
              1. s:title
                1. Program Dependencies

              2. s:paragraph
                1. There are runtime dependencies and compile time dependencies. Runtime dependencies are arguments and configurations for primary and secondary side effects.

      4. val
        support
        1. val
          programming.languages
          1. toDo
            1. Transpile Java programs to Javascript and execute inside website.