arrow Blog

Celebrating 1 year as CNCF Sandbox

date July 7, 2025

date 6 min read

Score celebrates its first anniversary as CNCF Sandbox, time flies!
Mathieu Benoit Mathieu Benoit, Score maintainer and CNCF Ambassador
Celebrating 1 year as CNCF Sandbox

SHARE

linkedin share twitter share reddit share

🎉 Today, Score celebrates its first anniversary as CNCF Sandbox, time flies! 🎉

Wow! What a ride, nothing but fun, gratitude and great learnings!

One of our key learning is that an open source project without its contributors and its community cannot go that far.

We are very grateful for all the interactions and contributions with and by the Score community, solidifying the Score’s mission:

Score is loved by developers because they can run the same workload on completely different technology stacks, without needing to be an expert in any one of them.

Image showing the vision of Score, with personas, implementations and provisioners

In one year, the Score project got 19 new contributors!

Screenshot of the Score contributors as of 2025-07-07

Humanitec has played an important role for the Score project, since its creation, through the donation to the CNCF and by still making sure the Score project is growing outside Humanitec employees and customers. We now have 50% of the Maintainers outside of Humanitec and the number of Contributors is now at 90% outside Humanitec. This is key to set a sustainable foundation for the Score project and its community to grow and expand.

The Cloud Native Computing Foundation (CNCF) has been instrumental to onboard Score as a CNCF project, by providing a framework, the tools and the guidance to grow as a community. Last KubeCon EU 2025 in London was a great example, where the Score project got the opportunity to have a Project Lightning talk, a ContribFest and a Kiosk.

Photos of the Score maintainers at the Score Kiosk at KubeCon EU 2025

Great collaborations with other CNCF projects have been very inspirational and part of the highlights of this year, just to name a few of them:

Today, to illustrate and celebrate Score’s first anniversary as CNCF Sandbox, we want to have a dedicated Contributors spotlight section to highlight 4 major features delivered during the last few months.

Note: We cannot highlight each contribution individually, but again we are very grateful to all the contributors and community members: your time, expertise and feedback are really much appreciated and inspiring!

🎉 score-compose|k8s init --provisioners

Kudos to Rashid Alam! Thanks to his contributions to score-go, score-compose and score-k8s, Score’s end users can now import custom resources provisioners as OCI image, like illustrated below:

$ score-compose init --provisioners oci://ghcr.io/score-spec/score-compose-community-provisioners:latest#10-redis-dapr-state-store.provisioners.yaml

$ score-k8s init --provisioners oci://ghcr.io/score-spec/score-k8s-community-provisioners:latest#10-redis-dapr-state-store.provisioners.yaml

Yet another collaboration with a CNCF project as this feature is using ORAS!

Also, thanks to Rabel Mervin and his contributions to score-go and score-compose, end users can now use local provisioners files or defined inline, like illustrated below:

$ score-compose init --provisioners=- <<"EOF"
- uri: template://env
  type: environment
  outputs: |
    ENV: "development"
    DEBUG: true
EOF

In addition to this, kudos to Rashid Alam and Matthieu Evrin who respectively implemented in score-compose and score-k8s the new flag to skip the import of the default provisioners:

$ score-compose init --no-default-provisioners

$ score-k8s init --no-default-provisioners

Learn more about the resources provisioners in score-compose and score-k8s.

🎉 score-compose|k8s resources|provisioners list

Kudos to Matthieu Evrin and his contributions to score-go, score-compose and score-k8s. The user experience has been boosted and made more consistent around the following resources and provisioners subcommands:

As Developer, I can get more details about the resources provisioners made available to me:

$ score-compose init
$ score-compose provisioners list

$ score-k8s init
$ score-k8s provisioners list

