'Boring' Docker emphasizes stability over new features

Docker will spin off the containerd core component as an independently governed project to promote a more open and predictable container infrastructure

'Boring' Docker to emphasize stability over new features
Minda Haas Kuhlmann (Creative Commons BY or BY-SA)

Remember all the talk of a ”boring” Docker fork, one that emphasizes reliability and sustainability over an endless treadmill of new features? Evidently Docker has also been contemplating such a thing—and now it's delivering.

Docker is offering containerd, a core piece of Docker Engine, as the starting point for such a project. The idea is to take containerd—which provides a number of fundamental Docker services—and place it under the auspices of an as-yet-unspecified community project so that it can become a more “open, stable and extensible base for building non-Docker products and container solutions.”

Boring is good

Containerd is meant to provide the absolute minimum of pieces needed to create a container runtime—the ability to download, store, and execute container images, as well as connect to storage and networking. What’s missing will be the actual implementations of higher-order functions, such as networking or storage drivers, but the hooks for them are all there.

By making containerd available, the idea is to provide the functionality that Docker relies on the most, without any Docker-specific abstractions or architectural assumptions on top of it.

“There’s been persistent demands from our open source community for what they call ‘boring’ infrastructure,” said Docker founder and CTO Solomon Hykes in a phone call. “There’s been a common request for stability over features—stable interfaces, stable implementation.”

Enterprise users love having a complete environment, constantly updated with new features, that they can standardize on to deploy containers. But there’s also demand for making the platform more modular, for the sake of customization and so “a broader ecosystem can use these components independently of each other, either to customize the Docker platform or build a completely different platform.”

Give it away now

Hykes sees parallels to how other companies have spun off internally developed technologies as open source projects that have, in turn, gone on to become the basis for other breakthroughs. Google, for instance, provided Chromium, which was the core for its Chrome browser. It is now the foundation for a number of other projects based on Chromium.

What might people build with containerd? “The most common example “is something that is less portable but more tightly integrated to an underlying host platform," said Hykes. "The big focus of Docker is independence and portability in distributed systems, and so a big conflict in a lot of technical conversations has been around features, functionality that breaks portability. But sometimes you just don’t care about portability.”

Possibilities might include, for instance, building a container solution that runs on custom hardware or an embedded platform.

Who’s gonna get it and when?

Docker has been working for some time—years, by Hykes’ estimation—to find the right way to create a “boring” Docker component spinoff. He cited previous component spinoffs, like libcontainer or runC, as part of this process, but those pieces were all either too much or too little.

One of the ironies in the timing of the containerd announcement is that Docker on Windows arrived only after major internal changes to Windows were made to allow it to be ported. If containerd had spun off earlier, Docker for Windows might have been built around a heavily customized version instead. That said, one of the goals in porting Docker to Windows was to allow as much of Docker's original source code as possible to be used as-is.

While Docker will continue to use containerd, it will become an independent piece with its own governance and be managed with “unambiguous support of open standards.” Hykes emphasized that containerd will implement the full specification for containers as described by the Open Container Initiative (OCI) earlier this year.

What’s not yet clear is which community will assume control of the containerd project or how much influence Docker will have on the community; the company is likely to draw criticism if it does not put containerd far enough away from Docker for it to be considered truly independent.

One possibility is that the community will be the OCI. Docker donated the runC project to the organization back when it was still named the Open Container Project. (Docker is an OCI member, along with many others, including competitors like CoreOS.)

Hykes isn’t naming names. “We’re still in the process of evaluating which [community] is the best,” although he admits there is a timetable for the decision.