Bolt, una buena alternativa a WP: impresiones sobre el sofisticado, ligero y simple CMS

Hemos programado Bits & Bytes con el CMS Bolt, a raíz de esta experiencia quería aportaros mis primeras impresiones. De hecho, os escribo desde el editor de texto de Bolt y espero que mis impresiones no estén inducidas por esta decisión :-).

Primeras impresiones

La instalación es sencilla, simplemente os bajáis el proyecto desde la página web de Bolt.cm, y desde el primer minuto, empezáis a trabajar, solo tenéis que indicarle los datos de conexión y os crea una base de datos tan sucinta como la siguiente:

Desde el principio ya tenemos los tipos de contenidos páginas y entradas, y la posibilidad de crear usuarios.

Bolt se creó como proyecto hace menos de 3 años (poco tiempo) así que carece de muchas pantallas amigables de configuración, sin embargo, consigue mucha potencia con herramientas más amenas para desarrolladores (no así para los clientes) utilizando archivos de texto yml: config.yml, routing.yml, contenttypes.yml etc... que se pueden modificar desde el panel de control con un sencillo editor.

Además uno de sus fuertes consiste en la facilidad para crear tipos de contenidos (contenttypes) con pocos pasos y fácilmente, cosa algo más compleja incluso en plataformas tan conocidas como Wordpress.

A mí particularmente estas 2 características de la plataforma me gustan.

Dada la "juventud" del CMS, tiene pocas extensiones, aunque a medida que Bolt vaya creciendo esta escasez va a ir cambiando.

Una buena base para un sofisticado backend

Con Bolt, el "CMS sofisticado, ligero y simple", podemos construir webs más complejas que las que nos proporciona la plataforma por defecto, programando extensiones customizadas, Bolt nos supone una muy buena base para construirse un magnífico backend con todo lo que necesita un CRUD, eficaz y rápido.

Partimos del código base de Bolt, y cualquier funcionalidad extra la añadimos mediante temas y extensiones.

Lo que puede chocar más a un desarrollador WP, es que los temas NO tienen código PHP, los temas se valen de todas las librerías del CMS y Twig y cualquier otra funcionalidad la añades mediante extensiones.

Esta es la tendencia natural en cualquier lenguaje de programación hoy día, desde PHP a .NET etc... el famoso modelo MVC, o HMVC.

Es el momento de colaborar

Os animo a los programadores PHP que me leáis a construir páginas webs en Bolt por los siguientes motivos:

- un motivo fundamental es que váis a empezar sobre una buena base tanto para crear un gestor de contenidos como para refrescar / aprender las mejores costumbres de programación actualmente en el mundo PHP, y esto es así porque es un proyecto bien construido a nivel de elegancia de código:

  1. sigue las guías de estilo de programación de PHP PSR-2 (o coding style guide).
  2. utiliza el modelo de programación MVC (Model-View-Controller). La vista es Twig, el modelo lo proporciona Doctrine y el controlador Silex.
  3. utiliza el gestor de paquetería Composer para autocargar clases y mantener las dependencias actualizadas. Al estar desarrollado con namespaces (PHP >=5.3.0) y autoloaders, no sufrimos el infierno de los include.
  4. su código se apoya en librerías que se están convirtiendo en estándar como son Silex, Twig, Symfony, Pimple, Swiftmailer, Monolog. Con lo cual, cuando empezáis a tocar Bolt, será familiar y fácil de entender para el programador PHP. Por ejemplo, en Bolt se utiliza la barra de depuración (debug bar) o profiler de Symfony.

    Para que os hagáis una idea os muestro captura de las librerías de terceros que utilizan:

    No es un proyecto donde debas entender código ajeno al 100% pues el 80% del código son librerías populares y open source.

  5. Utiliza Twig como motor de plantillas, así que el modo de renderizar HTML le suena a cualquier programador PHP. Se hace un uso intensivo de extensiones de Twig, y la caché de Twig mejora el rendimiento.

  6. Como repositorio de código utilizan Github, aceptan y son muy proactivos con los PRs(pull requests).

Ninguno de estos puntos los cumple Wordpress, ya que se creó con PHP 4 sin orientación a objetos (aunque haya cambiado algo), y sufre a nivel de código el peso de su éxito, simplemente no pueden actualizar el código porque dejarían de funcionar millones de sitios (sin embargo, Drupal 8 incluirá Symfony).

Significa esto que Bolt es mejor, no, no lo es visto desde el siguiente prisma: seamos claros, desde el punto de vista del usuario final lo importante es la rentabilidad, los recursos, la velocidad, la seguridad y una buena documentación, cómo funcione y si es código spaguetti le da igual.

No obstante, como programadores, no es una buena costumbres programar a base de GLOBALs y funciones sin orientación a objeto, hay que ir un poco más allá porque se pueden obtener beneficios claros de una programación elegante: lo primero buenas costumbres como programador, para que vuestro código no acabe siendo un spaguetti western, elementos desacoplados, logs consistentes, un profiler de primera como es el de Symfony etc...

