Hexademon is the codename for a set of enhancements to AI2. This spec describes the feature set.
Goals & Principles
Our ultimate goal is to turn AI2 into a full-fledged, cloud-based command shell, suitable for all administration, configuration, and development on Hexarc. At minimum we need a way for users to edit, store, and run scripts.
UX & Core Concepts
Some thoughts and questions:
- We need a way to chain scripts (as in piping). Or perhaps we just need a way to invoke a script from another script.
- The return value from a script should be interpreted by the AI2 shell and rendered appropriately. We might implement additional renderings for images, interactive displays, etc.
- What is the storage model like? Is it folders? Tags? Are there system-defined tags? How do we handle alternate storage locations (e.g., Dropbox or other Hexarc services).
- What is the security model? Can people share scripts?
- What's the primary UI metaphor? Windows (within a single browser window)? Browser tabs? Do we rely on the OS for windowing? Or do we preserve our UI environment in the cloud so that we can remember it? [The latter might be worth a shot, in the spirit of creating a cloud OS.]
- How do we log activity? If everything is just a command-line, then it's easy, but what about GUI stuff? Do we need to automate the GUI?
- Eventually we need to integrate with Git (presumably by building it into Hexarc).
- How do we name files? Is the name the same as an ID? Or is the name just a label (and the ID is a GUID or hash)? How do we refer to sets of files? Do we need the concept of file lists?
- Do we need file types?
- Can we edit Hexarc packages through this UI? How?
- How does the file namespace intersect with built-in shell commands?
- It would be great if this system allowed users/devs to essentially create their own UI. For example, a simple script with a single input box to handle resetting user password.
- Eventually we need an event system (which listens to events and runs some script), but that's orthogonal to everything else.
- What's the UI for editing a file? Does the command-line get replaced? Do we open a new pane? Where does the pane open? What are the metaphors?
- Is there an equivalent to the current directory? Is there an equivalent to the path?
- Is there a concept of apps? What's the deployment/installation model?