in

Una comparación detallada entre WordPress y el OctoberCMS

Actualmente, muchas personas buscan alternativas a WordPress. Este artículo compara WordPress y el OctoberCMS al exponer las preocupaciones importantes que deben tenerse en cuenta al buscar un CMS adecuado para tus proyectos.

Hace tres meses, WordPress finalmente lanzó Gutenberg con tecnología React para potenciar su experiencia de edición de contenido predeterminada, lo que provocó que muchas personas que no están contentas con este cambio busquen alternativas. Algunas personas decidieron bifurcar y lanzar WordPress anterior a Gutenberg, sin embargo, para mí esto no tiene mucho sentido ya que todavía conlleva 15 años de deuda técnica. Si tuviera que encontrar una alternativa a WordPress, trataría de evitar quedarme atascado en el pasado y apuntar a un corte limpio a través de una plataforma madura construida sobre bases modernas. Este artículo compara WordPress con el OctoberCMS posiblemente similar pero más moderno en una amplia gama de temas técnicos y no técnicos. El objetivo del artículo no es convencer a las personas de que se apeguen a WordPress o de que se cambien a OctoberCMS, sino simplemente demostrar qué aspectos deben tenerse en cuenta antes de concluir el cambio a una plataforma diferente. La misma comparación podría (y debería) hacerse también con otras plataformas antes de tomar una decisión sensata.

Por qué OctoberCMS  #

Me enteré del OctoberCMS cuando ganó un premio, después de lo cual entré en modo de investigación y pasé mucho tiempo investigando en profundidad este CMS, desde la perspectiva tanto de un usuario como de un desarrollador. A medida que adquirí conocimientos sobre este CMS, me sentí seguro de que podría proporcionar una evaluación objetiva de sus características en comparación con WordPress. Elegí este CMS para la comparación con opciones alternativas como Grav, Statamic, ButterCMS, Joomla, Drupal, Jekyll, Hugo y otras, por las siguientes razones:

  • Sé cómo funciona este CMS (a diferencia de Grav);
  • Es gratuito y de código abierto (a diferencia de Statamic y ButterCMS);
  • A los cinco años, es «relativamente» nuevo (a diferencia de Joomla y Drupal);
  • Es un generador de contenido dinámico (no estático) y basado en PHP (a diferencia de Jekyll y Hugo).

Creo que October CMS es un buen candidato porque se basa en Laravel, que es un marco utilizado para crear aplicaciones modernas. Después de siete años de existencia, ha recibido la aprobación positiva de los desarrolladores (como lo demuestra su considerable comunidad y ecosistema), y marca un claro contraste con la codificación en WordPress, es decir, WordPress es principalmente programación procedimental mientras que Laravel es decididamente programación orientada a objetos.

¿Cuál es la diferencia entre los dos? #

A continuación, compararé WordPress y OctoberCMS en diferentes categorías y destacaré lo que, creo, es bueno y no tan bueno de ellos. Sin embargo, no elegiré un ganador, ya que ese no es el objetivo del artículo y, en cualquier caso, no existe un CMS “mejor” o incluso “mejor”: cada CMS tiene su propio conjunto de fortalezas y debilidades que lo harán más o menos adecuado para cada tarea, proyecto, empresa, equipo y cualquier otra cosa. Además, un proyecto puede beneficiarse del uso de más de un CMS, como el uso de algunos CMS para administrar y proporcionar datos, y otro CMS para representar la vista. Decidir cuál de las docenas de CMS que existen es el más adecuado para sus propias necesidades, depende totalmente de ti. Además, este artículo nunca puede sacar conclusiones definitivas ya que solo se ocupa de un subconjunto de todas las posibilidades. Por ejemplo, también podemos encontrar comparaciones en línea como «WordPress vs Drupal vs Joomla», «WordPress vs Static Site Generators» e incluso «WordPress vs Medium». Debido a que ninguno de estos artículos ve la imagen completa, ninguna de estas comparaciones puede ser concluyente y no debe tratarse como tal. Empecemos por la comparación.

Filosofía y grupo objetivo  #

No es una coincidencia que WordPress funcione con casi 1 de cada 3 sitios web. Desde sus inicios, se ha esforzado por ser extremadamente fácil de usar y lo ha hecho con éxito, eliminando fricciones para usuarios técnicos y no técnicos por igual, así como para personas de todos los orígenes, independientemente de su educación y nivel económico. El fundador de WordPress, Matt Mullenweg, expresó que el lema de WordPress de » Democratizar la publicación » para la era actual significaba lo siguiente:

«Las personas de todos los orígenes, intereses y habilidades deben poder acceder al software Free-as-in-speech que les permita expresarse en la web abierta y ser dueños de su contenido».

WordPress es fácil de usar para todos y su inclusión también se evidencia en el lado del desarrollo: no es raro encontrar personas sin experiencia en programación (como especialistas en marketing, diseñadores, bloggers, vendedores y otros) que modifican sus instalaciones de WordPress, diseñan sus propios temas y lanzar con éxito sus propios sitios web. WordPress se centra en el usuario y las necesidades de los usuarios superan a las de los desarrolladores. En WordPress, el usuario es rey (o reina). Por el contrario, OctoberCMS está más orientado al desarrollador, como se estableció explícitamente desde su primer lanzamiento:

“October hace una suposición audaz pero obvia: los clientes no crean sitios web, los desarrolladores sí. El papel de un cliente es administrar el sitio web y transmitir sus requisitos comerciales. El desarrollador web y la propia industria giran en torno a mediar estos factores «.

En palabras de sus fundadores, la misión de CMS es «demostrar que hacer sitios web no es ciencia espacial». Al estar basado en Laravel, October CMS puede afirmar que tiene bases sólidas de código modular reutilizable que puede producir aplicaciones con la arquitectura adecuada, mantenibles a largo plazo y totalmente personalizables sin requerir hacks, el tipo que atrae a programadores serios. October CMS también puede proporcionar una gran experiencia de usuario, sin embargo, no es tan simple ni tan sencillo como el que ofrece WordPress. Es posible que los usuarios deban que se les explique cómo utilizar determinadas funciones antes de poder utilizarlas. Por ejemplo, incrustar un formulario desde algún complemento tiene una explicación extensa sobre cómo hacerlo, lo cual es más engorroso que la función evidente de arrastrar y soltar proporcionada por varios complementos de formulario en WordPress.

