Meet Humpback
A developer-friendly environment for Drupal development
También podés leer este post en español.
During so much time developers used local machines to install all necessary software to create whatever they were working on. Later, virtual machines were the way to go and we have seen great software like Vagrant to handle them. Actually, there are some great projects for different purposes that use Vagrant and some provisioners to create a development environment in a really easy way. One example of this is the awesome Drupal VM.
Nowadays, Docker is the new cool kid on the block. This is an awesome tool that allows you to create containers in seconds. Given its greatness, people is using it around the world to develop locally. Actually, there are some tools that implement Docker with Drupal, for example:
- Lando (formerly Kalabox)
- Docksal
- Ddev
We wanted a tool that was simple to use, easy to customize and that allow as to integrate some other tools that we normally use in our development workflow. So, we created Humpback.
Humpback is a set of 2 components:
- Humpback (environment): This is the containers configuration and some commands to interact with the containers. There's a folder to place the drupal docroot (web). That's all (We'll see the environment components later on this post).
- Generator Humpback (Yeoman generator): Here is where the real magic happens. Using npm and the heart of gold Yeoman, with only 3 commands you can have a folder where you have the containers configuration, the drupal necessary files and folders, CircleCI integration, Pantheon integration, some gulp tasks to check coding standards and it's ready to create behat tests.
With that in mind, to start using it, you should only install yeoman and the generator by running npm install -g yo generator-humpback
and then run the generator: yo humpback
. Once done that, you can start creating your local environment (a few commands and a couple of minutes or seconds) and then you'll be ready to work on your project!
What does it contain?
You can access a more detailed and technical information by reading USAGE.md, however, here's a rough list of the coolest stuff:
- Nginx, php, mariadb: Obviously, you need it to develop Drupal.
- Solr: It's configured out-of-the-box so that you can start using it.
- Drush 9, drupal console, composer, node, and other cli tools: to make your life easier.
- Varnish: To test things in a more realistic environment.
- Mailhog: To capture the outgoing email in a nice interface.
- Selenium-VNC Server: To run tests using selenium and actually seeing the magic happening.
- Ngrok: To share your local environment over the internet.
- Some other stuff to make you a happier developer.
Business value
Besides all the technical stuff previously explained, having a great development environment gives you some other benefits:
- Less time to setup things for a new project.
- Less time to onboard developers to existing projects.
- Having tools to analyze coding standards and eliminating core and contrib code makes code reviews easier and faster and produces higher quality code.
Can I use it on an existing project?
It doesn't matter how you build your project, you can always use (and adapt if necessary) the Humpback environment. Maybe you can't take advantage of all the other cool features, but you can always integrate them manually to your project if you want. However, upgrading your environment to use a docker setup is a big improvement that can be considered a low-hanging fruit.
TL;DR
Having a good development environment that you don't need to worry about is the beginning for a successful project and that's what Humpback is meant to do. Give it a try and feel free to reach to us if you need help with something.