Contribuir con Magento 2

Hace unas semanas se cumplía un año de las iniciativas más interesantes que Magento está llevando a cabo de cara a la comunidad. Acercando el desarrollo de su plataforma hacia los desarrolladores y que sea incluso en algunos casos esté comandado por la propia comunidad.

En este post me gustaría cubrir los primeros pasos que debemos llevar a cabo para convertirnos en contributors de Magento 2.

Repositorios

Magento cuenta con varios repositorios donde podemos aportar código mediante Pull Requests, aquí os dejo una lista y su descripción:

  • Magento2: Repositorio central de la plataforma.
  • Devdocs: Repositorio de la documentación de la plataforma.
  • MSI: Repositorio de Multi Source Inventory (Iniciativa comandada por la comunidad)
  • Support 7.2: Repositorio donde se está dando soporte a PHP 7.2 a la plataforma.
  • MTF: Repositorio de Magento Testing Framework para poder llevar a cabo Tests funcionales.

Nos vamos a basar en el repositorio principal de la plataforma Magento 2 para explicar los siguientes pasos que deberemos dar para contribuir.

Fork de un repositorio

Este es el primer paso que deberemos llevar a cabo. Deberemos hacer lo siguiente:

  • Tener/crear una cuenta de Github.
  • Ir al repositorio de Magento 2.
  • Hacer click en el botón de Fork.
  • Activar Travis para nuestro fork.
  • Clonar el repositorio forkeado en nuestro entorno local.

En este punto ya tendremos el repositorio de Magento en nuestra máquina y podremos jugar con él para hacer mejoras o arreglar posibles bugs que tenga la plataforma.

Ramas principales del repositorio

En este momento existen 3 ramas principales desde la cual dependiendo del error deberemos partir a la hora de solucionar errores o incluir mejoras. Las ramas son las siguientes:

  • 2.1-develop
  • 2.2-develop
  • 2.3-develop

Estas ramas hacen referencia a las diferentes versiones que se están manteniendo en este Momento. Magento 2.1.x, 2.2.x y 2.3.x.

Resolución de errores

Una de las cosas que suelo hacer para saber que bugs puedo solucionar en la plataforma es revisar la pestaña de issues del repositorio para ver dónde puedo ayudar. En esta sección podemos ver los bugs que existen, además gracias a la plantilla creada por Magento, veremos la manera de reproducirlo de esta manera será más fácil identificar el problema, luego procederemos con la solución.

Dentro de esta sección veremos que existen unos labels que Magento añade a los issues para que sean identificados. Podéis ver su significado en su documentación.

Además de estos errores podéis haber encontrado vosotros uno, que no esté publicado. Mi recomendación es que creeis el Issue primero y posteriormente creeis un Pull Request.

Solución de errores

En este momento ya hemos partido de una de las ramas principales para solucionar un bug o para añadir una mejora en la plataforma, además nuestro fork deberá estar actualizar con el repositorio de Magento, aquí lo podéis ver en un video. Mi recomendación siempre en este punto es crear una rama diferente partiendo de la rama principal.

Qué debemos tener en cuenta:

  • Nuestro código debe seguir los Coding Standars de Magento 2.
  • El mensaje de los commits debe ser entendible y que explique resumidamente que hemos realizado.
  • Deberá estar acompañado de una descripción detallada para reproducir el problema y su resolución.
  • El código que hayamos añadido deberá ser cubierto por los tests en el caso de que fuera necesario.
  • Se deben pasar los tests unitarios, estáticos y de integración. En este caso lo podemos hacer de forma manual o podemos dejar que Travis los lance en nuestro repositorio antes de crear el Pull Request.

Publicación de un Pull Request

Una vez hemos seguido los pasos anteriores deberemos publicar el Pull Request en el repositorio de Magento. Para ello deberemos hacer lo siguiente:

  • Ves a tu repositorio de Github y haz click en la pestaña «Pull Requests»
  • Pulsar el botón de la derecha «New Pull Request»
  • Ahora deberemos hacer lo siguiente:
    • Seleccionar el repositorio base: «magento/magento2»
    • Seleccionar la rama principal: «2.2-develop», «2.1-develop», etc.
    • Seleccionar nuestro repositorio forkeado.
    • Seleccionar nuestra rama creada.
  • Pulsamos el botón «Create Pull Request»
  • Rellenaremos el título y la descripción que nos piden mediante plantilla.

Intentad en este caso que el título sea significativo para que sea más fácil identificar que resuelve este Pull Request. Por ejemplo un buen título podría ser:

#12625: Add Current Date to update_time Field for Block and Pages

En este caso se hace alusión a que estamos solucionando el Issue: 12625 y lo siguiente informamos que estamos realizando. En el caso de que sea un Backport o ForwardPort (Es adaptar tu código para versiones anteriores o nuevas versiones).

[Backport 2.2] #6460: Add option to keep Files in Rollback

Hacemos alusión a que es un backport de la resolución del issue #6460, lo que cumple el Pull Requests, además dentro de nuestro Pull Request, en la descripción, añadiremos un link al Pull Request del cual estamos haciendo BackPort o ForwardPort.

Procesamiento de Pull Request

El procesamiento de un Pull Request puede llevar un tiempo ya que se deben pasar una serie de tests, a parte de analizar el impacto del Pull Request en la plataforma, no debemos olvidar que este código se añadirá a la plataforma que es descargada y usada por millones de personas. Desde este punto de vista tenemos que tener en cuenta que el código deberá ser revisado a conciencia.

De esto se encarga el equipo de Magento Community Engineering además de un grupo de desarrolladores de la comunidad de Magento, podéis verlos aquí. Hace un tiempo nuestro amigo Miguel Balparda nos explicó un poco más sobre este proceso.

Conclusión

Espero que este post te anime a dar el paso para aportar código a la plataforma de Magento 2. Si te quedan dudas, siempre tienes la opción de comentarlo en el Slack que pone a disposición de los desarrolladores el equipo de Magento Community Engineering. Para acceder puedes enviar un email a: engcom[at]magento.com.

La resolución de estos errores/mejoras seguramente te ayude en futuros proyectos ya que si no están solucionados te tocará invertir unas cuantas horas para solucionarlos.

Publicado por Oscar Recio

Magento Lead Developer at Interactiv4, Passionate of eCommerce. Magento Certified Developer and Part-time speaker.