Technology trends for the world of tomorrow

The Past

Six months have elapsed since we started working on Fabric Composer. What started as a whitepaper by IBMer Anthony O’Dowd, some analysis of the code of existing Hyperledger Fabric solutions, and a spark of model-driven inspiration, is now a fledgling Open Source project proposal to the Linux Foundation.

True to the saying of innovation being “1/10th inspiration, 9/10ths perspiration” the team has worked incredibly hard to build the technology, documentation, samples and community to empower people to quickly create blockchain solutions.

By building a blockchain animal tracking demo ourselves we quickly realized that creating enterprise blockchain solutions requires much more than a blockchain:

Model definitions for the data to be stored on the blockchain. This data will potentially sit on the blockchain for years and requires a schema to describe it.

Easy to write business logic, that executes on the blockchain Fabric when transactions are submitted for processing

A powerful access control language to declaratively describe who in the business network can access what

Simple generation of REST APIs from the models to serve as the programmatic interface between the blockchain and the mobile/web/system of record applications that submit transactions or query the blockchain

Ability to emit outbound events from the blockchain, so that applications can be notified when transactions are processed or data changes

Ability to run complex queries over the data on the blockchain, for example to build dashboards or regulatory reports

Application templates to quickly bootstrap a web front-end to a blockchain solution

Extensions for popular code editors

Support for unit testing blockchain solutions

Integration with CI/CD pipelines to automate the deployment and testing of blockchain solutions

Enable the use of semantic versioning and binary repositories for development artifacts

Swagger/Open API and Loopback used to integrate with existing Systems of Record

From the outset we made the decision that we would reinvent as few wheels as possible! Not only has this allowed a small team to make very fast progress, “standing on the shoulders’ of giants”, but developers get to reuse a lot of their existing skills in Open Source technology. We make use of JavaScript, Node.js, npm, Docker, Hyperledger Fabric, Travis CI, GitHub, Loopback, Atom, VS Code, Swagger, JSON Schema, Protobuf, Angular, Yeoman…

That said, there are key technologies that we have had to build:

A domain specific language for modeling business networks

Various converters to render the model for different audiences and purposes: UML, Typescript, JSON Schema, Loopback model, Protobuf etc

A domain specific language for capturing access control rules and a runtime

A pluggable runtime architecture that allows us to execute the business logic for a blockchain solution inside Node.js, in a web browser, or on Hyperledger Fabric

A web application (Playground) to model and test blockchain solutions, running within the browser, or against an external Hyperledger Fabric

We’ve supplemented the core technologies with big investments in design, samples and documentation. We hope that the whole exceeds the sum of the parts!

The Present

An active community has formed around Composer, with over 280 participants on the #fabric-composer RocketChat channel, bi-weekly community calls, and a growing set of contributors of pull requests and bug reports. Startups are creating solutions based on Fabric Composer, Global Systems Integrators are training their teams, Hackathons are being organized, and large multinationals are building POCs.

Welcome and empower companies that would like to create commercial offerings based on Fabric Composer, while ensuring there is a clear delineation between what is Open Source and what is commercial, in terms of technology, but also governance and contribution

Stability and quality

Add “must have” features, such as support for emitting outbound events, executing complex queries and linking between networks

Work with the Hyperledger Fabric community to support Node.js as a chaincode execution environment

Encourage and support the community in creating industry specific models

Continue to round-out the features of the web Playground to ensure that first contact with Composer is truly delightful

Encourage developers to add Composer support for other blockchains. We already have 3 runtime implementations and are curious to see how the Composer abstractions could be mapped to other execution environments

Many of these items have been captured as a set of GitHub Projects, available here.

I sincerely hope you will join us on this exciting journey. All contributions are welcome: finding bugs, writing documentation, submitting pull requests, engaging in design discussions, commenting on architecture and use cases.