Discovering the best tools, and learning how to use them effectively, takes time and effort. While that effort may be duly rewarded, spending weeks looking for and trying to configure software can be frustrating. This chapter contains the wisdom of Drupal developers past and present. We share what we have learned, list and evaluate favorite software and best practices, and describe how to set up and use these tools to advance Drupal.
If like me, you have recently started a Drupal project within an IT department and Drupal is relatively new to the team, or if they have not yet made a heavy investment in Open Source yet, then you may find yourselves faced with a multitude of possible ways to develop and deploy, all of which will require time and effort to setup. John uses a Mac, Ed is always on Windows, Pete is the Drupal geek who only uses Ubuntu, he is a native LAMP stack freak. And now they have to collaborate on their first Drupal site. How to build a dev environment everyone can live with? How to make it available on their different laptops?
Then when Phase 2 of the project starts, the Responsive design phase, the theming phase, courtesy of Sass and Compass via RubyGems is the environment going to be able to handle these extra tools? And what if the boss decides full text search on the site is de rigueur? Apache Solr courtesy of Tomcat server.. all needing to be installed on the dev LAMP stack in addition to the standard tools? Phase 2 is when Vagrant comes into its own.
Okay, when the dev environment is decided and the plan sorted, what about deploying the code as it takes shape, from their laptops onto testing boxes while ensuring the repositories are managed? How to ensure everyone has the same Drupal tools, like Git and Drush, available to them so they can swap notes and share those sweet Drush commands?...
Everyone is looking for the killer tool set, the killer dev environment, the ultimate out-of-the-box solution. There are some killer tools out there: VirtualBox, NFS, SSH, Rsync, Drush and Git, and then there is Vagrant. For most teams it becomes a question of pick and mix. If you can arrive quickly at an agreement on what you are going to use and what you are NOT going to use, it can make a project move a lot quicker. My advice is if you are working on a professional project, you should look at using Vagrant in addition to VirtualBox.
There are some really good VM's you can drop straight into the VirtualBox, DrupalPro for example. However these will only take you so far if you are operating in a collaborative professional context. Vagrant takes the VirtualBox to a new level and provides the extensibility and power you need. There are many well-documented, actively-maintained projects (like VDD (Vagrant Drupal Development), Drupal VM, and Vlad, that are great starting points (a more exhaustive list can be found here). A chance for the team to get its feet wet with Vagrant and Drupal, including Drupal 8!
Everyone is encouraged to add their experiences to this chapter.