Descontinuando módulos y paquetes en PHP de la manera correcta

Cómo descontinuar un paquete PHP.

Desde que Composer se convirtió en el estándar de facto y GitHub nos permitió mantener código online sin esfuerzo, la cantidad de paquetes y módulos sin mantenimiento de ningún tipo tuvo un crecimiento exponencial.

Está bueno recordar que además de programar para resolver un problema específico, programamos para otros programadores. O al menos deberíamos hacerlo. O al menos deberíamos intentarlo. (Quizás hasta nos podríamos conformar con que parezca que…)

Muchas veces nos habrá sucedido (o nos va a suceder) que algún módulo que compartimos y supimos mantener, hoy ya no tenga sentido. Es entonces que el módulo en cuestión puede quedar abandonado, sin ningún tipo de mantenimiento o corrección, puede que sea útil, o no; pero nadie lo sabe hasta que lo prueba.

Llegado ese punto podemos hacer 3 cosas (podemos hacer muchas, pero vamos a quedarnos con la idea de 3 cosas con respecto al módulo).

La primera y más fácil, hacer la plancha. Si funciona, bien. Si no funciona, no fue mi tiempo el que se perdió.

La segunda opción, quizás algo más radical, pero que en el fondo (muy en el fondo) demuestra cierta empatía con el prójimo: borrar repositorio de GitHub y paquete de Packagist.

La tercera opción es descontinuar el paquete de forma prolija y ordenada, para que si alguien lo instala, pueda saber en ese momento que el paquete ya no tendrá soporte alguno.

Voy a usar como ejemplo el módulo https://github.com/barbanet/magento2-argentinaregions que, así como otros módulos, se forkeó en Mugar y se lo estuvo mejorando bajo ese ámbito.

Lo primero que deberíamos hacer es archivar el repositorio en GitHub. Esto convierte al repositorio en uno de sólo lectura.

Entonces, el primer paso, es ir a Settings -> Options y luego bajar hasta la Danger Zone.

Danger Zone en las opciones de configuración de un repositorio en GitHub,

Allí nos interesará:

Opción de archivado de repositorio en GitHub.

Al hacer click sobre el botón, aparecerá el cuadro que nos alerta sobre las implicancias de la acción (si nos equivocamos, deshacer la acción es muy sencillo y no tiene consecuencias).

Confirmación de archivado de repositorio en GitHub.

Ingresamos el nombre del repositorio.

Confirmación de archivado de repositorio en GitHub.

Y confirmamos la acción.

Ahora en nuestro repositorio aparecerá una leyenda de forma permanente.

El repositorio archivado ahora es de Sólo lectura.

Nuestro repositorio es de sólo lectura. Primera parte resuelta.

Ahora tenemos que ir a nuestra cuenta en Packagist y buscar el paquete.

Página del paquete en Packagist.

Allí vamos a hacer click sobre «Abandon».

Botón para Abandonar un paquete en Packagist.

Esto nos llevará a una nueva pantalla que nos permitirá, de forma opcional, indicar el paquete de reemplazo.

Paquete de reemplazo para un paquete abandonado.

Para este ejemplo, el reemplazo será el fork.

Paquete de reemplazo para un paquete abandonado.

Si volvemos a la página del paquete, ahora veremos la siguiente leyenda.

Página del paquete abandonado en Packagist.

Nuestro módulo o paquete ya fue puesto en modo sólo lectura en GitHub y ya fue marcado como Abandonado en Packagist.

¿Por qué es relevante hacer esto?.

Porque si alguien instalara ahora el módulo vería el siguiente mensaje.

Instalación con Composer de un paquete abandonado.

Al momento de instalar, estamos dando, en este caso, dos mensajes:

El primer mensaje es que el paquete está abandonado. El segundo, e igual de relevante, es que en lugar de nuestro módulo sugerimos usar otro.

Ya tenemos, entonces, tarea para el próximo mes. 🙂