WordPress es sin ninguna duda el sistema de gestión de contenidos (CMS, content management systems, en inglés) más popular. A día de hoy está ya cerca de dominar el 30% de todas las webs en Internet (fuente). A mucha distancia están otros CMSs como Joomla, Drupal, ShopifySquareSpace. Si sólo tenemos en cuenta los sitios web que utilizan algún tipo de CMS, WordPress está presente en 60% de ellos y es el único que llega a los dobles dígitos (Joomla es segundo pero con sólo un 6.4% de cuota de mercado).

Dada la gran importancia de WordPress en nuestra sociedad (no creo que esté exagerando), WordPress se merecía ser el foco de una de las impact column que pública regularmente la revista IEEE Software. El objetivo de esta columna es presentar aplicaciones que tienen un impacto muy grande en alguna industria pero intentando explicar no tanto lo qué hacen sinó el cómo se hacen (con qué metodología, con qué herramientas de desarrollo, métricas que ayuden a entender su complejidad,…) que es lo que se supone que interesa a los lectores de una revista como IEEE Software.

Podéis leer mi columna WordPress – A Content-Management System to Democratize publishing entera si os interesa el mundo WordPress pero, aunque no sea así (no sé, a lo mejor sois más de Drupal 🙂 ) creo que os interesará el resumen que os hago a continuación, seleccionando algunos datos técnicos que creo que pueden sorprender a más de uno (ej. hay vida más allá de GitHub).

Veamos algunas curiosidades y métricas acerca de como se desarrolla WordPress

El código de WordPress

  • WordPress es mucho más que un CMS. Tiene una REST API que permite usarlo como un “headless CMS“. Aprovéchate de WordPress (ej. gestión de usuarios “gratis”) para construir tus propias aplicaciones
  • WordPress tiene más de medio millón de líneas de código. PHP sigue representando más del 50% del código con JavaScript subiendo y siguiendo de cerca con un 30%. CSSs, HTMLs y XMLs hacen el resto
  • Su tasa de crecimiento anual compuesto es de un 28.8%, comparable a otros sistemas software [1].
  • Sólo hay 12 tablas en la base de datos de WordPress (puedes ver el esquema de la base de datos de WordPress en notación Entity-Relationship, para los jóvenes el ER es parecido a un diagrama de clases UML).
  • La base de datos de WordPress no utiliza claves foráneas.
  • Mezcla código procedural y orientado a objetos (que muchas veces se utiliza para encapsular el procedural)
WordPress tiene más de medio millón de líneas de código. El 50% es PHP y un 30% JavaScript (y subiendo) Share on X
WordPress lines of code - grouped by language

Figure 1 – Evolución del número de LOCs del código de WordPress agrupado por lenguaje – Fuente: openHub.net

 

El desarrollo de WordPress

  • WordPress utiliza Subversion como sistema de control de versiones. Enlace al repositorio SVN de WordPress. En GitHub sólo hay un mirror.
  • Trac es la herramienta que se utiliza como sistema de seguimiento de errores.
  • Slack se usa como complemento ideal para comunicaciones en tiempo real.
  • Llevamos ya 30 versiones de WordPress siempre evitando romper la compatibilidad con versiones anteriores. La numeración de versiones no sigue el estándar de Semantic Versioning
  • Se ha pasado de un sistema de releases regular (sacando una nueva versión cada 3-4 meses) a un modelo mixto donde se intenta que haya algunas releases dedicadas al lanzamiento de nuevas funcionalidades importantes.
  • Los líderes de cada versión son rotatorios, lo que incrementa el bus factor del proyecto. Además, últimamente, se intenta que los líderes sean un pareja que incluya un programador y un diseñador.
  • Más de 400 personas contribuyeron código o tests en la última versión de WordPress. La gran mayoría (excepto el WordPress core team) no tiene permisos de escritura sobre el repositorio con lo que dependen que un miembro del núcleo duro acepte su contribución.
  • Llegar a ser parte del núcleo duro depende de los méritos pero Matt Mullenweg actúa como dictador benevolente.
  • Cada semana se priorizan los bugs en una reunión abierta en Slack. Excepto potenciales problemas de seguridad que tiene un equipo específico que se encarga de solucionarlos lo más rápidamente posible, generando una nueva versión menor si fuera necesario.
  • Hay alrededor de 2000  hooks predefinidos que actúan como puntos de extensión para todo el qué quiera añadir funcionalidad a WordPress vía plugins o plantillas, sin tener que interferir ni modificar los ficheros del propio WordPress.
Hay vida más allá de GitHub (y hasta de Git). WordPress sigue fiel a SVN (¿es un error? ¿desanima a algunos a contribuir?) Share on X

Ya veis que mantener y evolucionar un software libre como WordPress, por más que en apariencia “sólo” se use para visualizar páginas web, no tiene nada de fácil y que requiere el esfuerzo de mucha gente.

 

[1] Compound Annual Growth Rate for Software. M.van Genuchten, Les Hatton. IEEE Software 29(4), 2012