Calavera, de Charles Rodstrom

Hace unas semanas estuvimos en la WordCamp Barcelona haciendo amigos y compartiendo nuestra experiencia en WordPress a través de tres charlas que tuvieron bastante buena acogida. He pensado que sería interesante reproducir el contenido de nuestras charlas en el blog, especialmente si te las perdiste por no estar en Barcelona esos días. Así pues, empecemos con la mejor de las tres (la mía ?) y estate atento durante las próximas semanas para leer las de Ruth y Toni.

Cómo haer el mal siendo desarrollador WordPress - WC Barcelona 2016
Portada de la presentación «Cómo hacer el mal siendo desarrollador WordPress» que David dio en la WordCamp Barcelona 2016.

Cómo hacer el mal siendo desarrollador WordPress – Sinopsis

En la mayoría de las charlas a las que podéis asistir se explica cómo ser mejor: mejor desarrollador, mejor bloguero, mejor maquetador, mejor emprendedor, mejor profesional. Pero, ¿de verdad le interesa esto a alguien? Si tu sueño es ser un villano, esta es tu charla. En ella aprenderás todos los trucos que necesitas para que tu plugin sea una maravilla mientras, por dentro, se carga los de tu competencia, haciendo que dejen de funcionar, se vean mal, se rompan. Porque tu objetivo como señor del mal es perjudicar a los demás… pero a los demás desarrolladores, claro, porque a nuestros clientes tenemos que tratarlos bien y mimarles, que por algo son quienes pagan.

¡El mundo está loco!

No sé si habéis mirado a vuestro alrededor últimamente, pero las cosas que están pasando en el mundo son bastante raras. Y no, no estoy hablando del cuadragésimo quinto presidente de los Estados Unidos (que, todo sea dicho, daría para una entrada entera).

Desde las primeras PDAs hasta el nacimiento del iPhone en 2007 existe una tendencia a convertirlo todo en «smart«; tenemos móviles inteligentes, televisores inteligentes, relojes inteligentes, neveras inteligentes… ¿Soy yo, o a medida que todo lo que nos rodea se está volviendo inteligente, nosotros nos volvemos más tontos? Mira, por ejemplo, los ejemplos que hace unos días escribía Javier Pastor en el blog de Xataka. ¿De verdad necesitamos un peine conectado? ¿Calzoncillos inteligentes? ¿Unos pañales que envíen un tuit cuando nuestro bebé se mee encima?

Blacksocks
¡Que tu calcetín no pierda a su pareja! Imagen de Blacksocks.

Por suerte, todas estas tonterías del mundo de la tecnología no nos afectan a nosotros, seres de luz que trabajamos con el mejor CMS del universo. A nosotros nos interesan cosas realmente importantes: la API REST, los usuarios, un buen soporte, hacer que WooCommerce sea el paquete de e-commerce más molón de todos los tiempos… ¿verdad? Pues bien, eso es lo que estuve pensando yo durante un tiempo, hasta que descubrí que todo era mentira. Los desarrolladores de WordPress no molan tanto como pensamos. ¡Los desarrolladores WordPress son peligrosos!

Los desarrolladores de WordPress son peligrosos

Hace ya unos meses hablé de un problema que tuvimos con nuestro nuevo plugin, Nelio Content. Básicamente, lo que pasó fue lo siguiente: uno de nuestros usuarios abrió un tique de soporte diciendo que en lugar de ver el plugin como aparecía en nuestras capturas de pantalla:

Diálogo para añadir nuevos mensajes sociales
Captura de pantalla del diálogo para añadir nuevos mensajes sociales con Nelio Content.

él lo veía así:

Diálogo de Nelio Content totalmente roto por culpa de otro plugin
Diálogo de Nelio Content totalmente roto por culpa de otro plugin.

con lo cual era completamente inusable. Después de investigar el problema y estudiar qué demonios estaba pasando, descubrimos que el culpable era otro plugin. Como en Nelio somos gente super maja, decidimos ponernos en contacto con el desarrollador del plugin y explicarle no sólo el problema que nos encontramos, sino cómo solucionarlo. Como puedes ver en el enlace anterior, le escribimos hace casi 5 meses y… en fin, seguimos sin respuesta ?. La sensación que me quedó después de ese silencio fue parecida a esto:

Falta en un partido de fútbol femenino
Los desarrolladores de WordPress, como en el fútbol, también saben jugar sucio cuando les conviene. Imagen de joshjdss (fuente).

Siempre se nos llena la boca hablando de la comunidad, de que todo somos amigos y remamos a una, que nos ayudamos… pero a la hora de la verdad, cuando surgió un problema que podía provocar que nuestros clientes nos dejaran, lo único que conseguí por parte de esa comunidad (o, mejor dicho, de ese desarrollador desalmado) fue que me ignoraran.

¡Nunca más! ?

Las mejores prácticas para hacer el mal

Después de esa mala experiencia, decidí pasarme al lado oscuro y ser yo quien hiciera las cosas mal para acabar rompiendo los plugins y temas de los demás. A fin de cuentas, si ellos pueden hacerlo, ¿por qué yo no?

Si quieres ser bueno en algo debes aprender de los mejores, y eso fue lo que hice. Durante unos días, estuve repasando todos los tiques de soporte que había atendido en los últimos años y fui recopilando los motivos de los errores por los que nuestros clientes nos habían contactado. Conseguí una buena lista de trucos y «buenas malas» prácticas con las que hacer el mal por mi cuenta. Estos son los tres consejos más fáciles de implementar y que mejor te funcionarán.

#1. Someter los CSS a tu voluntad

Si has leído la entrada que enlazaba en donde explico el problema que tuvimos con Nelio Content y el otro plugin, sabrás que todo era debido a un mal uso de las hojas de estilo CSS. Como ya sabes, la apariencia de los componentes que añadimos a una página HTML se define a través de estilos CSS. Si alguien modifica esos estilos, sobrescribiendo las reglas que vienen por defecto en WordPress o las que otros han definido, puede conseguir romper la apariencia de los componentes que usaban esos estilos. Por ejemplo, el problema que hacía que Nelio Content se viera mal estaba (en parte) generado por las siguientes reglas:

Usando un reset global de estilos conseguimos que un nodo cualquiera HTML tenga las propiedades por defecto que nosotros queremos. En este ejemplo, el daño es máximo, porque aplica un reset global, global. fíjate que no está únicamente reseteando todas las etiquetas span o div, no; está reseteando absolutamente todas las etiquetas (e incluso algunos pseudo-elementos) usando los selectores :before, :after y *.

Lo siguientes que puedes hacer si quieres garantizar la destrucción de otros plugins es usar clases CSS con nombres genéricos y especificar las reglas que te convienen. Si eres buena persona, lo más probable es que tus reglas CSS incluyan algún tipo de prefijo para que sólo afecten a los elementos que tú has añadido. Así, por ejemplo, si quieres definir una «columna» en alguna parte de tu plugin, en lugar de usar la clase column usarías algo como nc-column, donde nc- es el prefijo de tu plugin (Nelio Content, en nuestro caso). Pero, claro, aquí no estamos hablando de hacer las cosas bien, queremos hacerlas mal, así que usa reglas genéricas para mandar:

Si usas nombres genéricos, te arriesgas a que otro desarrollador añada sus propias reglas después de ti y que sean las suyas las que sobrescriben las tuyas. Evítalo con la directiva !important:

Y ya para acabar de ser malo, sigue el consejo que me dio Darío Balbontín y asegúrate de poner Comic Sans en todos lados:

Con esto irás de cabeza al infierno… ¡pero para ser la mano derecha de Lucifer!

#2. Hacer trampas con JavaScript

Otra de las piezas que podemos tocar con relativa facilidad para perjudicar a los demás son los JavaScripts. Hay muchísimas cosas que podemos hacer con ellos, pero se trata de ser sutiles a la hora de hacer el mal; que no se noten demasiado nuestras intenciones. ¿Qué podemos hacer aquí? ¡Pues muy sencillo! En primer lugar, olvídate de la forma habitual de añadir scripts en WordPress:

Lo mejor que puedes hacer (especialmente si eres un desarrollador de temas) es añadir los scripts directamente en la página, volcando la etiqueta script dentro del HTML y olvidándote de las chorradas que exige WordPress. Además, no sé si sabes que WordPress incluye un montón de scripts que puedes usar. Además del archiconocido jQuery, hay varias librerías como jQuery UI, Backbone, underscore, … que puedes usar. Pues bien, no pierdas el tiempo viendo qué ofrece WordPress; cuando necesites cualquier cosa, empaquétala en tu propio plugin y pasa de las versiones antiguas y desfasadas que hay en WordPress:

Es más, supongamos que vas a usar la ultimísima versión de jQuery, que es la que más mola. ¿Para qué vas a permitir que los demás plugins encolen la versión por defecto de jQuery? Mejor asegúrate de que no está disponible usando la función wp_deregister_script que incluye el propio WordPress:

y, así, nos aseguramos de que no colisione el jQuery «por defecto» con el tuyo. Vale, vale, estamos de acuerdo en que haciendo esto provocarás que todos los scripts de los demás plugins que necesiten jQuery no funcionen, ya que jQuery ya no aparecerá como disponible (lo acabas de eliminar). Pero… ¿qué más dará? Se trata de hacer el mal, ¿recuerdas?

Encolando scripts de Nelio Content
Nuestro plugin Nelio Content encola varios scripts. Como ves, uno de los requisitos es jquery. Si lo eliminamos de la lista de scripts disponibles… ¡Nelio Content no funcionaría! Me encanta hacer el mal… ?

#3. Diseminar tu maldad

Finalmente, mi último consejo de hoy es que apliques los trucos anteriores en el máximo número de páginas posibles. Por ejemplo, es bastante habitual que los plugins definan sus propias páginas de administración. Algunos ejemplos de Nelio Content podrían ser su página de ajustes o el calendario editorial:

Calendario Editorial
Calendario Editorial. El calendario editorial te muestra todas tus entradas publicadas y programadas, así como cualquier otro elemento relacionado con tu estrategia de marketing de contenidos.

Lo normal es que únicamente añadas los scripts y estilos que estas páginas necesitan cuando el usuario las está visualizando, y evites añadirlo cuando están en otras ubicaciones:

Pero, claro, no olvidemos que estamos intentando perjudicar a los demás desarrolladores, así que no añadas ningún tipo de control. Si no te preocupas por añadir estos controles, tu productividad en el trabajo aumentará una barbaridad, puesto que ya no tendrás que perder el tiempo escribiendo código que «evite» que tus cosas aparezcan en las página de los demás (¡que les den!).

En resumen

Hacer las cosas mal en WordPress es muy sencillo. Lo único que tienes que hacer es pasarte por el forro las guías de estilo y hacer todo lo que a ti te resulte cómodo, sin preocuparte en absoluto de las consecuencias de tus acciones. Así que, recuerda:

  • escribe las reglas CSS de la forma más genérica que puedas,
  • añade los scripts que quieras a saco (sin pasar por el engorro de registrarlos, encolarlos, especificar dependencias…),
  • y asegúrate de hacer todo esto en el máximo número de páginas del Escritorio posibles.

Para que las cosas salgan bien, todos los desarrolladores tienen que ser buena gente e intentar actuar siguiendo las normas. Pero hacer el mal es tan fácil y tentador…

Por cierto, nótese la ironía en todo el artículo. ¡Seguid las guías de estilo y las normas de WordPress, malditos!

Imagen destacada de Charles Rodstrom.

2 respuestas a «Cómo hacer el mal siendo desarrollador WordPress»

  1. Avatar de Sergio
    Sergio

    Amé tu p..to post. He reido con cierta maldad pero he de quedar con la conciencia limpia al final de saber que a mi también me gusta leer el codigo css y corregirlo. Además de comentarios me gusta dejarlos, sobre porque cambie algo. Me han dado ganas de ser malo pero ahi quedé. Recomendaré tu post. Gracias por la entretenida contribución

    1. Avatar de David Aguilera

      ¡Hola Sergio!

      Me alegra saber que poco a poco vamos ganando adeptos malignos 😉

      Ahora en serio, toda difusión que podamos dar a los errores típicos que cometen (/cometemos) los desarrolladores es bienvenida.

      Un saludo,
      David

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad de Nelio Software

Tus datos personales se almacenarán en SiteGround y serán usados por Nelio Software con el único objetivo de publicar tu comentario aquí. Con el envío de este comentario, nos das el consentimiento expreso para ello. Escríbenos para acceder, rectificar, limitar o eliminar tus datos personales.