Instalación  #

WordPress es famoso por su instalación de 5 minutos, aunque muchas personas señalan que (teniendo en cuenta todos los complementos que se deben instalar) una instalación típica requiere 15 minutos o más. Además, WordPress también ofrece la función Multisitio, que nos permite crear una red de múltiples sitios virtuales bajo una sola instalación. Esta función facilita que una agencia administre los sitios de varios clientes, entre otros casos de usuarios. La instalación de October CMS también es muy sencilla: la instalación del asistente en sí lleva incluso menos de cinco minutos, y si lo instalas a través de la instalación de la consola, es incluso más rápido. Puedes hacer lo último simplemente navegando al directorio de destino y luego ejecutando curl -s https://octobercms.com/api/installer | php (después de lo cual debemos ingresar la configuración de la base de datos; de lo contrario, se comportará como un CMS de archivo plano). Una vez que se haya completado la instalación, tendremos un sitio web en pleno funcionamiento, pero aún bastante vacío (si añades el tiempo necesario para instalar y configurar los complementos requeridos, puedes esperar que demore al menos 15 minutos).

Instalar OctoberCMS con el asistente es muy sencillo. (Vista previa grande)

Seguridad  #

WordPress ha sido acusado de inseguridad debido a la gran cantidad de vulnerabilidades que se encuentran constantemente. Esto obliga a los usuarios a tener el software del CMS y todos los complementos instalados siempre actualizados para evitar vulnerabilidades de seguridad. Entre los principales problemas se encuentra el soporte de WordPress para versiones anteriores de PHP que ya no son compatibles con la comunidad de desarrollo de PHP. WordPress no es necesariamente inseguro por sí mismo, sino por su gran popularidad, lo que lo convierte en un objetivo primordial para los piratas informáticos. Sin embargo, esto juega en ambos sentidos: la ubicuidad de WordPress significa que su equipo de seguridad debe realmente tomarse su trabajo en serio al buscar constantemente exploits y corregirlos lo antes posible; de ​​lo contrario, hasta un tercio de la web está en riesgo. Lo que está en juego es demasiado alto. OctoberCMS, por otro lado, no tiene la reputación de ser inseguro. Sin embargo, dado que hay aproximadamente 27.000 sitios en vivo que usan October en comparación con los millones de WordPress, no podemos juzgarlos a los dos en los mismos términos. Sin embargo, el equipo detrás de OctoberCMS se toma en serio la seguridad, como lo demuestra el mensaje de instalación del Asistente para ingresar la URL de backend del CMS, configurada como /backend predeterminada pero que se puede cambiar a cualquier otra cosa, para que sea más difícil para los piratas informáticos apuntar al sitio. Por el contrario, cambiar las URL de inicio de sesión y back-end de WordPress de /wp-login.php y /wp-admin respectivamente a otra cosa debe hacerse a través de un complemento. Además, OctoberCMS puede funcionar como un CMS de archivo plano (es decir, sin una base de datos) y evitar vulnerabilidades relacionadas con la base de datos, como la inyección SQL.

Pila de tecnología  #

Tanto WordPress como el OctoberCMS se ejecutan en la pila LAMP tradicional: Linux, Apache, MySQL y PHP. (Sin embargo, solo PHP es fijo: también podemos usar Windows, Nginx, MariaDB y otros). OctoberCMS también puede comportarse como un CMS de archivo plano, lo que significa que puede prescindir de una base de datos, sin embargo, a costa de renunciar muchas funcionalidades (como publicaciones de blogs y usuarios) la única funcionalidad que está garantizada son las páginas, que se considera la unidad básica para la creación y publicación de contenido y se envía como una característica principal. Con respecto a la pila de idiomas, los sitios creados con WordPress y el OctoberCMS se basan en HTML, CSS y JavaScript (tenga en cuenta que PHP se usa para generar el HTML). OctoberCMS también facilita el uso de archivos LESS y SASS.

Paradigma de programación  #

WordPress sigue un paradigma de programación funcional, basado en el cálculo de cálculos mediante funciones de llamada sin estado de aplicación. Aunque los desarrolladores de WordPress no necesitan apegarse a la programación funcional (por ejemplo, para codificar sus temas y complementos), el código central de WordPress hereda este paradigma de 15 años de preservar la compatibilidad con versiones anteriores, que ha sido uno de los pilares del éxito de WordPress. pero que tiene la consecuencia no deseada de acumular deuda técnica. Por otro lado, OctoberCMS sigue un paradigma de programación imperativo, basado en calcular cálculos manipulando el estado de los objetos. OctoberCMS se asienta sobre Laravel, un marco web totalmente fundado en los principios de programación orientada a objetos que permiten la producción de aplicaciones modulares basadas en conceptos como Model-View-Controller para desacoplar la interfaz de usuario de los datos de la aplicación, Dependency Injection para configurar las dependencias de clase y el Principio de Segregación de Interfaces para definir los servicios centrales proporcionados por el marco, entre muchos otros.

Ganchos/Eventos  #

La programación en WordPress podría caracterizarse como HDD, que significa «Desarrollo impulsado por gancho». Un gancho es un mecanismo que permite cambiar un comportamiento o valor predeterminado y permitir que otro código ejecute funciones relacionadas. Los hooks se activan mediante «acciones» que permiten ejecutar funcionalidades extra y «filtros» que permiten modificar valores. Los ganchos, que están muy extendidos en la base de código de WordPress, son uno de los conceptos que más me gustan de la codificación en WordPress. Permiten que los complementos interactúen con otros complementos (o con un núcleo o tema) de una manera limpia, proporcionando un soporte básico de la programación orientada a aspectos. La buena noticia es que Laravel (y en consecuencia el OctoberCMS) también admite el concepto de ganchos, que se denomina «eventos«. Los eventos proporcionan una implementación de observador simple, lo que permite que el código se suscriba y escuche los eventos que ocurren en la aplicación y reaccione según sea necesario. Los eventos permiten dividir una funcionalidad compleja en componentes, que se pueden instalar de forma independiente y colaborar entre sí, lo que permite la creación de aplicaciones modulares.

Dependencia de las bibliotecas de JavaScript  #

