Blog

Cómo publicar un módulo de drupal

03/08/2014

Uno de los puntos fuertes de drupal es que hay que saber lo que haces para poder publicar un módulo en la web oficial drupal.org

 

En este post os explico en qué ha consistido el proceso que he tenido que pasar recientemente para que se me concedan permisos para publicar cualquier módulo, tema o distribución en drupal.org.

Lo primero fue escribir un módulo de drupal.

Estaba trabajando en un proyecto cuando surgió una casuística que me parecía bastante normal pero que no estaba contemplada. Era algo tan simple como que un usuario pueda despublicar sus propios comentarios sin que pueda editarlos o borrarlos. Después de un rato buscando no encontré ningún módulo que hiciera esa funcionalidad ni la tuviera en proyecto, así que como otras muchas veces me hice un módulo que añadiera esa posibilidad.

 

Mientras escribía el código se me pasó por la cabeza contribuirlo para que cualquiera lo pudiera usar, así que hice el código lo más genérico y reutilizable posible, esto no me llevó más tiempo, simplemente me obligó a estar un poco más atento. Usé el módulo en el proyecto que estaba construyendo, el cliente quedó contento y de forma paralela comencé el proceso que describo a continuación.

Hay que crear un proyecto sandbox

Cualquier usuario de drupal.org puede crear proyectos sandbox (caja de arena) no tengo muy claro de dónde viene el nombre, pero no puedo evitar pensar en un gato y que un sandbox es un sitio en el que poder hacer guarradas sin ensuciar nada fuera de ahí (esta es solo mi teoría).

 

Una vez tenemos el proyecto en sandbox hay que asegurarnos de que nuestro código tiene la suficiente calidad. Para ello hay que revisar estos puntos:

https://www.drupal.org/coding-standards

https://www.drupal.org/writing-secure-code

https://www.drupal.org/node/161085 (sobre la documentación)

 

Y solo una vez que tenemos claro que cumplimos todo eso, nos decidimos a crear una rama con nuestro proyecto que siga la nomenclatura estándariza, (noooo, no se puede hacer todo en master) y hacer push a nuestro sandbox.

 

Revisión automática online

Hay versiones online de las herramientas que nos aconsejan los artículos que he enlazado antes, a mi me ha ayudado bastante http://pareview.sh/. Ahí se puede poner poner el repositorio de tu proyecto y te pasa una validación de estándares.

 

Ahora que tienes tu módulo que valida los estándares y funciona, parece que todo está hecho, pues… no, ahora viene la parte divertida, sobre todo porque ya no depende de ti.

 

Publicar una issue en https://www.drupal.org/project/projectapplications

Este es un proyecto drupal, donde todos los que quieren poder publicar proyectos, tienen que pasar un pequeño «examen», la calidad del código es fundamental para que drupal sea la gran herramienta que es, por lo que no se puede dejar que cualquiera publique módulos sin saber si sabe lo que hace.

Aquí lo que se hace es publicar una issue, con un enlace a tu sandbox y pasa por varios ojos críticos antes de que te digan si eres apto para publicar módulos.

La issue suele tener uno de estos cuatro estados:

  • «needs work» tienes que solucionar algo del módulo.
  • «needs review» crees que ya está y estás esperando a que alguien te lo revise
  • «reviewed & tested by the community» alguien te lo ha revisado y le parece bien, pero todavía no te lo ha visto ningún experto de los que te pueden dar permisos para publicar proyectos.
  • «fixed» cuando ves esto es que ya ha terminado todo y puedes publicar módulos.

Esperar arreglar y esperar

Lo más normal es que cuando tu módulo pasa por otros ojos, te saquen los colores y hay que tomárselo bien. Alguien está dedicando su tiempo a decirte en qué puedes mejorar y normalmente tiene razón. De manera que la issue cambia de estado a «needs work», tu lo arreglas y la pones en «needs review» y otra vez pasa a «needs work» … son cambios que no llevan más de 10 minutos, pero cada vez hay que esperar.

Usar la cola de prioridad y revisar proyectos de otros.

Creo que he aprendido más revisando proyectos de otros que con las revisiones que han hecho al mío. Si quieres que la cosa vaya más rápido hay una cola de prioridad (solo tienes que ponerle una etiqueta a la issue). Eso si, cada vez que necesites una revisión tienes que revisar manualmente 3 proyectos de otras personas que estén en tu misma situación.

Tengo una intención firme de seguir revisando proyectos aunque ya no lo necesite para publicar mis módulos porque he aprendido bastante con esta actividad.

Cuando te dan el OK

Un sábado por la tarde, como si tal cosa te puede llegar un mail en el que se te comunica que tu proyecto es apto y por lo tanto tu puedes pasar proyectos de sandbox a proyectos completos.

 

Es un momento de gran satisfacción personal, ahora solo queda ir al sandbox y convertirlo con 3 clicks en un proyecto completo. Además hay que poner una etiqueta en el repositorio GIT para indicarle a drupal.org que esa es una versión del proyecto. (tarda un poco en tenerlo en cuenta, así que paciencia).

 

En resumen

En mi caso todo el proceso ha durado dos semanas y media pero he tenido bastante suerte por que los fallos se arreglaban en unos minutos y creo que se han portado bastante bien con las revisiones. Además he contado con la ayuda de @keopx que me ha animado y ayudado mucho, porque hace poco pasó por lo mismo y además porque es un buen tío.

He ido sumando todo el tiempo de trabajo dedicado y contando el tiempo de escribir el módulo (un par de horas, porque era bastante sencillo) y todas las revisiones a proyectos de otros (6 en total) así como los arreglos que he tenido que hacer no ha llegado a 8 horas de trabajo. Eso si, he pasado 2 semanas muy pendiente del mail, esperando notificaciones del cambio de estado.

 

Aquí os dejo un enlace a la issue por si queréis ver de primera mano la historia de la revisión: https://www.drupal.org/node/2303363

 

Usad los comentarios del post, si tenéis alguna duda o queréis añadir algo.

 

😀

También te puede gustar…

Caso de éxito: Fronda

Caso de éxito: Fronda

Fronda, es una cadena de centros de jardinería que cuenta con una tienda online que opera por toda España con la que hemos colaborado.

ASPgems icon
C/ Sextante, 9
28023 Madrid,
España

Hablemos.

A %d blogueros les gusta esto: