The future of Vagrant Berkshelf

Berkshelf, Vagrant Berkshelf Posted on

The Vagrant Berkshelf plugin has been rewritten to shell out to the berks CLI packaged with the ChefDK.

There seems to be some confusion about this post. We are deprecating vagrant-berkshelf, a plugin for integration Berkshelf with Vagrant. We are not depecating Berkshelf by any means.

After some internal discussions and conversations with the community, we are now looking for a new maintainer for the vagrant-berkshelf plugin. If you are interested in being part of the Berkshelf core team and managing the vagrant-berkshelf plugin, please contact me or anyone on the Berkshelf core team listed at the end of this blog post.

It was a cool Friday evening on March 15th, 2013 when Jamie Winsor began hacking on a project that would forever change the way we think about Chef cookbook development. Berkshelf was quickly gaining popularity, and its ideologies was already changing the landscape of the Chef ecosystem, giving users the ability to shy away from their monolithic Chef repositories and treat cookbooks as software projects. But something was still missing...

There was an incredible need for a tool that would allow a Chef user to quickly converge a series of Chef cookbooks on a virtual machine. Berkshelf was already able to quickly resolve multiple cookbook dependencies, but there was no mechanism for bringing them together on a single machine for convergence with Chef Solo. Thus, Berkshelf Vagrant (later renamed to Vagrant Berkshelf) was born, and it was nothing short of awesome. The plugin hooked into the Vagrant lifecycle commands, making it incredibly easy for new users to get started. It would automatically parse and install all the cookbook dependencies in your Berksfile and copy them onto the target virtual machine. You could now distribute an entire infrastructure with two files - a Berksfile and a Vagranfile. So what happened?

Around mid-2013, Mitchell Hashimoto - the primary author of Vagrant - made the decision to stop distributing Vagrant as a Ruby gem. This decision dramatically hurt the development of the Vagrant Berkshelf project and many other Vagrant-based plugins. No longer could we easily test against different versions of Vagrant. With each new release, something in Vagrant Berkshelf was broken. We had no easy way to test or verify changes in CI. With so many moving parts, Vagrant Berkshelf became incredibly fragile; even the most subtle change in a transitive dependency would break the plugin, cascading as a flurry of issues on GitHub. The tool was placed at the bottom of the roadmap as Berkshelf began to grow in popularity. We chose to dedicate resources where they were most needed - on Berkshelf core.

Since that evening in March, the Chef community tooling has matured significantly. Fletcher Nichol began hacking on Test Kitchen. John Keiser began working on Chef Zero. As the Chef tooling ecosystem began to develop, the need for Vagrant Berkshelf decreased. These tools, acting in tandem, solve the problem that Jamie addressed one year ago.

Many organizations are moving away from Vagrant Berkshelf because of the difficulties it exposes. It is cumbersome to upgrade, install, and share across a team. There exists a better solution for provisioning virtual machines with Chef - Test Kitchen. Test Kitchen still leverages the amazing resolving power of Berkshelf under the covers, so switching is easier than ever. By switching to Test Kitchen, you are also no longer tied to Vagrant. You can use Berkshelf with your favorite cloud provider or bare metal!

So it is with an incredibly heavy heart that I announce the official deprecation process of Vagrant Berkshelf. It has been an amazing Journey and we are all very proud to have been by your side. But a new era is arising. At its creation, Vagrant Berkshelf solved a crucial problem that affected thousands in the community. Fortunately, the majority of these problems are now solved thanks to the dedicated work of the awesome Chefs. Reflecting on Berkshelf's mission statement - "a Chef cookbook dependency manager and generator" - the team unanimously agreed that Vagrant Berkshelf is outside the purview of Berkshelf. Until we work out an official deprecation schedule, the team will continue to be responsive to issues and pull requests. It is likely that Vagrant Berkshelf will continue to be supported until the release of Berkshelf 4.

This is a transitionary period and it must "feel right" for the team and the community. We welcome any feedback or concerns.

Your Berkshelf core team:

About Seth

Seth Vargo is an engineer at Google. Previously he worked at HashiCorp, Chef Software, CustomInk, and some Pittsburgh-based startups. He is the author of Learning Chef and is passionate about reducing inequality in technology. When he is not writing, working on open source, teaching, or speaking at conferences, Seth advises non-profits.