Roadmap Developer Interface - Glow-Lang/glow GitHub Wiki

Command-Line Interface

  • Basic CLI
  • CLI discoverability through help command
  • Issue an error when a contact or identity would be overwritten, with actionable advice to retry with additional the --overwrite flag 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