This may come as a surprise to some, but when the Deno team released celld in August, we were delighted.
Why a surprise? Well, as it happens, there is a popular theory that suggests we shouldn't be happy.
You see, it is commonly claimed around the Internet that we made Cloudflare Workers work differently from other cloud platforms in order to create "lock-in." The claim goes, software built on Workers is hard to move to other hosting platforms, therefore if you write your app on Workers you are "trapped" on Cloudflare forever. This is especially true of apps that use Durable Objects: they are not just written differently but architected differently. All this is, supposedly, a clever trap: once you are too deep to be able to switch, the rug will somehow be pulled out from under you.
Under this theory, celld is a threat: as an open-source implementation of Workers and Durable Objects, it allows applications built on Workers to seamlessly migrate to other providers. No more trap!
This theory is wrong
We built Workers differently because we believe it is a better way to build web applications.
- The Workers design makes it dead simple and dirt cheap to manage an application that runs in hundreds of locations around the world, a feat which no other popular hosting platform has achieved. The pricing isn't a trick: we've genuinely created a novel architecture that is more efficient than competitors, and we've passed on the savings to you.
- Workers' live environment design (aka "bindings") simultaneously makes configuring access to external resources easier and more secure. Usually, those two things don't come together!
- Durable Objects make it easy to build real-time collaboration and distributed systems that are difficult or impossible in a classical three-tier web architecture.
In short, we believe we've simply created a better programming model for cloud software. But being better requires being different: we couldn't achieve these benefits while remaining perfectly compatible with existing platforms.
If we could offer these benefits and be perfectly compatible with traditional cloud platforms, we absolutely would! It would be a great benefit to our business if every kind of compute workload could simply be lifted and shifted onto Workers. But the reality is, innovation sometimes requires doing things differently. We feel that, in the long run, it's better to be different and better, than to be the same as everyone else.
If there were truly no escape hatch from Workers, then some of our largest customers would never have signed on with us in the first place.
When we originally pitched Workers for Platforms to customers like Shopify in 2022, the feedback was clear: They couldn't possibly build on us unless the Workers Runtime was open source.
And so, we open-sourced it. That's right: not a lot of people seem to know this, but the Cloudflare Workers Runtime, workerd, is open source. This is not a parallel implementation, it's the same code we run in production.
As a matter of fact, we have former customers that migrated away from us by using workerd. And that's OK! Those customers would never have signed with us in the first place if we hadn't been open source, and for every one that migrated away, there are many others that have stayed.
It turns out, being open source and giving people an escape hatch is good business.
But we could do better – and with Deno's help, we will
We released workerd genuinely intending for people to use it in production. A few have, but so far, not that many. Most people don't seem to have any idea that this is even possible.
Why not?
Frankly, we haven't done a great job of building out the ecosystem of adjacent services and tooling to make it really work. We'd released the runtime, and then we sort of just hoped the community would step in and start adapting it to every possible environment. It hasn't happened that way. Perhaps we were naive.
In the interest of transparency, I do have to admit that workerd has always had one big gap in its production-readiness: Durable Objects. Workerd implements them, but only in a single-instance way, good enough for local testing, but unable to scale. We have always wanted to fix this. There are TODO comments in the code going back to the original release. The problem is, our production implementation of Durable Object routing is simply not the implementation any self-hoster would want. It's a beast, designed to handle hundreds of locations, with numerous dependencies on external services operated by a team of site reliability engineers. We knew we needed something different for the self-hosting use case, but we never quite found the time to build it. (I actually made an attempt last spring, but, embarrassingly, it didn't work.)
So now, hopefully, it's clear why we were happy about celld: Here was an implementation of Workers and Durable Objects designed to be fully compatible with our own, while being focused on being self-hostable and scalable. That's what we'd wanted to build for a while, and Deno Land was building it for us!
And who better to do it than Ryan Dahl and co? Ryan is the creator of Node.js. He invented the idea of using JavaScript on the server — without his work, Workers may never have existed. And then, he, Bert Belder, and the rest of the Deno Land crew did it again, creating Deno, another JavaScript (and TypeScript) runtime that further advanced the state of the art. The Deno team understands how to create a good developer experience around a self-hosted runtime — something we never quite cracked with workerd.
Imagine, then, our excitement when the Deno team told us they'd like to join forces on this project.
The Plan
Ryan and Bert will be leading a new effort to make workerd self-hosting a first-class supported way to build and run apps using the Workers programming model. This will involve merging code and ideas from celld back into workerd. I'm incredibly excited for this work — I will personally be using it to host an instance of Cloudflare OS in my home.
We'll have more announcements about this work in the coming months. But if you can't wait, you can start self-hosting celld or workerd today.