La última versión de WordPress incorpora Gutenberg con tecnología React para su experiencia de creación de contenido predeterminada. Por lo tanto, el desarrollo de WordPress ahora se basa en gran medida en JavaScript (predominantemente a través de React), aunque también es posible usar otros marcos o bibliotecas (como lo demuestra Elementor Blocks para Gutenberg, que se basa en Marionette). Además, WordPress todavía se basa en Backbone.js (para el Administrador de medios) y jQuery (código heredado), sin embargo, podemos esperar que la dependencia de estas bibliotecas desaparezca a medida que Gutenberg se consolide como la nueva norma. OctoberCMS depende de jQuery, que utiliza para implementar su marco AJAX opcional para cargar datos desde el servidor sin una actualización de la página del navegador.

Páginas, temas y complementos  #

Tanto WordPress como October CMS tratan una página como la unidad básica para crear y publicar contenido (en el caso de WordPress, además de la publicación), permiten cambiar la apariencia del sitio a través de temas y permiten instalar y ampliar las funcionalidades del sitio a través de complementos. Aunque los conceptos son los mismos en ambos CMS, existen algunas diferencias en la implementación que producen un comportamiento algo diferente. En WordPress, las páginas se definen como contenido y se almacenan en la base de datos. Como resultado, el contenido de la página se puede crear solo a través del CMS (por ejemplo, en el área del panel de control), y cambiar de un tema a otro no hace que una página existente deje de estar disponible. Esto produce una experiencia general sin fricciones. En OctoberCMS, por otro lado, las páginas son archivos estáticos almacenados en el directorio de temas. En el lado positivo de esta decisión arquitectónica, el contenido de la página se puede crear desde una aplicación externa, como editores de texto como Sublime o Visual Studio Code. En el lado negativo, al cambiar de un tema a otro, es necesario recrear o copiar manualmente las páginas del tema actual al nuevo, o de lo contrario, desaparecerán. Significativamente, OctoberCMS resuelve el enrutamiento a través de páginas, por lo que las páginas se utilizan no solo como contenedores de contenido sino también para funciones. Por ejemplo, un complemento para blogs depende de una página para mostrar la lista de publicaciones de blog en una URL elegida, otra página para mostrar una sola publicación de blog en otra URL elegida, y así sucesivamente. Si alguna de estas páginas desaparece, la funcionalidad asociada del complemento deja de estar disponible y esa URL producirá un error 404. Por lo tanto, en October, los temas y complementos de CMS no se desacoplarán por completo, y el cambio de temas debe hacerse con cuidado.

OctoberCMS permite la creación de contenido a partir de aplicaciones externas. (Vista previa grande)

Funcionalidad Core vs Plugin  #

WordPress intenta ofrecer una funcionalidad básica mínima que se mejora a través de complementos. WordPress se basa en la » regla 8020 « para decidir si incluir alguna funcionalidad en su experiencia principal o no. Si beneficia al 80% de los usuarios, en caso contrario, pertenece a plugin-land. Al agregar complementos a un sitio, pueden provocar hinchazón si se instalan demasiados complementos. Es posible que los complementos tampoco funcionen bien entre sí, o que ejecuten código similar o carguen activos similares, lo que resultará en un rendimiento subóptimo. Por lo tanto, mientras que lanzar un sitio de WordPress es relativamente fácil, un desafío mayor es su mantenimiento general y poder preservar un estado óptimo y de rendimiento al agregar nuevas funciones.

El directorio de complementos de WordPress afirma tener casi 55.000 complementos. (Vista previa grande)

Del mismo modo, OctoberCMS también intenta ofrecer una funcionalidad básica mínima, pero con esteroides: la única funcionalidad garantizada es la creación y publicación de páginas, y para todo lo demás necesitaremos instalar un complemento u otro, que se expresa como:

«Todo lo que necesita y nada que no».

El objetivo es claro: la mayoría de los sitios simples solo están compuestos por páginas, posiblemente sin publicaciones de blog, usuarios o área de inicio de sesión. Entonces, ¿por qué la aplicación debería cargar recursos para estos cuando no son necesarios? Como consecuencia, las funcionalidades para blogs, administración de usuarios, traducción y muchas otras se liberan a través del directorio de complementos.

La búsqueda de ‘Rainlab’ en el directorio de complementos de octubre muestra los complementos creados por el equipo de OctoberCMS. (Vista previa grande)

OctoberCMS también incluye ciertas características en su núcleo que (aunque no siempre son necesarias) pueden mejorar la aplicación de manera significativa. Por ejemplo, proporciona soporte listo para usar para cargar archivos multimedia en Amazon S3 y acceder a ellos a través de Rackspace CDN. También incluye un Administrador de medios que se usa principalmente a través de complementos, por ejemplo, para agregar imágenes a una publicación de blog. (Las páginas también pueden usar el Administrador de medios para incrustar archivos de medios, sin embargo, el CMS también se envía con una sección de Activos para cargar archivos de medios para estos, lo que parece más adecuado). Creo que la obstinación de October puede permitirnos perfectamente producir una aplicación lo más ajustada posible, principalmente en sitios simples. Sin embargo, también puede ser contraproducente y fomentar la hinchazón, porque la línea de lo que se necesita y lo que no es arbitraria, y es difícil establecerla con anticipación por parte del CMS. Esta dificultad se puede apreciar al considerar el concepto de “usuario”: en WordPress, los usuarios del sitio web y los administradores del sitio pertenecen a la misma entidad de usuario (y mediante roles y privilegios podemos hacer que un usuario se convierta en administrador). En OctoberCMS del sitio web que puede iniciar sesión en el área de backend y modificar la configuración, y a través de un complemento la implementación del usuario del sitio web. Este problema surge no solo en relación con el comportamiento de una entidad, sino también con los campos de datos que debe contener. Por ejemplo, ¿deberían estar predefinidos los campos de datos de usuario del sitio web? ¿Se requiere un campo de teléfono? ¿Qué pasa con un campo de URL de Instagram, teniendo en cuenta que Instagram se volvió algo genial solo recientemente? Pero entonces, al crear un sitio web profesional, ¿no deberíamos usar un campo de URL de LinkedIn en su lugar? Estas decisiones dependen claramente de la aplicación y no pueden ser decididas ni por CMS ni por el complemento. El complemento OctoberCMS llamado Usuario implementa usuarios pero sin ningún campo de usuario, además del complemento User Plus agrega varios campos de usuario arbitrarios, que posiblemente no sean suficientes, por lo que el complemento User Plus + agrega otros campos de usuario. ¿Cuándo, dónde y cómo detenemos este proceso? Otro problema es cuando no hay espacio para agregar nuevas capacidades a una entidad, lo que lleva a la creación de otra entidad extremadamente similar, solo para respaldar esas capacidades requeridas. Por ejemplo, OctoberCMS se envía con páginas y permite crear «páginas estáticas» a través de un complemento. Su naturaleza es la misma: tanto las páginas como las páginas estáticas se guardan como archivos estáticos. La única diferencia entre ellos (que yo sepa) es que las páginas estáticas se editan con un editor visual en lugar del editor HTML y se pueden agregar a los menús. En mi opinión, solo las diferencias estructurales, como tener una entidad guardada como un archivo estático y la otra almacenada en la base de datos, podrían justificar la creación de una segunda entidad para una página (hay una solicitud de extracción para hacer esto), pero para características simples, como es el caso actualmente, constituye un desarrollo hinchado. En resumen, una aplicación OctoberCMS bien implementada puede ser muy simple y eficiente (por ejemplo, eliminando la base de datos cuando no se necesita), pero por el contrario también puede volverse innecesariamente inflada, lo que obliga a los desarrolladores a implementar varias soluciones para entidades similares, y que pueden ser muy confuso de usar («¿Debería usar una página o una página estática?»). Debido a que ni WordPress ni OctoberCMS han encontrado una solución perfecta para eliminar la hinchazón, debemos diseñar la arquitectura de la aplicación con cuidado para evitar problemas en el futuro.

