Skip to content

Roadmap Tooling

Francois-Rene Rideau edited this page Oct 13, 2021 · 3 revisions

(See also the Developer Interface Roadmap)

Pay technical debt

  • enable trace logging in participant runtime and EVM code generator
  • minimize boilerplate for builtin functions
  • find a better home for various utility functions
  • implement mobile version of DApps page on glow-lang.org

Documentation

  • Search engine on the website
  • Divide website in 4 quadrants: (goal-oriented vs exploratory) vs (concrete vs abstract)

Building

  • Build deterministically via Nix
  • Use Nix flakes? Migrate to GUIX?
  • Fix gxpkg for interactive manual build G#590

Compiler Passes

  • Complete the parser so all tests can work from Glow source
    • Pattern Matching, more complex patterns
  • abstract participant runtime and on-chain code generator
  • code gen as much of gerbil-cardano as possible with TemplateHaskell
  • do TODOs in setup-tail-call

Testing

Can we validate our code and identify relevant issues before we hit production?

  • Continuous testing and delivery.
  • have integration tests invoke CLI from separate processes
  • Unit tests with minimal need for infrastructure.
  • Integration tests with various supported networks.
  • Property-based testing.
  • Test attack/failure scenarios.
  • Review real-world attacks/failures and make sure we cover them.
  • Provide check-lists for auditing apps

DApp Upgradability

Can we smoothly upgrade a DApp to enable new features or security fixes, without losing assets or users in the process?

  • Remembering by hash old versions of contracts as compiled by previous versions of the compiler (especially after they’ve been deployed in production)
  • Code upgrade within one contract by participant/operator agreement
  • Support for centralized upgradable contracts
  • Asset migration from one contract to the next
  • Support for centralized upgradable contracts with grace period for migration
  • Support for voting-based instead than centralized upgrades

Chaos Engineering

Can we constantly attack ourselves so we know our code is robust against attacks?

  • Daemon to break things at random
  • Detect when attacks happen and be able to monitor it.
  • Stop or diminish random breakage when actual attacks hit?
Clone this wiki locally