Roadmap Developer Interface - Glow-Lang/glow GitHub Wiki
Command-Line Interface
- Basic CLI
- CLI discoverability through
helpcommand - Issue an error when a contact or identity would be overwritten, with actionable advice to retry with additional the
--overwriteflag to proceed with no error. #155 - enable interactions with no inputs (or known-in-advance inputs) to be run entirely with a single command (buy_sig + coin_flip + rps)
- enable interactions with user inputs to be run entirely with a single command (rps_simple)
Editing
- (2021-06) Text Editor plus buttons/forms for actions below [2d]
- Save / Load
- (2021-05) API for writing UIs to Glow DApps [5d]
- The network interaction is specified using Glow
- The UI is written in Scheme or JS
- (2021-05) Gerbil Scheme REPL based on https://gambitscheme.org/try on which to run interactions [5d]
- Syntax highlighting
- Background coloring depending on which role is active & whether the action is private/public
- Display existing certifications or lack thereof for current exact code version.
- Structured Editing a la Hazel, Darklang, Unison, Lamdu, ProjecturEd, etc.
- Graphical programming a la Blockly, Scratch, Snap!, etc.
Building, Testing and Running from IDE
- Compile
- Run formal verification tools
- Run tests
- Deploy on test network (with parameters / interaction from UI)
- Deploy on production network (see User Interface)
Observability
Can users and operators see the current state of their DApps?
- Observe current state of any individual interaction.
- Real-time monitoring for all assets at rest or in flight across all DApps.
- Understandable, searchable, actionable error messages
- Execution traces, at various levels of abstractions.
- Traces as objects you can manipulate, not just text.
- Abstract comparison of traces for testing or categorization.
Actionability
Can operators fix issues in Production?
- Detect fishy situations, get alerts
- Allow operators to temporarily freeze some DApps or manually take over, especially if/when the automated handlers are stuck somehow.
Interactive Debugging
- Running an interaction with debugging enabled from the start
- Enabling the debugger in the middle of an interaction
- Source-level debugging at many language levels
- Runtime debugging (SLIME and/or LSP language server)
- Replaying previous traces
- Intervene in ongoing live interaction.
- Zooming in or out of traces (recompute if needed)
- Omniscient debugging (with proper traces, can be retroactive)
- Evaluating prospective branching futures from any point in a trace
- Debugging is always on, only lens is super-high-level by default just to provide feedback about progress.
- Running on an abstract blockchain with immediate confirmation and/or concurrency control to test race conditions.
- Injecting failures for testing with the same infrastructure as debugging