Creación de contenido  #

Gutenberg hace dos contribuciones importantes a WordPress: utiliza componentes como la unidad para construir sitios (que ofrece varias ventajas sobre la codificación de blobs de HTML), e introduce una entidad llamada «bloque» que, una vez que se completa la Fase 2 de Gutenberg (presumiblemente en 2019), proporcionará una forma unificada de incorporar contenido en el sitio, lo que permitirá una experiencia de usuario más simple en lugar del proceso más caótico de agregar contenido a través de códigos cortos, botones TinyMCE, menús, widgets y otros.

Desde WordPress 5.0, Gutenberg es la experiencia de creación de contenido predeterminada. (Vista previa grande)

Debido a que los bloques de Gutenberg pueden producir y guardar HTML estático como parte de la publicación del blog, la instalación de muchos bloques de Gutenberg no se traduce necesariamente en hinchazón en el sitio web del lado del usuario, pero puede mantenerse restringido al lado del administrador. Por lo tanto, podría decirse que Gutenberg puede considerarse un buen enfoque para producir sitios web de manera modular, con una experiencia de usuario simple pero poderosa para crear contenido. Posiblemente el mayor inconveniente es el requisito (inevitable, pero no tan fácil) de aprender React, cuya curva de aprendizaje es bastante empinada. Si los componentes de React son la unidad básica para crear contenido en WordPress, October CMS se basa en la premisa de que conocer el buen HTML antiguo es suficiente para crear sitios. De hecho, al crear una página, simplemente se nos presenta un editor de HTML (marcado):

Creando una página en OctoberCMS. (Vista previa grande)

Si la página fuera únicamente HTML estático, entonces no habría necesidad de un CMS. En cambio, las páginas de OctoberCMS se escriben utilizando plantillas Twig que se compilan en un código PHP optimizado. Pueden seleccionar un diseño para incluir el andamiaje de la página (es decir, elementos repetitivos, como el encabezado, pie de página, etc.), pueden implementar marcadores de posición, que se definen en el diseño para permitir que la página personalice el contenido y pueden incluir parciales, que son fragmentos de código reutilizables. Además, las páginas pueden incluir bloques de contenido, que son archivos de texto, HTML o Markdown que se pueden editar por sí mismos y pueden adjuntar componentes.que son funcionalidades implementadas a través de complementos. Y finalmente, cuando HTML no es suficiente y necesitamos producir código dinámico, podemos agregar funciones PHP. El editor tiene que ver con HTML. No hay Tiny MCE textarea para agregar contenido de manera visual, al menos no a través de la experiencia predeterminada (esta funcionalidad pertenece a plugin-land). Por lo tanto, tener conocimientos de HTML podría considerarse imprescindible para utilizar OctoberCMS. Además, las diferentes entradas para crear contenido (páginas, diseños, marcadores de posición, parciales, bloques de contenido, componentes y funciones PHP) pueden ser muy efectivas, sin embargo, ciertamente no es tan simple como a través de la interfaz de bloque unificada de WordPress. Incluso puede volverse más complejo, ya que también se pueden agregar otros elementos (como páginas y menús estáticos, y fragmentos), y algunos de ellos, como las páginas y las páginas estáticas, aparentemente brindan la misma funcionalidad, lo que hace confuso decidir cuándo usar uno u otro. Como resultado, me atrevo a decir que si bien casi cualquier persona puede usar un sitio de WordPress desde el lado del administrador, OctoberCMS es más amigable para los desarrolladores que para el usuario no técnico, por lo que los programadores pueden encontrar un placer de usar, pero algunos otros los roles (especialistas en marketing, personal de ventas y similares) pueden encontrarlo no intuitivo.

Administrador de medios  #

Tanto WordPress como OctoberCMS se envían con un Administrador de medios que permite agregar archivos multimedia al sitio sin esfuerzo, admitiendo la adición de varios archivos simultáneamente a través de una interfaz de arrastrar y soltar y mostrar las imágenes dentro del área de contenido. Se ven y se comportan de manera similar; las únicas diferencias notables que encontré son que el Administrador de medios de WordPress permite incrustar galerías de imágenes, y el Administrador de medios de octubre permite crear manualmente una estructura de carpetas donde colocar los archivos cargados.

OctoberCMS se envía con un potente administrador de medios. (Vista previa grande)

Sin embargo, desde la introducción de Gutenberg, las capacidades multimedia de WordPress se han mejorado enormemente, lo que permite incrustar videos, imágenes y galerías de fotos en su lugar en comparación con un TinyMCE textarea (que solo proporciona una versión no precisa de cómo se verá en el sitio) y desbloquear funciones potentes pero fáciles de usar, como se muestra en este video.

Internacionalización  #

