Presentamos Humpback
Un ambiente de desarrollo para Drupal verdaderamente amigable con los desarrolladores.
You can read this post in english.
Durante mucho tiempo los desarrolladores usaban sus propias máquinas para instalar todo el software necesario para trabajar. Luego, las máquinas virtuales se convirtieron en el entorno default para el mismo propósito y aparecieron herramientas para administrarlas, tales como Vagrant. De hecho, hay proyectos geniales que utilizan Vagrant y algún provisioner para crear ambientes de desarrollo de forma muy fácil. Un ejemplo de esto es Drupal VM.
En la actualidad Docker es la herramienta de moda. Permite crear contenedores en segundos, lo cual hace que muchas personas alrededor del mundo lo estén usando para desarrollar localmente; incluso existen herramientas que implementan Docker para Drupal, por ejemplo:
- Lando
- Docksal
- Ddev
Queríamos una herramienta simple de usar, fácil de personalizar y que nos permitiera integrar otras herramientas que usamos normalmente en nuestro flujo de desarrollo. Es así como creamos Humpback.
Humpback tiene dos componentes:
- Humpback (ambiente): Es la configuración de los contenedores y algunos comandos para interactuar con ellos. Hay una carpeta para colocar el Drupal (web). Eso es todo. (Más adelante veremos los componentes de dicho ambiente).
- Generator Humpback (Yeoman generator): Aquí es donde la magia pasa. Usando npm y el corazón de oro de Yeoman, con sólo 3 comandos, se puede tener una carpeta con la configuración de los contenedores, los archivos necesarios para el Drupal, integración con CircleCI, integración con Pantheon, algunas tareas de gulp para revisar coding standards e incluso, está listo para crear tests de behat.
Para empezar a usarlo, solamente se debe instalar yeoman y nuestro generador corriendo este comando: npm install -g yo generator-humpback
y luego correr el generador: yo humpback
. Una vez hecho eso, se puede levantar el ambiente local (unos pocos comandos y un par de minutos o segundos) y ¡ya estarás listo para trabajar en tu proyecto!
¿Qué contiene?
Se puede ver información más técnica y detallada al leer el archivo USAGE.md, sin embargo, aquí una pequeña lista de las cosas más tuanis:
- Nginx, php, mariadb: Obviamente, se necesita para trabajar en Drupal.
- Solr: Listo y configurado para usarlo en el proyecto si se necesita.
- Drush 9, drupal console, composer, node, y otras herramientas de línea de comandos: para hacerse la vida más fácil.
- Varnish: Permite probar el sitio en un ambiente más realista.
- Mailhog: Para capturar el email saliente en una interfaz amigable.
- Selenium-VNC Server: Para correr tests usando selenium y ver la magia pasar en tiempo real.
- Ngrok: Para compartir el ambiente local hacia internet.
- Otras herramientas para ser un desarrollador más feliz.
El valor para el negocio
Aparte de todo lo técnico previamente mencionado, tener un buen ambiente de desarrollo tiene otras ventajas desde el punto de vista del negocio:
- Menos tiempo configurando lo necesario para iniciar un proyecto.
- Menos tiempo de onboarding al agregar desarrolladores a un proyecto existente.
- Tener herramientas que analicen estándares de código y no tener el código del núcleo de Drupal y los módulos contribuidos en el repo permite realizar revisiones de código más fácil y rápidas y a la vez produce código de mayor calidad.
¿Puedo usarlo en un proyecto existente?
No importa cómo se arme el docroot del proyecto, siempre se puede usar (y adaptar de ser necesario) el Ambiente Humpback. Es posible que no se pueda aprovechar todas las otras características que se obtienen con el generador, pero si se quiere se podrían integrar manualmente al proyecto. En todo caso, actualizar el ambiente desarrollo a uno usando docker es una gran mejora para el proyecto que no requiere de mucho esfuerzo.
TL;DR
Tener un buen ambiente de desarrollo del cual no se tenga que preocupar es el inicio de un proyecto exitoso y esa es la razón de ser de Humpback. Dele una oportunidad y no dude en contactarnos si necesita ayuda con algo.