Plugins premium de Wordpress gratis y legal

Cómo descargar extensiones premium de Wordpress sin hacer daño al bolsillo, pero igual sí a la moral

TutorialNewsletterWordpressprealfa

Nota: Lee más sobre esto en mi newsletter semanal

Este artículo incluye información adicional sobre un tema que he comentado en mi newsletter, Vivir del cuento y no morir en el intento.

Si te interesa, te interesará también lo que podrás leer allí.

Lo primero es ser claros sobre lo que voy a contarte aquí. No estamos hablando de piratería. No estamos hablando de cracking.

Me temo que no vas a disfrutar del musicote de ningún keygen.

Una lástima esto último.

Todo lo que te voy a explicar es completamente legítimo hacerlo y está basado en un vacío legal, o más bien en una consecuencia de la licencia de software que usan muchísimos de los plug-ins premium más conocidos.

Con esto claro, hablemos de moral. Porque no todo lo legal está bien.

Bajándose gratis lo que es, claramente, no es gratis

Esto es claro y transparente:

Unos señores y señoras se han currado un plug-in de Wordpress que a ti te gusta. Han dedicado horas de esfuerzo, han pagado sueldos e impuestos y ahora lo están vendiendo.

Tienen todo el derecho a hacerlo y nosotros la obligación de compensarles por su trabajo.

Hasta ahí todos de acuerdo, ¿no?

Sí.

Perooo...

Ya sabes...

A veces, es que son tantos plugins... y yo solo quiero hacer unas pruebas... es un side-project que no me va a dar ni un duro...

Excusas. Válidas o no, pero excusas. Si fueses tu el autor del plug-in, no te haría ninguna gracia.

Si tienes pasta, págales.

Si tu proyecto da pasta, págales.

Si tu negocio funciona gracias a ellos, págales.

Si no, sigue leyendo.

¿Cómo puede ser esto legal?

Los que estéis familiarizados con el mundillo del desarrollo de software estaréis habituados a ver las distintas licencias que se suelen usar para distribuir el código.

Desde licencias propietarias a licencias de código abierto, más o menos restrictivas y con unos u otros derechos asociados.

GPL, MIT, LGPL, AGPL, CC, WTFPL,... hay muchas.

Wordpress en particular está licenciado bajo la GNU GPL v2. GPL es una licencia viral, es decir, obliga a cualquier trabajo derivado del original licenciado como GPL a ser también licenciado bajo la GPL.

Lo cierto es que no existe jurisprudencia sobre si eso obliga de forma efectiva a los plug-ins y themes que se integran con Wordpress a mantener también la GPL. Pero la realidad es que una enorme mayoría de plug-ins, gratuitos y también de pago, acaban siendo distribuidos también bajo la licencia GPL.

¿Veis por dónde va la cosa? La licencia GPL entre muchos otros derechos otorga a quien recibe el código la posibilidad de modificarlo libremente e incluso redistribuirlo a terceros al precio que quiera. Sí, también gratis.

Sí. Puedo comprar un plug-in de pago y regalárselo a doscientas personas. Y puedo quitar el código que verifica la licencia. Puedo hacer lo que me parezca porque es software libre bajo la GPL.

¿Dónde encuentro plug-ins premium gratis?

Lo cierto es que hay muchos sitios web que explotan este mismo vacío legal. Es un negocio fácil: pagan a los creadores de los plug-ins, los ponen a descargar en sus webs a 1/10 del precio y se lo venden a miles de personas. Beneficio rápido.

Algunos incluso ofrecen suscripciones con las que te puedes descargar tantos plug-ins como quieras.

A mi el tema de hacer uso legal de la licencia GPL me parece pasable. Pero además ganar dinero con ello me parece bastante feo. Sí, es legal. Pero está feo.

Una alternativa buena es buscar directamente el código publicado por el creador original. Esto normalmente te obligará a hacer un pequeño trabajo de empaquetado, igual descargarte las dependencias o ejecutar alguna compilación. No suele ser complicado, pero si no estás familiarizado con desarrollar en PHP puede resultarte difícil.

Por ejemplo, un conocido plug-in de caché, WP-Rocket, se desarrolla abiertamente en Github.

Otra opción que también me ha dado buenos resultados es GPLDL. Te obligan a registrarte pero es completamente gratis.

¿Y me puedo fiar?

Pues la realidad es que no. Mi recomendación es que no te fies nunca. Nunca vas a estar seguro de si el redistribuidor te va a colar algo turbio en el código que te hace llegar.

Si te fías del desarrollador original y no quieres problemas, págale y fuera complicaciones.

También puedes inspeccionar el código a mano. Algunos plug-ins son relativamente asequibles de entender.

Otra opción es compararlos con el código original. Esto obviamente puede ser difícil si no tienes acceso al producto de pago, pero en casos como los plug-ins que desarrollan en repositorios públicos, así como si tienes acceso a una versión anterior, un buen diff te puede salvar de algún susto.

Un ejemplo de verificación

Si nos descargamos de GPLDL el plug-in WP-Rocket que comentábamos antes vemos que recibimos un ZIP con la versión 3.11.2 de éste. ¿Han toqueteado algo? ¿Se va a poner mi Wordpress a minar Bitcoins para el gobierno de Corea?

Descargamos el original desde el Github oficial de WP-Rocket, extraemos los archivos y vemos las diferencias. Encontramos dos:

  • La versión de GPLDL incluye la carpeta vendor y el composer.lock. Esto significa que han instalado las dependencias.
  • Hay una linea distinta en el fichero inc/functions/options.php. Resulta que ahí es donde se verifica que tienes una licencia de uso. Han añadido un return true; para saltársela.

Vemos que, en principio, no hay problema, a no ser que nos hayan colado algo feo en el vendor/, que podría ser.

¿Cómo hago el diff?

Hay muchas herramientas que permiten comparar dos directorios, pero si tienes acceso a una terminal con bash puedes usar este script que me he hecho para estos menesteres:

#!/bin/bash
set -e

ORIGINAL=$1
NEW=$2

if [ -z "$1" ] || [ -z "$2" ]; then echo "Usage: $0 ORIGINAL.zip NEW.zip"; exit 1; fi

TMP=$(mktemp -d)

echo "[-] Extracting to $TMP"
unzip $ORIGINAL -d $TMP/1 >/dev/null
unzip $NEW -d $TMP/2 >/dev/null

echo "[-] Flattening first level"
find $TMP/1 -mindepth 2 -maxdepth 2 -exec mv -t $TMP/1 -i '{}' +
find $TMP/2 -mindepth 2 -maxdepth 2 -exec mv -t $TMP/2 -i '{}' +
find $TMP/1 -type d -empty -delete
find $TMP/2 -type d -empty -delete

echo "[-] Diff:"
echo "---"
echo
diff -qru $TMP/1 $TMP/2 || true
echo
echo "---"
echo

read -n 1 -p "[!] Press any key to remove temp files in $TMP"

echo "[-] Deleting $TMP"
rm -r $TMP

Guárdalo como comparar-zips.sh, dale un chmod +x comparar-zips.sh y úsalo con ./comparar-zips.sh zip_original.zip zip_de_gpldl.zip.

Nos vemos al otro lado.