El núcleo de WordPress utiliza gettext para permitir la traducción de temas y complementos. A partir de un archivo .pot que contiene todas las cadenas para traducir, necesitamos crear un archivo .po que contenga su traducción al idioma/configuración regional correspondiente, y luego este archivo se compila en un archivo .mo binario adecuado para una extracción de traducción rápida. Las herramientas para realizar estas tareas incluyen GlotPress (en línea) y Poedit (aplicación descargable). Convenientemente, este mecanismo también funciona para la localización del lado del cliente para Gutenberg.

Poedit permite traducir cadenas de temas y complementos para WordPress. (Vista previa grande)

WordPress ofrece soluciones en el núcleo para traducir contenido, esta funcionalidad es proporcionada por complementos que ofrecen diferentes estrategias para almacenar y administrar el contenido traducido. Por ejemplo, mientras que los complementos como Polylang y WPML almacenan cada traducción en su propia fila de una tabla de base de datos personalizada (que está limpia ya que no mezcla contenido, pero más lento ya que requiere INNER JOIN dos tablas adicionales al consultar la base de datos), complemento qTranslate X almacena todas las traducciones en el mismo campo de la tabla de la base de datos original (más rápido para consultar los datos, pero el contenido mezclado puede producir daños en el sitio si se deshabilita el complemento). Por lo tanto, podemos comparar precios y decidir la estrategia más adecuada para nuestras necesidades. OctoberCMS no envía la funcionalidad multilingüe a través de su núcleo, sino como un complemento creado por el equipo de OctoberCMS que garantiza una integración impecable en el sistema. Desde un punto de vista funcional, este complemento cumple lo que promete. Desde el punto de vista del desarrollo, no es del todo ideal cómo funciona realmente este complemento. En WordPress, una página es simplemente una publicación con el tipo de publicación «página» y hay un único mecanismo de traducción para ellas, pero en OctoberCMS, hay entidades «página», «página estática» y «publicación de blog» y, aunque bastante similar, ¡requieren tres implementaciones diferentes para sus traducciones! Luego, el contenido de una «página» puede incluir códigos de mensaje (por ejemplo, códigos llamados nav.content,header.title, etc.), cada uno de los cuales contiene sus traducciones para todas las configuraciones regionales como un objeto JSON serializado en la tabla de la base de datos rainlab_translate_messages. El contenido de una “página estática” se crea en un nuevo archivo estático por configuración regional, sin embargo, todas las URL traducidas para todas las configuraciones regionales se almacenan no en su archivo correspondiente sino en el archivo del idioma predeterminado. El contenido de la «publicación de blog» se almacena como un objeto JSON serializado con una fila por configuración regional en la tabla de la base de datos rainlab_translate_attributes y la URL traducida se almacena con una fila por configuración regional en la tabla de la base de datos rainlab_translate_indexes. No sé si esta complejidad se debe a cómo se implementó el complemento o si se debe a la arquitectura de OctoberCMS. Cualquiera que sea el caso, esta es otra instancia de hinchazón no deseada en el lado del desarrollo.

Gestión de complementos  #

Tanto WordPress como OctoberCMS ofrecen un administrador de complementos sofisticado que permite buscar complementos, instalar nuevos complementos y actualizar los complementos instalados actualmente a su última versión, todo desde el backend.

OctoberCMS permite mantener todos los complementos actualizados sin esfuerzo. (Vista previa grande)

Gestión de dependencias  #

OctoberCMS utiliza Composer como el administrador de paquetes de elección, lo que permite que los complementos descarguen e instalen sus dependencias cuando se instalan, brindando así una experiencia indolora. WordPress, en el lado opuesto, no ha adoptado oficialmente Composer (o cualquier administrador de dependencia de PHP) porque la comunidad no puede ponerse de acuerdo si WordPress es un sitio o una dependencia del sitio. Por lo tanto, si requieren Composer para sus proyectos, los desarrolladores deben agregarlo por su cuenta. Con el cambio a Gutenberg, npm se ha convertido en el administrador de dependencias de JavaScript preferido, con un popular kit de herramientas para desarrolladores que depende de él, y las bibliotecas del lado del cliente se lanzan constantemente como paquetes autónomos en el registro de npm.

Interacción con la base de datos  #

WordPress proporciona funciones para recuperar datos de la base de datos (como get_posts) y almacenarlos (como wp_insert_post y wp_update_post). Al recuperar datos, podemos pasar parámetros para filtrar, limitar y ordenar los resultados, con el fin de indicar si el resultado debe pasarse como una instancia de una clase o como un arreglo de propiedades y otros. Cuando la función no satisface completamente nuestros requisitos (por ejemplo, cuando necesitamos hacer una INNER JOIN con una tabla personalizada), podemos consultar la base de datos directamente a través de la variable global $wpdb. Al crear un complemento con un tipo de publicación personalizada, lo más probable es que el código ejecute consultas SQL personalizadas para recuperar y/o guardar datos en tablas personalizadas. En resumen, WordPress intenta proporcionar acceso a la base de datos a través de funciones genéricas en la primera etapa y mediante un acceso de bajo nivel a la base de datos en la segunda etapa. OctoberCMS emplea un enfoque diferente: en lugar de conectarse a la base de datos de inmediato, la aplicación puede usar el ORM Eloquent de Laravel para acceder y manipular los datos de la base de datos a través de instancias de clases llamadas Modelos, haciendo que la interacción con la base de datos también se base en Programación Orientada a Objetos. Es un acceso de alto nivel; con solo seguir las reglas sobre cómo crear tablas y establecer relaciones entre entidades, un complemento puede recuperar y/o guardar datos sin escribir una línea de SQL. Por ejemplo, el siguiente código recupera un objeto de la base de datos a través del modelo Flight, modifica una propiedad y la almacena nuevamente:

$flight = Flight::find(1);
$flight->name = 'Darwin to Adelaide';
$flight->save();

Actualización del modelo de datos  #

Otra razón del éxito de WordPress (además de no romper la compatibilidad con versiones anteriores) ha sido su arquitectura de base de datos, que fue diseñada para permitir que las aplicaciones crezcan con el tiempo. Este objetivo se logra mediante propiedades «meta», es decir, propiedades que se pueden agregar libremente a un objeto de base de datos en cualquier momento. Estas propiedades no se almacenan en una columna de la tabla de entidad correspondiente (ya sea wp_posts, wp_users, wp_comments o wp_terms), pero en su lugar como una fila en la tabla de “meta” correspondiente (wp_postmeta, wp_usermeta, wp_commentmeta o wp_termmeta) y se recuperan haciendo una INNER JOIN. Por lo tanto, aunque la recuperación de estos valores meta es más lenta, brindan una flexibilidad ilimitada y el modelo de datos de la aplicación rara vez necesita ser rediseñado desde cero para implementar alguna funcionalidad nueva.

WordPress proporciona una flexibilidad ilimitada para actualizar el modelo de datos de la aplicación. (Vista previa grande)

OctoberCMS no usa metapropiedades, sino que puede almacenar varios valores arbitrarios, que no se asignan directamente como columnas en las tablas de la base de datos, como un objeto JSON serializado. De lo contrario, cuando un objeto necesita alguna propiedad nueva, necesitamos agregar una nueva columna en la tabla correspondiente (que es la razón detrás de los complementos User Plus y User Plus +, mencionados anteriormente). Para actualizar el esquema de la base de datos de la aplicación, OctoberCMS se basa en las Migraciones de Laravel, que son conjuntos de instrucciones para ejecutar contra el esquema (como agregar o quitar una columna, cambiar el nombre de un índice, etc.) y que se ejecutan al actualizar el software (por ejemplo, cuando instalar la nueva versión de un complemento).

Capacidades sin cabeza  #

Tanto WordPress como OctoberCMS se pueden usar sin cabeza, es decir, tratar el CMS como un sistema de gestión de contenido que hace que el contenido sea accesible a través de API, lo que permite representar el sitio web en el lado del cliente y puede impulsar otras aplicaciones (como aplicaciones móviles). De hecho, WordPress se está dirigiendo constantemente hacia los CMS sin cabeza, ya que el propio editor de contenido de Gutenberg trata a WordPress como un CMS sin cabeza (y, como consecuencia, Gutenberg también puede trabajar con cualquier otro CMS, como demuestra Drupal Gutenberg). Un sistema sin cabeza necesita implementar alguna API para devolver los datos, como REST y GraphQL. WordPress admite REST a través de WP REST API (fusionada en el núcleo), exponiendo los puntos finales bajo una ruta predefinida /wp-json/wp/v2/...; OctoberCMS admite REST a través de complementos RESTful y API Generator, que permiten crear puntos finales personalizados y, como consecuencia, admiten el control de versiones como parte de la URL del punto final y pueden ofrecer una mejor seguridad contra bots. Con respecto a GraphQL, WordPress lo admite a través de WPGraphQL, mientras que OctoberCMS actualmente no tiene implementaciones para él. Lo que es más importante, un sistema sin cabeza debe ofrecer potentes capacidades de gestión de contenido. Como se mencionó anteriormente, WordPress tiene una arquitectura de base de datos muy sólida, que ofrece una gran cantidad de entidades de datos (usuarios, publicaciones y publicaciones personalizadas, páginas, categorías, etiquetas y taxonomías personalizadas, comentarios) sobre las cuales la aplicación puede modelarse razonablemente bien, meta propiedades para extender estas entidades de datos (permitiendo que la aplicación actualice su modelo de datos en consecuencia y sin cambios importantes), y con el complemento Advanced Custom Fields llenando el vacío para construir relaciones entre las entidades de datos. Además, el complemento VersionPress permite controlar la versión del contenido de la base de datos mediante Git. Por lo tanto, WordPress es sin duda una buena opción para administrar contenido, como se demostró en varios proyectos en la naturaleza. Por su parte, y como se mencionó anteriormente, OctoberCMS puede omitir la base de datos y comportarse como un sistema de archivos planos, o puede tener una base de datos y comportarse como un híbrido, almacenando el contenido de las páginas como archivos estáticos y publicaciones de blog (y otros) en la base de datos. Como consecuencia, el contenido no está centralizado y su gestión implica un enfoque diferente. Por ejemplo, aunque podemos usar Git para controlar las versiones de las páginas, no hay soporte para controlar las versiones de la base de datos per se; la solución a esto es rellenar los datos en la base de datos a través de Seeders que, al ser código, se puede poner bajo control de versiones y ejecutar en el momento de la implementación. Además, OctoberCMS no ofrece un modelo de base de datos integrado con entidades de datos predefinidas que puedan satisfacer las necesidades de la mayoría de las aplicaciones. Por lo tanto, lo más probable es que la aplicación necesite un desarrollo personalizado para implementar su modelo de datos, lo que significa más trabajo, pero también significa que puede ser más eficiente (por ejemplo, acceder a una propiedad desde una columna es más rápido que desde una fila en otra tabla hasta un INNER JOIN, que es el caso de las metapropiedades de WordPress).

Soporte CLI  #

Se puede interactuar con WordPress y OctoberCMS desde la consola a través de una interfaz de línea de comandos (CLI): WordPress a través de WP-CLI y OctoberCMS a través de Artisan de Laravel. Además de los comandos de Laravel, OctoberCMS implementa varios comandos personalizados para actualizar el sistema, migrar la base de datos y otros. Estas herramientas hacen que sea muy conveniente acceder al sitio desde fuera de un navegador, por ejemplo, con fines de prueba.

Alojamiento gestionado  #

No es un problema encontrar un proveedor de alojamiento administrado para un sitio de WordPress: dada la participación de mercado de WordPress, hay docenas (si no cientos) de proveedores compitiendo entre sí por el negocio, lo que constituye un mercado muy dinámico. El único problema es encontrar el proveedor más adecuado para nuestros sitios específicos en función de todas sus ofertas, que pueden variar según el precio, la calidad, el tipo (servicios compartidos o dedicados), el ancho de banda y el tamaño de almacenamiento, la atención al cliente, la ubicación, la frecuencia de renovación. de equipos, y otras variables en las que podemos navegar principalmente a través de revisiones comparándolas (como ésta, ésta o ésta). A pesar de que nada se acerca a WordPress, OctoberCMS todavía disfruta de la oferta de varios proveedores de alojamiento, lo que permite cierta consideración y selección. Muchos de ellos figuran como socios de October, y varios otros se encuentran DuckDuckGoing, pero como no he encontrado ninguna revisión independiente de ellos o artículo que los compare, la tarea de encontrar el más adecuado requerirá un poco de esfuerzo.