La comunidad de Bolt

Importante para apoyar un proyecto opensource, primar si se mueve la comunidad, qué cantidad de miembros hay, y si son personas colaborativas que van a aceptar fixes, sugerencias y críticas.

En este aspecto Bolt está respaldado por una comunidad de programadores bastante open-minded a todo lo anteriormente expuesto.

Podéis echarle un vistazo a los siguientes enlaces:

http://discuss.bolt.cm

https://github.com/bolt/bolt/issues

http://stackoverflow.com/questions/tagged/bolt-cms

De hecho recientemente nos aceptaron 2 fixes / PRs (pull requests) sin problemas y ellos muy agradecidos, consistían en unos bugs con los que tropecé desarrollando mi extensión de Bolt de HTML minifier.

Por ello es un proyecto en el que se puede crear algo nuevo y ser pionero, no es como WP donde para cualquier plugin que crees ya existen 10 en el mercado.

Os animo a uniros a la comunidad de Bolt.

Por mi parte ya subí una extensión online y tengo 2 más en el horno :-) , llegué a terminarla en apenas 2 días después de conocer la plataforma:

https://extensions.bolt.cm/view/5172e07a-7afa-11e5-86fe-396a68cabe59

Qué tiene y qué no tiene Bolt / salida comercial de Bolt

En este apartado podréis calibrar si os conviene realmente utilizar comercialmente Bolt como gestor de contenidos.

Cuando se trata de un proyecto para un cliente es aún más importante saber las características que nos ofrece o no, y entiendo que de faltar funcionalidades importantes, uno prefiera dirigirse a CMS más maduros (aunque muchos de ellos (WP) más imperfectos según los patrones de diseño de programación).

Tiene:

- gestor de contenidos: páginas, entradas, o el que uno quiera, con diferentes opciones de configuración para cada tipo de contenido.

- Creación de tipos de contenidos fácil con campos customizados, no hay que recurrir como en WP a extensiones como "Custom Field Template" o similar como Advanced Custom Fields, ya viene implementado de un modo sencillo, aunque aún se debe mejorar mucho para llegar al nivel de ACF.

- WYSIWYG, utiliza CKeditor.

- gestión de permisos de usuario dividido en varios roles.

- instalador de extensiones y las extensiones fundamentales: sitemap, disqus, forms, social buttons, importación desde Wordpress, proteger página con contraseña.

- caché: utiliza la caché de Twig.

- gestión de archivos con miniaturas

- el panel de control utiliza diseño responsive.

- tiene de serie un live-editor, o una extensión llamada "editable" que te permite modificar un artículo desde el blog sin pasar por la administración (esto en WP se tiene con un plugin). De hecho, mientras escribo, lo estoy utilizando.

Qué no tiene:

- widgets

- no tiene un buen gestor multimedia, solo implementa un repositorio de archivos con miniaturas.

- extensiones de todo tipo: galerías de fotos (tipo nextgen gallery), calendarios, nubes de tags, backups etc...cualquier otra extensión que utilicéis probablemente. Esto puede ser un deal breaker para no adoptar Bolt. Las extensiones que existen son sorprendentemente escasas, me sorprende porque son realmente fáciles de implementar.

- faltan pantallas donde por ejemplo añadir categorías de un modo sencillo, esto se hace con archivo de configuración (taxonomies.yml) y eso es un problema de cara al cliente final. También hay que decir que cualquier programador que se precie hace una pantalla de estas en 1 hora a lo sumo.

- cuando se suben archivos de imagen, no se redimensiona a diferentes tamaños, ni te da la opción de elegir entre diferentes formatos.

- Cuando eliminas un artículo, no va a la papelera. Tema menor, pero quería reseñarlo.

- No existen revisiones ni autoguarda, aunque sí guarda sin recargar página.

Para nosotros en Diseño Activo lo que echemos en falta más son las galerías de imágenes tipo nextgen. No obstante, es cuestión de tiempo que algún programador (o nosotros mismos) lo implemente.

Comercialmente Bolt me parece un buen punto de partida para un proyecto que necesite de mucha customización, un buen proyecto a medida, donde se prime las buenas prácticas, donde los tiempos no nos influyan demasiado (es mucho pedir? :-) ), porque es una plataforma que permite escalar sin perder calidad de código.

O por el contrario, un proyecto simple donde se necesiten editar páginas y entradas sin demasiadas exigencias gráficas.

Sé que esto va a ir cambiando y al final se podrá utilizar Bolt para cualquier tipo de proyecto.

Conclusión

Es un gestor de contenidos elegante en su código y muy rápido. Si te apoyas en sus fortalezas, olvidarás sus debilidades :-).

Si necesitáis una comparativa con otros gestores de contenidos, podéis mirar por ejemplo:

http://y-designs.com/blog/php-cms-comparison-2015/

Escrito el 31 oct 2015
comments powered by Disqus

« PostCSS, o cómo generar un CSS + compatible con los navegadores más importantes - Cuáles son las versiones de C# que corresponden a cada framework y versiones de MVC »