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
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!
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.
You can install Composer today and within a couple of days create a powerful blockchain solution that interfaces with an application via REST APIs.
Challenges remain however, and most users fit the “early adopter” profile; people that are willing to read between the lines of the evolving documentation and experiment with new technology.
Ultimately the community will decide priorities, however here is what I think we should be working on:
- Enlarging the community and becoming a fully-fledged project under the Hyperledger umbrella within the Linux Foundation
- Create a welcoming environment online and attend Meetups and Hackathons related to blockchain technology
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
- Provide better samples, tutorials and demos based on Hyperledger Fabric v1
- 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.