Mercado, ecosistema y costo  #

El ecosistema comercial de WordPress se estima en 10 mil millones $/año (USD), evidenciando cuántas personas y empresas han logrado ganarse la vida ofreciendo productos y servicios de WordPress, como la creación de sitios, hosting, temas y plugins, desarrollo, soporte, seguridad y otros. De hecho, su tamaño es tan grande que incluso está inflado, lo que significa que es muy común encontrar diferentes complementos que resuelvan el mismo problema, complementos que no se entregan, tienen un rendimiento inferior o no se han actualizado durante años, y temas que parecen parecerse entre sí. Sin embargo, al crear un nuevo sitio, el tamaño y la variedad del ecosistema también significa que lo más probable es que encontremos al menos un complemento que implemente cada una de las funcionalidades requeridas, lo que nos permitirá ahorrar dinero al no tener que desarrollar la funcionalidad nosotros mismos, y el la disponibilidad de temas personalizables permite producir un sitio de apariencia razonablemente distintiva con un esfuerzo mínimo. Como consecuencia, podemos crear y lanzar fácilmente un sitio de WordPress por menos de 100 $ USD, lo que convierte a WordPress en una opción sensata para proyectos de cualquier presupuesto. Siendo relativamente nuevo (solo cinco años hasta ahora), OctoberCMS ciertamente no disfruta de nada parecido al tamaño del mercado y ecosistema de WordPress, sin embargo, ha estado creciendo constantemente, por lo que su tamaño seguramente será más grande. Actualmente, su mercado cuenta con más de 600 complementos y solo un puñado de temas. Con respecto a los complementos, el equipo de OctoberCMS está solicitando a la comunidad que se esfuerce en la creación de complementos originales, entregando funciones que aún no proporciona ningún otro complemento. Por lo tanto, aunque más de 600 complementos no parece mucho, al menos estos se traducen en más de 600 funcionalidades diferentes. De esta manera, aunque no es posible elegir entre varios proveedores, al menos podemos esperar que se cubran esas características básicas del sitio web (como blogs, comentarios, foros, integración con redes sociales, comercio electrónico y otros). Además, dado que los fundadores de octubre están revisando personalmente todos los complementos enviados y juzgándolos de acuerdo con las pautas de calidad, podemos esperar que estos complementos funcionen como se esperaba. Como otra ventaja, los complementos de October pueden incorporar elementos de los paquetes de Laravel (aunque no todos son compatibles con October, al menos no sin algunos trucos). Con respecto a los temas, el bajo número de ofertas implica que lo más probable es que necesitemos desarrollar nuestro propio tema contratando a un desarrollador para la tarea. De hecho, me atrevo a decir que el tema en OctoberCMS probablemente será un desarrollo personalizado, ya que los temas y los complementos no están completamente desacoplados (como se explicó anteriormente), con la consecuencia de que es más difícil que surja un mercado para temas fácilmente intercambiables. (Sin embargo, este es un problema temporal: una vez que se resuelva esta solicitud de extracción, las páginas podrán almacenarse en la base de datos y el intercambio de temas no debería interrumpir la funcionalidad). En mi opinión, debido a las ofertas más pequeñas de temas y complementos, crear un sitio simple con OctoberCMS será más costoso que crear un sitio simple de WordPress. Sin embargo, para sitios complejos, la mejor arquitectura de October (paradigmas de programación orientada a objetos y modelo-vista-controlador) hace que el software sea más fácil de mantener y, como consecuencia, potencialmente más barato.

Comunidad  #

Al ser parte y tener acceso, la comunidad de WordPress representa una de las razones más convincentes para usar WordPress. Esto no es simplemente una cuestión de tamaño (alimentando a casi un tercio de todos los sitios web en el mundo, hay muchas partes interesadas involucradas con WordPress y su comunidad es representativamente grande) sino también una cuestión de diversidad. La comunidad de WordPress involucra a personas de diferentes profesiones (desarrolladores, comercializadores, diseñadores, bloggers, vendedores, etc.), de todos los continentes y países, que hablan innumerables idiomas, de diferentes orígenes sociales, educativos y económicos, con o sin discapacidades, de organizaciones corporativas, sin fines de lucro y gubernamentales, y otras. Por lo tanto, es muy probable que, para cualquier problema que encontremos, alguien pueda ayudar en cualquiera de los foros de soporte. Y contribuir a WordPress también es bastante sencillo: el grupo Make WordPress reúne a las partes interesadas interesadas en apoyar diferentes proyectos (accesibilidad, diseño, internacionalización y muchos otros) y organiza cómo y con qué frecuencia se comunican, principalmente a través de algún canal dedicado en su espacio de trabajo de Slack. Además, la comunidad de WordPress es real y tangible: no existe simplemente en línea, pero se reúne fuera de línea en WordCamps y reuniones en todo el mundo; En 2018, hubo un total de 145 WordCamps en 48 países con más de 45,000 entradas vendidas y un total de 5,400 eventos de encuentro de 687 grupos de encuentro. Por lo tanto, es probable que haya un capítulo local cercano al que cualquiera pueda unirse para pedir ayuda, aprender a usar la plataforma, seguir aprendiendo de forma regular y enseñar a otros también. En este sentido, WordPress no es solo un CMS sino, lo que es más importante, también es gente, y considerar dejar WordPress nunca debe hacerse solo por sus méritos técnicos sino también por el poder de su comunidad.

WordCamp Kuala Lumpur 2017 atrajo a más de 200 asistentes, provenientes de varios países. (Vista previa grande)

La comunidad de OctoberCMS no se acerca en tamaño o diversidad a la de WordPress, a pesar de que ha estado creciendo constantemente debido a la creciente popularidad del software. October proporciona un foro de soporte para pedir ayuda, sin embargo, no es muy activo. Existe un espacio de trabajo de Slack que es bastante activo y donde, lo que es más importante, los fundadores de October participan regularmente, lo que ayuda a garantizar que todas las consultas se aborden correctamente. Este canal es una gran fuente para aprender trucos y consejos de bajo nivel sobre el software, sin embargo, está dirigido principalmente a desarrolladores: no existen canales de accesibilidad, diseño, internacionalización y otros temas como en la comunidad de WordPress, al menos no todavía. Actualmente, no hay conferencias sobre OctoberCMS, pero sí Laracon, la conferencia para la comunidad de Laravel.

