Areas for improvement in status-go

Based on a Google Doc started by @adamb.

The goal of this thread is to collect a list of topics and identify areas for improvement in the status-go repository. Ultimately, it should help us to figure out a long-term plan for this project as well as provide tasks for newcomers and community members who would like to contribute. At the same time, we need to be aware that the whole ecosystem changes rapidly and the long-term plan needs to be often discussed and kept up-to-date.

High-level Topics

  • Identify which patches can be moved to go-ethereum,
  • Change p2p.Server in go-ethereum to an interface so that we can experiment and provide our own implementation optimized for mobile devices.
  • Rewrite C bindings to gomobile.
  • TBD (please make your own suggestions below)

Areas For Improvement

  • Figure out shortcomings of the infrastructure that prevent us from writing reliable integration and e2e tests.
    • Do p2p.Server events work properly?
    • Are there any race conditions in go-ethereum packages like p2p or discv5 which we rely heavily upon?
    • Can we get rid of time.Sleep in e2e tests and rely on actual events (makes it more evident on what we’re waiting for, as well as more reliable)?
    • Ensure issues in repo are high-quality and meaningful
      • Do we need a lightweight vetting process for new issues, to ensure? E.g. create new issues with needs-review label and having a regular review to ensure the issues are correct and advance us in the direction we want to go.
    • Work on a glossary:
      • Examples: destructive tests, envelope feed, mail server, …
    • Refactor CLI user interface
      • Divide on small command when possible
      • Refactor flag structure
      • Agree on clear guidelines for future commands / flags
    • TBD (please make your own suggestions below)

Small Issues

cc @dmitrys @adriacidre @gravityblast @b00ris @eugene @igor @themue