As we laid out in our Helping A Community Grow By Pruning Inactive Projects post, there is an important life cycle to well governed open source projects. Since our launch in 2015, Hyperledger Foundation has hosted a number of now retired projects that helped drive innovation and advanced the development of enterprise-grade blockchain technologies. This series will look back at the impact of these pioneering projects. Hyperledger Composer is the first in the series.
Hyperledger Composer was a platform for accelerating the development process of business network applications based on blockchain technology. Donated by IBM UK in 2016, Hyperledger Composer aimed to simplify the creation and management of assets, participants, and transactions on a blockchain network. It provided a high-level abstraction layer that allowed developers to focus on the business logic rather than the technical details of the underlying blockchain platform. It also offered a set of tools for modeling, testing, deploying, and interacting with business networks.
Hyperledger Composer was innovative in several ways. It introduced a domain-specific language called CTO (Composer Type Object) for defining the structure and validation rules of assets, participants, and transactions. It also used JavaScript for writing chaincode (smart contracts) that operated on these objects and for enabling developers to generate REST APIs and Angular applications from their business network definitions. Composer also integrated with existing identity management and access control systems, such as LDAP and OAuth.
However, Hyperledger Composer also faced some challenges and limitations. One of the main problems was that it had two completely different programming models: the Hyperledger Fabric programming model (chaincode) and the Composer programming model (business networks). This caused confusion and inconsistency for users, who had to choose between the two models or switch between them at different stages of development. Another problem was that it was difficult for Composer to keep up with and expose the latest features of Fabric, such as private data collections and state-based endorsement policies. This meant that users who wanted to take advantage of these features had to stop using Composer and revert to developing with Fabric directly. A third problem was that Composer’s APIs were too simple and easy to use compared to Fabric’s APIs, which were low-level and complex. This created a gap between the expectations and realities of developing blockchain applications, and also prevented improvements from being made directly to Fabric’s APIs.
Due to these reasons, Hyperledger Composer was moved to end-of-life in August 2019. The official announcement stated that "Composer has served its purpose as an entry point for many people into blockchain technology" but "it is time for us to move on." The announcement also suggested some alternatives for developing blockchain applications with Hyperledger Fabric, such as using the Fabric SDKs, the VS Code extension, or the IBM Blockchain Platform.
There were many people who had been using Hyperledger Composer and we still hear people asking about it. This interest in using Hyperledger Composer has shown that there is a demand for tools that help make the complexities of setting up and running a blockchain network easier. We see this legacy of Hyperledger Composer live on in the large number of projects and labs that are making different aspects of using Hyperledger Fabric easier. Here are a few examples you may want to check out:
We would like to thank all of the people who contributed to Hyperledger Composer while it was an active project. The efforts of these community members helped drive innovation in the community around making Hyperledger Fabric easier for people to use in their solutions.
If you'd like to learn more, the code for Hyperledger Composer is still available, and you're welcome to take a look at the repository. Please note that there are no maintainers for the project who are available to answer any questions you may have.