Support Hyperledger Fabric 3 in Fablo
Description
Fablo is a tool mostly used for local development and in CI. Is starts a Hyperledger Fabric network from a single configuration file, and supports various features that makes the development easier (REST API, network snapshots, advanced topology configuration, hooks, etc). Currently it supports Hyperledger Fabric in versions since 1.3 to 2.5. With the new upcoming release of Hyperledger Fabric (version 3):
- We want Fablo to support Hyperledger Fabric v3, along with BFT consensus
- We want to drop support for Hyperledger Fabric v1.3 and v1.4.
- Optionally, we want to approach support for Fablo on ARM architecture (Apple M; running ARM Docker images for Fabric).
Mentee will work with Bash scripts that are used for calling Fabric, TypeScript code for validation and normalization of config, and template engine to generate parametrized configs. Also mentee will be responsible for creating automated tests (both TS unit tests and e2e tests in Bash), covering implemented features, and updating Fablo documentation.
Learning Objectives
- General software engineering skills - the understanding of the importance of automatic tests, even for the infrastructure, in the process of delivering the quality software; looking from edge cases, problem solving
- Bash scripting skills
- Ability to debug and iterate on complex stack
- Experience with Hyperledger Fabric network topology, setup and operation
Expected Outcome and Deliverables
- Feature + automatic tests: Fablo supports Hyperleder Fabric v3
- Feature + automatic tests: Fablo supports BFT consensus for Hyperledger Fabric v3
- Maintenance: Support for Fabric v1.3 and v1.4 is removed
Relation to Hyperledger and Impact on the community
- Hyperledger Fabric
- Fablo (Hyperledger Labs)
Fablo is used for local development and CI, providing a way to test and iterate on chaincodes, debug key collisions, experiment with network topologies, configuration options. It hides the complexity of Hyperledger Fabric, allowing an easy start and wide adoption. This internship aims to aims to keep Fablo up to date with the development of Hyperledger Fabric.
Recommended Skills
- A candidate should feel comfortable with command line and working with Linux or OS X environment.
- Nice to have:
- Some experience with TypeScript, Bash, and YAML,
- Knowledge of Docker or any other containerization tool
- Experience with debugging complex/distributed systems
Mentor(s) Names and Contact Info
- Piotr Hejwowski (Hejwo, piotr.hejwowski@gmail.com)
- Jakub Dzikowski (dzikowski, jakub.t.dzikowski@gmail.com)
Additional Information
- Fablo source code: https://github.com/hyperledger-labs/fablo
- The way we do e2e tests in Fablo: https://github.com/hyperledger-labs/fablo/blob/main/e2e-network/docker/test-01-simple.sh
- Preview release notes for Hyperledger Fabric v3: https://github.com/hyperledger/fabric/blob/v3.0.0-beta/release_notes/v3.0.0-preview.md