Drupal

__NOINDEX__  This page is a draft. Esta página es un borrador. Please, not link to it yet. Por favor, no enlaces a ella todavía.

Esta es una lista, redactada de forma totalmente caótica, y sin clasificar, de tan solo algunos de los problemas que me ha dado Drupal en los últimos años. La experiencia me ha demostrado que su modelo de desarrollo es realmente desconcertante, que la gente que lleva el proyecto no hace las cosas como debería, y que aunque me ha sido de gran utilidad durante años, me siento obligado a advertir a aquellos que lo quieran usar de muchos potenciales problemas que pueden surgir. Lamentablemente parece que las alternativas no son especialmente buenas o apropiadas para según que casos, así que si la persona que lee esto se ve obligada a escoger Drupal, le sugiero que tenga en cuenta todos los asuntos siguientes.

Ningún respeto a los usuarios
En los primeros días de badopi, escribíamos con el pecho hinchado lo guay que era Drupal, porque para entrar en nuestra web, no era necesario crearse una cuenta. Bastaba con usar un Drupal ID, o una cuenta de Jabber. ¿Donde fue a parar el módulo Jabber? Sólo sé que en una actualización dejó de venir incluido. ¿En cuál? Pues en el changelog no dice nada, así que vaya usted a saber.

Muchísimo esfuerzo perdido en los temas
Drupal ha cambiado el sistema de temas en casi todas las versiones que he usado (básicamente, la rama 4.x, desde 4.2 más o menos), haciendo que prácticamente ningún tema no trivial pueda ser usado al mismo tiempo en dos versiones distintas, y que alguien con pocos recursos, se vea obligado a tirar a la basura el tiempo invertido en hacer un tema propio. También se han cambiado los temas incluídos con el núcleo de Drupal muchísimas veces, obligando a cambiar forzosamente de aspecto, al cambiar de versión. Y decir que esos temas aunque no vengan en la distribución principal, se pueden encontrar en el repositorio de contribuciones, no sirve de casi nada. Los temas (y módulos) que salen del núcleo, rara vez vuelven a ser mantenidos.

Planificación, ¿existe?
Día 28 de abril a las ocho de la tarde. Se libera Drupal 4.7.0 RC4.

Día 1 de mayo a las una del mediodía, ni siquiera 72 horas más tarde. Se libera Drupal 4.7.0 estable. ¿Alguien me lo explica?

Cuatro candidatas
¿Realmente en un proyecto tan pequeño como éste, hacen falta cinco betas y cuatro Release Candidates? Humildemente, creo que no, ya que proyectos mucho (pero mucho) más grandes, liberan menos versiones, y resulta todo más sencillo. Soy partidario del release early, release often, pero esto es pasarse.

Información poco visible
El módulo queue fue eliminado en la rama 4.7. ¿En qué anuncio fue explicado? En el de 4.7.0 no, y tampoco en ninguna de las versiones RC. Ah, espera, tras visitar las 10 páginas de los distintas versiones liberadas hasta 4.7.0, lo encontré en el anuncio de la primera beta:


 * At the same time Drupal 4.7.0 will be a tad smaller (better code re-use, the queue module and comment moderation moved to the contributions repository) and a tad faster.

Fantástico. Cargarse el módulo de cola, que era fundamental para el funcionamiento de la web de badopi, es hacer mejoras. Seguro que a los usuarios de esos módulos les encantó que fueran movidos. Porque por supuesto, mover un módulo a un repositorio distinto es un eufemismo para decir que no lo ha portado nadie a la nueva versión (porque porsupuesto la API ha de cambiar de manera incompatible en cada versión), así que lo ponemos en otro sitio para que no se note. Por supuesto ese módulo jamás fue portado, y los módulos alternativos no han sido los más apropiados, y no llegaron a tiempo.

Compatibilidad entre versiones nula
Sacar módulos (como jabber o queue) de la distribución principal, es romper la compatibilidad entre versiones menores de Drupal. Lo intentan maquillar diciendo que tan sólo los han movido al repositorio de contribuciones. Lo cierto, es que si en la distribución principal, el módulo estaba abandonado, moviéndolo a un repositorio plagado de proyectos muertos, lo condenan a una muerte segura. La prueba está en que jamás, jamás, hubo nadie que portara uno de los módulos movidos, a la versión estable siguiente.

Drupal 4.7.0 se publicó el día 1 de mayo, eliminando el módulo de cola. Ocho meses después, cuando ya se anuncia la RC de Drupal 5.0, el módulo cola sigue en el repositorio de contribuciones, sin portar a 4.7, y sin que nadie haya hecho un sólo commit desde el momento en que Dries lo movió.

Traducciones
Drupal destaca por su nulo aprecio a los sitios que usen múltiples idiomas, o simplemente a los sitios que no estén en inglés. Nunca he tenido conocimiento de que haya hecho un string freeze (que a partir de un determinado momento, no se permitan cambiar las cadenas visibles a los usuarios), e incluso en ramas que no reciben nuevos cambios (tan sólo arreglos de seguridad), se han hecho cambios incompatibles.

Este cambio, se hizo de 4.6.9 a 4.6.10:

- $output = form_textfield(t('Block title'), 'title', $edit['title'], 50, 64, t('The title of the block as shown to the user.')); + $output = form_textfield(t('Block title'), 'title', $edit['title'], 50, 64, t('The title of the block as shown to the user. Leave blank for no title.'));

Cambios inexplicables entre versiones menores
En la actualización de 4.6.10 a 4.6.11, vemos los siguiente cambios en el CHANGELOG.txt:

