define module boundaries to hide uncertainties / choices, ala criteria.pdf - textual file format - file system layout of projects - tags, hierarchy, or both? Can we do the same in a single file? - whether to use C-style braces / delimiters or python/brace style significant newlines and tabs - how to achieve maximum simplicity - loaded data structure format - graph editor / viewer - graphics engine (e.g. SVG, canvas, X11, cairo, GL, GLES...) - layout engine - to save layout or not - details of graphical language - ports vs labelled arcs - details of name-spaces / modules and scoping - method of compilation / interpreting, whether to compile and/or interpret - target of compilation (shell, C, Haskell, assembly...?) - means of code generation and optimisation for compiler - system architecture and OS (will vary) - means of scheduling - channel implementation - how to implement reactive / real time channels (as function of pseudo-time / local-time?) - concrete expression of data structures - implementation language (C, or ideally self hosted / bootstrapped based on shell, C, assembly, or Haskell) - maybe to abstract away from implementation language, I can use a common language (similar to simplified AMPS text form, but with limited capabilities) and translate to whatever language. need parsing, symbol processing, simple math - how to integrate functional, relational, flow-based, objects, external procedures and objects, etc. (esp. objects) - how to do distributed computing - is lamda somehow similar to monads?