Development Roadmap

Warning

This is a draft. We welcome input from the community on how we sould revise this roadmap.

We intend to aggressively modernize the existing codebase and ultimately make it as easy as possible to integrate Qogecoin into third-party applications.

Quantum-safe signatures

Qogecoin will introduce a quantum-safe signature type for addresses.

We are currently waiting for the results of the NIST post-quantum safety competition to ensure that we choose an academically approved signature scheme.

See e.g. PQClean/PQClean and open-quantum-safe/liboqs for implementations.

Reproducible builds

The build system will be switched to Bazel.

This will sandbox builds and make them easily reproducible. Build times will be reduced significantly. Since Bazel has excellent support for incremental builds, collaborators can develop patches faster.

Clang/LLVM

The Clang/LLVM project is the de-facto standard of modern C++ compiler toolchains.

This entire toolchain is open source and comes with an industry-friendly license. Clang/LLVM supports many tools that will help to improve the code quality of the Qogecoin repository, e.g. code linters, formatters and sanitizers.

The ClangFormat formatter is able to run without Clang/LLVM as compiler, but the likely most important tool Clang-Tidy depends on a compilation database which needs to be generated from Bazels internal dependency graph.

Containerization

Containers are the modern way of distributing software.

The same container image can be deployed on GNU/Linux, MacOS and Windows, making OS-specific compilation paths obsolete. Containerization will make it easy to integrate Qogecoin into modern cloud applications.

E.g. a Kubernetes cluster should be able to start Qogecoin nodes or API clients via YAML manifests. We will build containers with bazelbuild/rules_docker. Both build containers and prebuilt binary containers will be pushed to container repositories.

Easy web app integration

The Qogecoin daemon should run as a local server that enables GUI interfaces accessible via any web browser.

We target a component layout that clearly separates the Qogecoin daemon from other components. Since we intend to run the Qogecoin daemon containerized per default, the most elegant way of distributing GUI applications for Qogecoin will be to serve them as locally hosted web apps.

gRPC API

The gRPC framework is a modern RPC API.

An App developer may want to query the Qogecoin API with Dart/Flutter, while a cloud backend developer may want to query the API with Go.

With gRPC we can distribute autogenerated API stubs for 11 officially supported languages and other community-supported languages, so that third-party developers can use the optimal language for their requirements.

The officially supported languages are:

  • C#

  • C++

  • Dart

  • Go

  • Java

  • Kotlin

  • Node

  • Objective-C

  • PHP

  • Python

  • Ruby