+---------------+-------+------------------+---------------------------------------------------------+---------------------------------------------------------------------+
|       TYPE    | CLASS |      PARAMS      |                                        OUTPUTS          |                                       DESCRIPTION                   |
+---------------+-------+------------------+---------------------------------------------------------+---------------------------------------------------------------------+
| amqp          | (any) |                  | host, password, port, username, vhost                   | Provisions a dedicated RabbitMQ vhost on a shared instance.         |
+---------------+-------+------------------+---------------------------------------------------------+---------------------------------------------------------------------+
| dns           | (any) |                  | host                                                    | Outputs a *.localhost domain as the hostname.                       |
+---------------+-------+------------------+---------------------------------------------------------+---------------------------------------------------------------------+
| elasticsearch | (any) |                  | host, password, port, username                          | Provisions a dedicated Elastic Search instance.                     |
+---------------+-------+------------------+---------------------------------------------------------+---------------------------------------------------------------------+
| kafka-topic   | (any) |                  | host, name, num_partitions, port                        | Provisions a dedicated Kafka topic on a shared Kafka broker.        |
+---------------+-------+------------------+---------------------------------------------------------+---------------------------------------------------------------------+
| mongodb       | (any) |                  | connection, host, password, port, username              | Provisions a dedicated MongoDB database.                            |
+---------------+-------+------------------+---------------------------------------------------------+---------------------------------------------------------------------+
| mssql         | (any) |                  | connection, database, password, port, server, username  | Provisions a dedicated database on a shared MS SQL server instance. |
+---------------+-------+------------------+---------------------------------------------------------+---------------------------------------------------------------------+
| mysql         | (any) |                  | database, host, name, password, port, username          | Provisions a dedicated MySQL database on a shared instance.         |
+---------------+-------+------------------+---------------------------------------------------------+---------------------------------------------------------------------+
...

Given this Score file:

apiVersion: score.dev/v1b1
metadata:
  name: hello-world
  annotations:
    tags: "nodejs,http,website,javascript"
containers:
  hello-world:
    image: .
    variables:
      PORT: "3000"
      MESSAGE: "Hello, World!"
      DB_DATABASE: ${resources.db.name}
      DB_USER: ${resources.db.username}
      DB_PASSWORD: ${resources.db.password}
      DB_HOST: ${resources.db.host}
      DB_PORT: ${resources.db.port}
resources:
  db:
    type: postgres
  dns:
    type: dns
  route:
    type: route
    params:
      host: ${resources.dns.host}
      path: /
      port: 8080
service:
  ports:
    www:
      port: 8080
      targetPort: 3000

As Developer, I can get more details about the resources that will actually be provisioned:

$ score-compose generate score.yaml --image ghcr.io/score-spec/sample-score-app:latest
$ score-compose resources list

$ score-k8s generate score.yaml --image ghcr.io/score-spec/sample-score-app:latest
$ score-k8s resources list

+---------------------------------+------------------------------------------------+
|               UID               |                    OUTPUTS                     |
+---------------------------------+------------------------------------------------+
| dns.default#hello-world.dns     | host                                           |
+---------------------------------+------------------------------------------------+
| postgres.default#hello-world.db | database, host, name, password, port, username |
+---------------------------------+------------------------------------------------+
| route.default#hello-world.route |                                                |
+---------------------------------+------------------------------------------------+

🎉 score-k8s generate --namespace

Artem Lajko, while testing, learning and blogging about Score, provided a great feedback that landed to a feature request in score-k8s: “How to easily supply the Namespace to the generated Kubernetes manifests?”. Kudos to Anurag Yadav who implemented this new feature and associated new flags like illustrated below:

$ score-k8s generate --namespace test --generate-namespace

This is unlocking different and important use cases with score-k8s, its provisioners and patch templates. Thank you, Artem and Anurag!

🎉 Score Examples Hub

One of the feedback we have been capturing is to show concrete examples and use cases in the Score docs. That’s now the case!

Huge kudos to Tobias Babin and Santiago Beroch for designing and implementing this very powerful Score Examples Hub!

Screenshot of the Score Examples Hub

We have already plenty of additional ideas and contents to inject in there, stay tuned!

Upwards

On behalf of the Score Maintainers (Susa, Ben, Chris and Mathieu) and the entire Score community, we would like to give a big shout out to all these contributors. You have had so much impact to the Score project!

This is really shaping the future of how Developers and Platform Engineers interact with cloud native applications and tools, reducing the cognitive load on the Developers while enforcing standardization by the Platform Engineers.

Can’t wait to see where this community will bring the Score project for its second year as CNCF Sandbox!

See you in Atlanta for KubeCon NA 2025!?

arrow Blog overview