diff -Nrua drupal-4.6.10/CHANGELOG.txt drupal-4.6.11/CHANGELOG.txt --- drupal-4.6.10/CHANGELOG.txt       2006-10-18 22:14:08.000000000 +0200 +++ drupal-4.6.11/CHANGELOG.txt       2007-01-05 01:16:42.000000000 +0100 @@ -1,3 +1,8 @@ +Drupal 4.6.11, 2007-01-05 +- +- fixed security issue (XSS), see SA-2007-001 +- fixed security issue (DoS), see SA-2007-002 + Drupal 4.6.10, 2006-10-18 - fixed security issue (XSS), see SA-2006-024

Parece que sólo se han corregido dos fallos de seguridad, ¿verdad? Pues no. También podemos ver el siguiente cambio:

diff -Nrua drupal-4.6.10/.htaccess drupal-4.6.11/.htaccess --- drupal-4.6.10/.htaccess   2005-03-20 20:15:00.000000000 +0100 +++ drupal-4.6.11/.htaccess   2007-01-04 22:30:32.000000000 +0100 @@ -3,7 +3,7 @@ #  # Protect files and directories from prying eyes. - + Order deny,allow Deny from all  @@ -64,4 +64,4 @@   RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]  -# $Id: .htaccess,v 1.66 2005/03/20 19:15:00 dries Exp $ +# $Id: .htaccess,v 1.66.2.1 2007/01/04 21:30:32 killes Exp $

Sí, es un cambio tonto, que parece inocente. Pero:
 * No está documentado.
 * Deja la duda de si es un problema de seguridad o no (el comentario de la línea de encima dice Protect files and directories from prying eyes.).
 * "Protege" algo que realmente no les servirá a los usuarios, porque los nuevos archivos son archivos de control de CVS, que indican la versión exacta que podría estar ejecutando drupal.org, pero sin embargo no se les ocurre proteger el changelog...
 * Me fastidia soberanamente, porque al tener modificada exactamente esa línea del .htaccess (para no incluir el changelog), no puedo actualizar de manera sencilla.

Este no es el único cambio en esta versión 4.6.11. También ha habido un cambio en el motor xtemplate, y en el tema pushbutton, que usa una nueva variable. Afortunadamente no uso xtemplate, pero si tuviera un tema hecho en él, tendría que actualizarlo (sí vale, sólo es una línea, pero es otro maldito archivo a tocar, cuando sólo debería ser una actualización de seguridad).

El precio de la DrupalCon Barcelona 2007
Estaba dudando sobre si asistir o no a la DrupalCon 2007 que se celebra en Barcelona, mi ciudad, y para mi suerte, en un periodo en el que no creo que me coincida con clases. Pensaba pulir este artículo hasta el punto de publicarlo, y hacer así una crítica lo más constructiva posible. Pensaba que podría debatir con más desarrolladores y administradores de Drupal si era yo el que estaba equivocado, o si había realmente cosas que se podían mejorar.

Pero resulta que la jodida conferencia, cuesta 50€. Es la primera vez en mi vida que veo que la asistencia a un evento así, es de pago. En ninguna de las que he asistido (de KDE, de Debian, incluso una de Ubuntu en la que mayormente había empleados de Canonical y colaboradores). Lo siento pero aunque pueda permitírmelo perfectamente, no pienso pagar eso.

El insulto final
Todo lo anterior, es algo que podría soportar, porque en general, el resto de cosas en Drupal, no están mal, así que puede valer la pena. Pero lo que me pareció un tremendo insulto, y un tremendo desprecio al esfuerzo que estaba poniendo en cada elemento HTML que escribo en mi weblog, es que en Drupal 4.7, se eliminarara el elemento, y se pasara a utilizar URL absolutas. Sobretodo en la forma de hacerlo.

En el changelog hay una entrada al respecto, pero me parece un cambio tremendamente radical de cara a la persona que escribe el HTML de la web, como para que lo único que se le diga, sea una línea de texto. Los enlaces son lo más importante en una web, así que no me gusta nada que de golpe y porrazo, el gestor de contenidos que estoy utilizando me obligue a enlazar de forma diferente a la que he estado usando con él durante años.

Además no es por capricho. El sistema anterior a 4.7 me permitía tener mi weblog en la dirección  (es decir, en el directorio raíz), y cuando lo copiaba a mi máquina local para hacer pruebas, tenerlo en   (es decir, en un subdirectorio). Si tengo que escribir mis URL de forma absoluta siempre, me obliga a crear un host virtual en mi máquina local, sólo para respetar a los caprichos del puto Drupal.

Y la actualización de las URL al ejecutar, falló como una escopeta de feria. Ese script, cambia (sin avisar ¡para qué!) una URL del estilo  a   para que «funcione» con el nuevo sistema, pero no cambia las que estaba usando yo, que para marcar más explícitamente que son locales, las escribo como. O sea, que el script de actualización no hizo nada a derechas en mi caso.

Ni ellos mismos son capaces de estar al día
El día 13 de febrero de 2008 fue publicado Drupal 6.0. Prácticamente un año después piden ayuda para sus pruebas de actualización de drupal.org, que a saber cuanto tiempo tardan en completar. ¿No es esto una confirmación clara de que incluso los responsables de drupal.org no son capaces de mantener el ritmo de actualizaciones incompatibles?

Prensa rosa en portada no, gracias
Me importa muy poco que el creador del proyecto sea padre, y creo que la portada de drupal.org no es el lugar para mencionarlo. Además, no entiendo porqué debe nadie donar dinero a esa persona para comprarle nada. Espero haber malentendido el texto y que la sugerencia de hacer donaciones sea para dirigirlas al proyecto, y no a la persona, pero si es así, ¿porqué no se enlaza a la página habitual de donaciones?

Enlaces
In my estimation Drupal has serious design flaws from the ground up.