Score is an open source, platform-agnostic, container-based workload specification. This means you can define your workload once with the Score Specification and then use a Score Implementation CLI to translate it to multiple platforms, such as Helm, Docker Compose or Google Cloud Run.
In the example below, a score.yaml
file is executed via score-compose to generate a compose.yaml
file, which allows the user to spin up a container via Docker Compose. The same score.yaml
file is then used to generate a helm values.yaml
file to be installed onto Kubernetes.
The aim of this project is to reduce toil and cognitive load of developers by only having to define a single yaml file that works across multiple platforms. Score does not intend to be a fully featured yaml replacement for those platforms, it only aims to define workloads that can be combined with more advanced yaml configurations that an infrastructure team would provide to developers in an organization. This has the following advantages:
- The developer only needs to learn the Score Specification to define the workloads that run across all these platforms.
- The Score Specification is designed to be applied to multiple environments to reduce the amount of configuration.
- An infrastructure team can help define and configure the resources and multiple platforms where the developer can work on.
At this time Score is still in alpha, but we are hoping for it to quickly grow its implementation use cases through community contributions.
Cloud-native developers often struggle with configuration inconsistencies between environments. This gets even more complicated when the technology stack in each environment is different. What if you use Docker Compose for local development, but Helm Charts to deploy to the Kubernetes based development environment? Not only do you have to figure out Docker Compose and Helm, but you need to keep them in sync! This results in various bottlenecks along the application delivery lifecycle.
🎵 Tech & tools that require specialized knowledge and operational expertise are imposed on developers.
🎵 Different configuration rules, constructs and values between local and remote environments increase the risk of configuration inconsistencies.
🎵 Keeping a multitude of platform- and environment-specific configuration files in sync leads to repetitive configuration work.
Score provides a single, easy to understand specification for each workload that describes its runtime requirements in a declarative manner. The score.yaml
file allows to generate configuration in an automated, standardized and one directional way. By reducing the risk of wrongly specified or inconsistent configuration between environments are we hoping to foster focus and joy for developers in their day-to-day work.
As shown in the graphic above, are there 3 core components to consider in the context of Score:
The Score Specification file is a platform-agnostic workload specification which can be run against a Score Implementation (CLI) such as score-compose or score-helm to generate a platform configuration file such as docker-compose.yaml
or a helm values.yaml
file. The generated configuration file can then be combined with environment-specific parameters to run the workload in the target environment.
To install a Score Implementation, see the installation guide in each repository:
Can't find the implementation you are looking for? The Score Specification has the potential to integrate with many container orchestration platforms and tooling such as Kustomize, Amazon ECS, Google Cloud Run, or Nomad. Help up shape the next generation of Score implementation CLI’s and start contributing here.
- Give the project a star!
- Contact us via email:
- Join us on Slack
- See our documentation
- Write a blog post.
- Provide feedback on our road map and releases board.
- Contribute.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also open an issue with the tag enhancement
.
- Fork the Project.
- Create your Feature Branch.
git checkout -b feature/feature-name
- Commit your Changes.
git commit -s -m "Add some AmazingFeature"
- Push to the Branch.
git push origin feature/feature-name
- Open a Pull Request.
You can find our documentation at docs.score.dev.
See Roadmap. You can submit an idea anytime.