As 2023 winds down, we're also bidding goodbye to an important part of Dagger history: the Dagger CUE SDK.
If you’ve been active in the Dagger community, this news will come as no surprise. Since we released multi-language support, we have seen a steep decline in usage of our original CUE configuration syntax, and have made it clear that feature parity with newer SDKs would not be a priority. After a year of keeping the lights on and collecting feedback from our community, we've concluded that there simply is not enough interest. Therefore, as of 14 Dec 2023, we are discontinuing support for our CUE SDK.
If you don't use the Dagger CUE SDK, you can safely ignore this announcement. We have no plans to discontinue other SDKs.
If you do use our CUE SDK, you will see the following changes after 14 Dec 2023:
We will no longer add features, fix bugs or accept pull requests related to the CUE SDK.
We will close all open issues related to the CUE SDK in our GitHub repository.
We will move the CUE SDK documentation to our documentation archive.
Pipelines written with the CUE SDK will continue to run on Dagger Engine 0.2, but plans to support them in more recent versions of the engine are canceled.
What is CUE?
To quote our own documentation archive, CUE is a powerful configuration language created by Marcel van Lohuizen who co-created the Borg Configuration Language (BCL)—the language used to deploy all applications at Google. It is the result of years of experience writing configuration languages at Google, and seeks to improve the developer experience while avoiding some nasty pitfalls.
CUE is a superset of JSON, with additional features to make declarative, data-driven programming as pleasant and productive as regular imperative programming. This unique combination caught our attention as we were prototyping what would later become Dagger.
Dagger and CUE: Looking Back
Dagger and CUE have a long history together. Our first public prototype in 2021 was essentially a CUE frontend to Buildkit. When we launched the Dagger Engine, CUE was still the only way to program it. And when we shipped our first major API redesign, it was to better fit the “CUE way”. In 2022 we contributed the first LSP support for CUE as part of or Dagger VS Code extension.
But we soon faced overwhelming demand in our community for supporting multiple languages. So we launched a new GraphQL-powered engine with new SDKs for Go, Python and Node.js. We saw the new SDKs attract more and more Go, Python and Node.js developers, while the CUE SDK fell behind in adoption. At the same time, we saw the CUE community pursue other fields of applications for the language than CI/CD. We continued to maintain the SDK during 2023, while wondering if the community still wanted (or needed) it.
Sunsetting the Cue SDK
We've found that while engineers are tired of building CI/CD pipelines with shell scripts and YAML, what they really want is to write code in a language they already know. Learning a brand new language, however powerful, is simply not what they're looking for.
We've seen this play out in various ways (metrics, feedback, multiple community-contributed SDKs for other languages...) over the last year and so have decided to sunset the CUE SDK so that we can focus our resources elsewhere.
Of course, this doesn't mean you can't use Dagger and CUE together. There are projects in the community to do exactly that. For example, wagon is a build tool based on Dagger and CUE.
If you're a Dagger CUE SDK user, thank you for taking the journey with us! We've appreciated the time and effort you invested in reporting issues, suggesting improvements, contributing and reviewing code and documentation! Our CUE channel in Discord will continue to remain available, and you will always be welcome there. We also encourage you to check out our SDKs for other languages, and hope you'll love them as much as you love CUE!