Web development can be complicated. When it comes to contributing to Drupal, either on one’s own time or as part of a job, one of the biggest problems beginners have is getting all of the tools working correctly. It can also be a source of frustration to people with plenty of experience too - maybe they would prefer to put time into writing witty blog posts, designing the perfect rounded corner, or throwing snowballs with their children, rather than dealing with server configuration haiku.
AMPing up web development
A typical website system requires an operating system, e.g. Linux is good for a server’s OS, a web server program, e.g. Apache HTTP Server or nginx, a database, e.g. MySQL, MariaDB or PostgreSQL, and a programming language for gluing it all together, like PHP, Python, Ruby, etc. When these collections of software started gaining popularity during the early 2000’s, by far the most popular combination was Linux, Apache HTTP Server, MySQL and PHP, which became known as a “LAMP stack”.
While Drupal requires the PHP part of the “LAMP” equation, the other parts can be swapped out for alternatives. The most commonly replaced element is the operating system - not everyone wants to run Linux on their computer just to work with web site software. This then results in “WAMP” to describe running the tools on Windows, “MAMP” for running them on a Mac, etc.
To simplify describing these different possibilities it is common to remove the first letter, resulting in the more general phrase “AMP stack” or *AMP stack (the asterisk is a wildcard, i.e. it fills in for ”L”, “W”, “M” or whatever).
As these systems are designed to be flexible, each component will have its own settings files that need to be configured *just so* in order for them to work correctly. Each program will have its own collection of configuration files, each file may (and probably will) have a different syntax, a different location, a different set of additional shared library files that also need to be in the right directory with the right filename, and each release of the tools can change these in obscure ways. Working through the manual configuration of all of these can take a good deal of time, especially when one small mistake can, and has, ruined many a good week for many, many people. Clearly, the amount of configuration necessary to get everything running together in a cohesive manner can be daunting for someone with extensive server configuration experience, never mind a beginner.
Thankfully many people realized the need to simplify and streamline this motley crew and put together packaged systems that contained all of the necessary components to run an AMP stack on someone’s existing computer. There are a number of suitable packages available today, popular ones include WampServer for Windows, MAMP for OSX, and, thankfully, all Linux distributions have all of the tools readily available through their system software manager already.
Taking this one step further, Mediacurrent’s partner Acquia built their own AMP stack, called Acquia Dev Desktop that provides extra gravy on top of the average AMP meal and is well worth using, for beginners and seasoned developers alike.
But what about Docker, DrupalVM, etc?
A step beyond the easily installable AMP stack is something like Docker or DrupalVM. These don’t just install a web server, database and programming language on a computer, they install a whole virtual computer inside another one, system kernel and all! These can be a great way of simplifying the steps to configure additional software, e.g. reverse-proxy caching using Varnish, custom search engine applications like Apache Solr, etc. They can also provide a (close-to) 1:1 copy of a production website’s operating system, down to the very same shared library revisions and everything, with much less effort than ordering some hardware from Cheap Servers ‘R Us.
However, there’s currently more effort required to install and manage these, including what can be hundreds of megabytes of operating system installation files that need to be downloaded per project, in addition to the website project’s actual codebase, database and files. Not everyone has the bandwidth to deal with downloading such large installation files, or disk space for another 5gb virtual operating system installation on their computer.
There can also be problems running several virtual systems at once - it might be necessary to specifically stop one virtual machine before starting up another. This continues to add more hassle to working on a project than many may wish to deal with.
Lastly, while there are many great options available to do this. At the time of writing there are several competing standards available with no one standard achieving significantly more support in the Drupal community than others. This can leave a person needing to be familiar using several web platforms on their computer as different website projects use different tools, which can quickly reduce the benefits of standardizing the tools.
It is for these reasons that this article will focus on simpler tools.
9 Reasons to use Dev Desktop
There are several reasons why Dev Desktop makes a good starting point for contributing to Drupal:
- The package runs on Windows *and* Mac OS X. Given that most companies, and people, use one of these operating systems for their day-to-day work (and evening work, and weekend work, and other projects), having the same software available for both can greatly simplify an organization’s need to standardize on a single software title for both platforms. This simplifies an organization’s toolset, ensures that team members can help and learn from each other, and save time from having to wait for “The IT Crew” to show which buttons to click; all three will save a company’s staff time, thus making them more productive overall.
- The interface hides the majority of the complexities that most don’t need to deal with - it just works! All the complex pieces are still available if needed, but they can be safely ignored most of the time - there’s just one program visible to the computer’s user, and it takes care of the detail.
- When Dev Desktop isn’t being used it can be turned off, which turns off the Apache and MySQL server programs. This saves memory, processing power, and battery life on the computer.
- It makes it super easy to spin up fresh copies of Drupal core or different distributions to test out modules, themes and patches in environments isolated from other sites that might be installed locally.
- It takes out the pain of setting up the database and its access permissions for each local Drupal install, which is always a tricky step for beginners.
- It comes with several versions of PHP and each site installed on the computer can be set up to use a different version, and then changed to a different version with just a few mouse clicks! This takes all of the pain out of testing something with both old and new releases of PHP.
- It is rather popular amongst Drupalists of all skill levels, ensuring that help might not be too far away if and when needed.
- The software can connect to an Acquia web hosting “cloud” account to download entire copies of production websites with a few clicks, and then changes can be uploaded again. With button clicks. Magic!
- Dev Desktop isn’t limited to working with sites that are hosted with Acquia, so it can be used to work on sites hosted on Pantheon, Platform.sh, CMS Farm, etc, in fact any web hosting platform. Obviously these services won’t have the tight integration that Acquia’s own has, but it won’t prevent them from being used.
Give it a try
Now that I’ve explained what AMP stacks are, and what Dev Desktop is, give it a try.
The next article in this series will explain how to set up Acquia Dev Desktop so it can be used to contribute to Drupal core and contrib issues.