Docker has published the Compose specification, used for defining its own multi-container applications, and is asking contributors to help with its maintenance and evolution.
"Previously Compose did not have a published specification, and was tied to the implementation, and to specifics of the platforms it shipped on," said the container flinger .
The specification is now on GitHub, under the Apache 2.0 licence, with four repositories comprised of the specification itself, a reference library for parsing and loading Compose files, a reference implementation, and conformance tests. The programming language for the tools is Go.
Compose is loved as it is lightweight and simple to use – we all need to maintain this going forward...
The company is hoping to make the Compose spec more universal by extending it to support Kubernetes and other platforms such as Amazon Elastic Container Service (ECS). Docker said it is working "with Amazon Web Services (AWS), Microsoft and others" to this end.
In November 2019, Docker announced its transition to be focused on developers after selling its enterprise business to Mirantis. An improved Compose specification would help developers using Docker's tools. "Having worked recently on deploying a docker compose file to Amazon ECS, the suggestion spec changes would have been of great help and simplified my life," said AWS technical evangelist Ricardo Sueiras on Twitter.
Docker is now seeking help with maintaining the project. "A lot of potential changes have been proposed already and we suspect more coming as people start to get involved. To help manage these and support the growing community we are looking for about 3 maintainers of the Compose Specification," said product manager Benjamin De St Paer-Gotch. He added that the specification must not become overly complex. "Compose is loved as it is lightweight and simple to use – we all need to maintain this going forward," he said.
Issues already raised are that the "specification is Docker and/or Linux specific in many places" and that many Compose fields do not map directly to Kubernetes. Taking a product-specific specification and making it more generally useful is challenging, but opening it to the community will give Docker the best chance of success. ®