Facebook has open sourced some of its community cookbooks to allow a wider world of software application developers to consider using Facebook's Chef framework.
Facebook decided to release these findings after designing what it calls (in somewhat grandiose terms) "a new paradigm" that lets a software engineer make any change he/she needs, to any systems he/she owns, via simple data-driven APIs (while also scaling to Facebook's huge infrastructure and minimizing the size of the team that would have to own the system).
Production engineer at Facebook Phil Dibowitz says that the team designed this new paradigm and built a framework to bring it to life. At the core of that framework was (and still is) Chef.
Dibowitz says that the way the team ended up using Chef is pretty unique and that the team did not initially consider releasing the cookbooks because they believed them to be "too Facebook-specific", but that a central theme in talks (given on this work) was on cookbook design, so people started asking for them.
Writing on code.facebook.com he says, "In looking at how we built them, we realized that we had developed a different way of writing community-style cookbooks that succeeded — at least within Facebook — at doing what community cookbooks had failed to do outside of Facebook. And we started to wonder: Could this approach be applied not just to other organizations wanting to leverage our model, but also to writing community cookbooks the entire world can use?"
Postulating further Dibowitz highlights the truth in the suggestion that those of us who have used community cookbooks in the past know that they tend to fall into one of two categories: a) they don't offer enough control, or b) they are difficult or cumbersome to use.
"We think this is due to a pattern common to most community cookbooks. They define a separate element for each thing you can set. So if the cookbook has, say, three settings for a configuration file, that's very limiting. But if many settings are available, it is hard to know which of the perhaps hundreds of settings need your attention and it can end up more complicated than the configuration itself," said Dibowitz.
The Facebook team is working because it believes there's a way to do something more generic that provides more flexibility with less complication.