Deploying application code with Chef has always been a source of many debates. Chef is great for managing so many other things, it is only natural to want to keep everything under one roof. The application cookbooks (application, application_ruby, application_python, etc) were historically the first stop in this journey for many people. The promise of these cookbooks has always been to provide a safe, sane, best-practices compliant deployment option for major web application frameworks like Ruby on Rails and Django. This is always a moving target, however, and the cookbooks are in need of some major upgrades to match the current standards from their respective communities. Additionally, the code at the heart of the system has not aged well, and the Chef community has found better ways of doing things and writing code.
There are four cookbooks I would like to improve or rework as part of this project:
For the application cookbook, I would like to remove the internal dependency on the deploy resource, building out a more flexible code deployment layer that can draw from not only Git and Subversion, but also artifact repositories like Artifactory and Apt, plain tarballs, and be extensible for users to add new transports as new tools emerge.
The application_ruby and application_python cookbooks will need to be updated to match the improved application framework, as well as ensuring they are in line with the latest standards from their respective communities.
There are several community cookbooks to support Node JS, I would like to bring it under the tent as an officially supported option, as well as ensuring it handles all the common deployment options for Node.
The aim of this campaign is to fund one month of development time, split up as one week on each of the four cookbooks. The goal of $8000 is based on the Stripe Open Source Retreat grant, adjusted for the ~10% fees between Kickstarter and the credit card processors. All development will happen in the open on GitHub so all backers can follow along with development and provide feedback on the new design.
Hi, I'm Noah. You might also know me as coderanger from IRC or the Chef mailing lists. I've been active in the Chef community for about four years now, and have been at the forefront of evolving standards and practices for writing high-quality, flexible cookbooks for much of that. I currently work as a consultant, teaching people how to use Chef more effectively. I'm also a web developer, having spent substantial time working on applications in Django, Rails, and Express.
Several years ago I led the charge to upgrade the application cookbook to use LWRPs, and have helped with maintaining them since them in addition to several cookbooks related to Python (python, gunicorn). I also designed the Chef RFC process and act as an RFC editor. I help out with a lot of Chef question on IRC, StackOverflow, and the mailing list.
Funding open source work has always been a difficult proposition. I've always been a strong proponent of the Chef community and ecosystem, so it seemed only natural to ask the community to help with this development effort.
The initial goal is to fund one month of work, and additional funds raised will mean I can work on Chef open source projects for longer. Several other cookbooks I help maintain could use some extra love, such as the python, supervisor, and gunicorn cookbooks. If we reach 300% funding ($24,000), I will work with a tech writer to get better documentation and tutorials for deploying applications with Chef.
This project is not endorsed or associated with Chef Software, Inc. All opinions expressed and software created are my own.
Risks and challenges
As with all software projects, unexpected issues are always a risk. Fortunately I feel confident that I can overcome any technical issues. The biggest risk factor is that the improved design will not be flexible enough for enough users. I hope to keep this from happening by ensuring the process is as transparent as possible and ensuring everyone has a voice in the design.Learn about accountability on Kickstarter
- (30 days)