Mantenimiento y desarrollo #

¿Podemos confiar en que el software se mantendrá a largo plazo, de modo que si decidimos iniciar un proyecto hoy, no tendremos que migrar a otra plataforma en el futuro? ¿Cuántas personas se están encargando de desarrollar el software? ¿Y quién está decidiendo en qué dirección se mueve el software? WordPress, que alimenta un tercio de todos los sitios del mundo, no le faltan partes interesadas que contribuyan al software; por lo tanto, no debemos temer que el software se deteriore. Sin embargo, WordPress está pasando por deliberaciones internas sobre su modelo de gobernanza, y muchos miembros de la comunidad expresaron que las decisiones relativas a la dirección de WordPress las está tomando Automattic, la empresa que gestiona WordPress.com de forma unilateral.. El centro de atención de esta percepción fue la decisión de lanzar Gutenberg, con la que muchos miembros no estuvieron de acuerdo y que sufrió una falta de comunicación adecuada por parte de los líderes del proyecto durante su desarrollo y lanzamiento. Como consecuencia, muchos miembros de la comunidad están cuestionando el papel de «dictador benigno», que históricamente se le ha otorgado al fundador de WordPress y CEO de Automattic, Matt Mullenweg, y están investigando diferentes modelos de gobernanza para encontrar uno más adecuado para el futuro de WordPress. Aún está por verse si esta búsqueda produce algún resultado o si el status quo persevera. Las decisiones relativas a la dirección de OctoberCMS las toman principalmente los fundadores Alexey Bobkov y Samuel Georges y el desarrollador y administrador de la comunidad Luke Towers, que mantienen el proyecto en marcha. OctoberCMS no puede darse el lujo de tener un problema de gobernanza todavía: su preocupación actual es cómo hacer que el proyecto sea sostenible generando ingresos para los mantenedores del software central.

Documentación  #

La documentación de WordPress en su propio sitio no es extremadamente completa, pero hace el trabajo razonablemente bien. Sin embargo, al tener en cuenta toda la documentación sobre WordPress de todas las fuentes, como sitios generales (SnippetsBoard, trucos CSS y muchos otros), sitios especializados (WPShout, WPBeginner y muchos otros), blogs personales, cursos en línea y así sucesivamente, prácticamente no hay ningún aspecto relacionado con el manejo de WordPress que aún no se haya cubierto. OctoberCMS no disfruta de nada parecido a los muchos cursos, tutoriales o publicaciones de blogs de terceros tanto como lo hace WordPress, sin embargo, la documentación en su sitio es razonablemente completa y ciertamente suficiente para comenzar a codificar. Los fundadores de October también agregan regularmente nueva documentación a través de tutoriales. Un aspecto que personalmente disfruté es la duplicación de la documentación de Laravel en la documentación de octubre para todo lo relevante, por lo que el lector no debe llenar los vacíos por sí mismo y tener que adivinar cuál es el dominio de October y cuál el de Laravel. Sin embargo, esto no es 100% perfecto. La documentación de October utiliza términos que se originan en Laravel, como middleware, contenedores de servicios, fachadas y contratos, sin explicar adecuadamente cuáles son. Entonces, leer la documentación de Laravel con anticipación puede ser útil (afortunadamente, la documentación de Laravel es decididamente completa, y los screencasts de Laravel, Laracasts, son otra gran fuente de aprendizaje, no solo en lo que respecta a Laravel sino al desarrollo web en general).

Conclusión  #

Me propuse descubrir qué características pueden ser atractivas para los desarrolladores que buscan alternativas a WordPress comparando WordPress con un CMS similar, que definí como gratuito y de código abierto, basado en PHP y produciendo contenido dinámico, y disfrutando del apoyo de alguna comunidad. De los CMS que cumplen estas condiciones, elegí OctoberCMS para la comparación debido al conocimiento que obtuve al respecto y porque aprecié su enfoque de codificación limpio y modular proporcionado por Laravel, que podría ofrecer una perspectiva fresca y moderna para los sitios de construcción. Este artículo no pretendía elegir un ganador, sino simplemente analizar cuándo tiene sentido elegir uno u otro CMS, destacando sus fortalezas y debilidades. No existe el «mejor» CMS: solo el CMS más adecuado para una situación específica. Además, cualquiera que busque un CMS para usar en un proyecto en particular con un equipo específico y con un presupuesto determinado, debe investigar un poco y comparar todas las ofertas disponibles para descubrir cuál es el más adecuado para el contexto particular. Es importante no limitarse a unos pocos CMS como he hecho aquí en este artículo, sino darles una oportunidad a todos. En una nota personal, como desarrollador, lo que encontré en OctoberCMS es realmente atractivo para mí, principalmente su capacidad para construir aplicaciones modulares como se proporciona a través de Laravel. Sin duda consideraría este CMS para un nuevo sitio web. Sin embargo, en el proceso de redacción de este artículo también «redescubrí» WordPress. Al ser tan popular, WordPress recibe más críticas de las que le corresponden, principalmente relacionadas con su antiguo código base y, desde hace poco, la introducción de Gutenberg; sin embargo, WordPress también tiene ciertas características excelentes (como su modelo de base de datos súper escalable) que rara vez se elogian, pero que también deben tenerse en cuenta. Y lo más importante, WordPress no debe considerarse solo en sus aspectos técnicos: en particular, el tamaño de su comunidad y ecosistema lo coloca uno o dos niveles por encima de sus alternativas. En una palabra, Como nota final, me gustaría señalar que explorar cómo funciona otro CMS es una actividad muy gratificante en sí misma, independientemente de la decisión que se tome sobre si usar ese CMS en particular o no. En mi caso, había estado trabajando durante años solo en WordPress, y profundizar en OctoberCMS fue muy refrescante, ya que me enseñó muchas cosas (como la existencia de recomendaciones de estándares PHP) a las que no había estado expuesto a través de WordPress. Ahora puedo decidir cambiar de CMS o ceñirme a WordPress sabiendo cómo producir un mejor código.

Más información sobre SnippetsBoard:  #

¿Qué opinas?

Escrito por Wombat

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Wix vs WordPress: 2 herramientas principales para construir tu sitio web comparadas

Los 12 mejores temas Responsive de WordPress religiosos