Drupaldelphia 2014 had a bunch of great sessions this year, some of which were presented by our own Zivtech team members. Howard Tyson presented How Cultivating a DevOps Culture will Raise your Team to the Next Level, a beginner level session based around building a team that has both development skills and the ability to learn more about the tools that drive team infrastructure. Jody Hamilton presented an intermediate level Mission Bike Case Study session, along with Matt Cheney, the owner of Pantheon and Mission Bicycle. Matt also served as project lead on the Mission Bicycle project. Their session showed how the project was accomplished using minimal custom code. They also showed how custom products within Drupal Commerce were built, and how PHP and jQuery were used on the site.
There were a fairly wide variety of sessions this year, but I found that the resounding message of Drupaldelphia 2014 was “Automation”.
I was able to attend a few sessions in the afternoon that I thought would be educational for me based on what we are doing at Zivtech with automation tools like Jenkins, Puppet, and Vagrant. While most of the tools we use were mentioned, it was also nice to see some new tools that we aren’t using yet--tools that could continue to help automate our development processes and reduce the amount of possible human error involved in deployment processes. One of the sessions had a great list that showed the approximate amount steps that should happen each time new code is deployed from one development environment to the next. We, as developers, should always be figuring out ways to reduce the actual amount of steps and remove the repetitive steps with automation tools.
The first session I attended was Automating distros and avoiding post distro "features hell", an intermediate level session presented by Brian Ollendyke. This session introduced me to a new tool for drush that I didn't know existed. It’s only been published for 2 months, and it’s called Drush Recipes. It provides a set of drush commands that allows you to create a .drecipe file which will allow you to call the Drush Recipe and build out an entire site with a single command. The best part about this is that you can completely build a site, even using a specific installation profile to start with, and then run a specific command to create a .drecipe file that will be able to recreate the whole site with a single command. Inside the .drecipe file are an array of drush commands that run in a big chain as the Drush Recipe. Overall I was amazed at the power of drush, and we will definitely be looking into this module to possibly work it into our automation workflows at Zivtech. There are a few Drush Recipes already created by btopro over at his repository site, Drush.recipes. You can even create your own Drush Recipes style webservice with a simple .drecipe file provided on the repository. Time to get cooking with Drush Recipes!
The second session I attended was Automate All the Things, an intermediate level session presented by William Hurley. This session reiterated on tools that we have been using and are starting to use more, such as Jenkins for hardened testing. It also touched on some open source projects that we have been testing in small batches, but have not deployed anything major with yet. Those projects included Grunt and Capistrano. We have been using Grunt on some dev lunch test projects we have been working on, but I don’t know if we have used Capistrano much. I definitely want to learn more about it, as it seems like a great compliment to Jenkins and a better solution for actually deploying Jenkins tested code than relying on Jenkins to do the job. Overall William hit on points that are good to know, and that are helping these best practices become the industry standard in the Drupal world as more and more Drupal camps and Drupalcons take place. That’s good for all of us.
For my final session of the day, I ended up going to the EntityForm session presented by tedbow. The EntityForm session was pretty interesting, as entityform takes a true entity style approach to a webform rather than just a special content type with some fields. This allows you to pull in just about any type of other entities fields into the form and include that data for display. One of the examples used was to pick a location on a map from within a survey. This was a great example, as it showed just how easy it was to pull in an openlayers map into an EntityForm and then use the map to actually allow people to enter data from that field into the form just like you would on a regular webform from the webform project. This brings up some additional complexities for clients though, so in most cases it is probably best to stick with webform if the client themselves needs to create webforms often. It also means that very large forms will take up more tables in the database, as each EntifyForm field adds a new table table in the database. It looks like EntityForm has some great form functionality that I could see us using in the right situations here at Zivtech. It’s definitely going into my personal module toolbox.
I would like to thank Zivtech for allowing their developers to go to sessions at Drupaldelphia for professional development. This year’s sessions opened my eyes, and hopefully the eyes of others on the team to some great new projects that we can use to help automate more of what we do, become even more efficient at what we do for our clients, and even help our own internal projects. I look forward to putting some of these new tools like Drush Recipes and Capistrano to work in our shop and see what we can cook up to make our workflows even better. The more we can automate in our workflows, the more actual development work we can do with our time. I think anyone on our team can get used to that. Thanks Drupaldelphia, see you next year!