Earlier this month we held the third annual Opscode Community
Summit. There, we shared some lessons we’ve learned about publishing
and maintaining community cookbooks. For those that could not be
there, we’d like to share them with you as well.
Over the years, thoughts and attitudes about what cookbooks are and how
they should be treated have evolved. In the beginning, everyone wrote their
cookbooks from scratch to manage their infrastructure. This is the simplest
use case for Chef users, and remains the most popular. Every organization
is different, and comes with unique requirements, culture, history and
Early on, we introduced the Opscode Community site and encouraged our
community to share. This was a huge success, and changed the way people
thought about cookbooks. The community site has turned into a public
artifact repository, and currently serves 1198 cookbooks from thousands of
contributors all over the world.
Opscode has been maintaining a number of these cookbooks. One thing we’ve
discovered is that when they’re awesome, its usually because they fall into
one of three categories. First, they do the easy thing and behave the way
one would expect on a particular platform. Second, they’ve grown to
encompass many possible configuration scenarios across many different
platforms, usually bending some idioms along the way. Third, they provide
robust, easy to use libraries that expose custom resources and providers
that users can consume as primitives in their own recipes.
Most of the cookbooks that Opscode maintains have drifted towards the
category two. That’s great for a user that’s both an expert in Chef, as
well as the technology represented in a given cookbook. However, most users
do not fit that profile. The third scenario is more ideal.
As it turns out, we are not domain experts in all the technologies many of
our cookbooks represent. This means we’ve become a roadblock in the
development of many of these projects. Nobody likes roadblocks.
After careful consideration, we’ve decided that the best thing to do for
the cookbook ecosystem is to seek out trusted maintainers with domain
expertise in the technologies embodied in the various projects. This will
allow us to focus on building primitives; libraries, resources, providers,
and well engineered content for new Chef users.
We are still very much in the cookbook game. We’re just making the game
better. As we set many our cookbooks free, we’ll maintain contributor
status, but no longer play the role of primary maintainer. This
decentralization will ease the friction associated with contributing
patches, and allow each cookbook to reach its full potential.
We will be holding onto cookbooks that represent the core building blocks
that we use at our customer sites every day. These will serve as reference
cookbooks for others to use as examples. Sharpening our focus will help us
to make each one the best it can be.
2014 is going to be an exciting year for Chef.
May the Source be with you.