Uso un CMS que escribí yo mismo.

Este sitio corre sobre Chinaski, un sistema de gestión de contenido que escribí yo mismo. No WordPress. No Squarespace. Software que construí porque me cansé de pelear contra una plataforma en lugar de usarla.

Es el mismo sistema detrás de ROI Wire y Coppermont también. Una sola infraestructura, tres sitios, tres audiencias muy distintas. No lo construí como un proyecto paralelo para presumir. Lo construí porque seguía chocando con la misma pared con todo lo demás en el mercado: las herramientas estaban hechas para el negocio de otra persona, y se esperaba que yo doblara el mío para que encajara.

Por qué

Control total. Agrego las funciones que realmente necesito y me salto las otras cincuenta que no. Cuando quise un sistema de casos de estudio con su propio diseño y sus propias reglas sobre qué se publica y qué no, construí exactamente eso, nada más. Sin marketplace de plugins que revisar esperando que alguien ya haya resuelto mi problema de una forma que encaje a medias. Sin panel de configuración con cuatrocientas opciones que nunca voy a tocar, cada una una futura actualización que puede romper otra cosa. Si no necesito algo, no existe en mi servidor ocupando espacio y creando una superficie para que algo salga mal.

Privacidad. Nadie fuera de mi propio servidor puede ver lo que hay en él. Ningún proveedor de analítica de terceros recopilando datos de comportamiento que nunca acordé entregar. Ningún autor de plugin con acceso silencioso de actualización a código corriendo en mi infraestructura. Ninguna empresa SaaS sentada sobre mi contenido, los datos de mis visitantes, o información de negocio cercana a mis clientes, con su propio riesgo de filtración entre yo y mi propio sitio. Cuando algo es privado, quiero exactamente una entidad capaz de verlo: yo. Cada tercero que agrego a esa lista es una puerta que yo no construí y no puedo auditar del todo.

Sin riesgo de licencia. Cualquiera que haya operado un sitio en WordPress conoce la rutina. Instalas un plugin porque necesitas una función específica. Dieciocho meses después el autor del plugin dejó de mantenerlo, la licencia vence, o un parche de seguridad nunca sale porque ya nadie lo está cuidando. Entonces un día un investigador de seguridad, o peor, un cliente, nota que tu sitio está sirviendo páginas que promocionan sitios de apuestas a los rastreadores de búsqueda, inyectadas a través de una vulnerabilidad en software que ni recordabas que seguía corriendo. Pasa constantemente, y le pasa a negocios serios y bien administrados, no solo a blogs de pasatiempo. No es un riesgo que quiera tener sobre infraestructura que no controlo por completo. El único arreglo real es no depender del código abandonado de otra persona desde el principio.

Cómo funciona en realidad

Chinaski no es una aplicación en vivo sirviendo páginas desde una base de datos en cada solicitud. Construye el sitio: toma el contenido, lo pasa por un conjunto de plantillas, y escribe archivos HTML planos. Lo que los visitantes realmente cargan es estático, sin llamada a base de datos entre un clic y una página. Eso importa para la velocidad, e importa aún más para la seguridad. Un archivo plano no se puede explotar como una página en vivo respaldada por base de datos. No hay formulario de inicio de sesión en el sitio público para que alguien lo ataque por fuerza bruta, ninguna cadena de consulta donde alguien pueda inyectar algo. Toda la superficie de ataque que la mayoría de los CMS te dan gratis simplemente no existe.

La contrapartida es que todo pasa al entrar, no al salir. Cuando cambio algo, reconstruyo, y la nueva versión sale como archivos, más parecido a compilar software que a editar una página en vivo. Me gusta así. Me obliga a saber exactamente en qué estado está el sitio, en vez de confiar en que un sistema en vivo en algún lugar se está comportando como creo que lo hace.

Desventajas

Tengo que mantenerlo yo mismo. Cuando algo se rompe, no hay un hilo de foro del cual copiar un arreglo, ninguna respuesta en Stack Overflow escrita por alguien que se topó exactamente con el mismo error en exactamente el mismo plugin. Solo estamos yo y el código. Cada función que tengo, tuve que construirla, probarla, y estar dispuesto a ser quien la arregle a una hora inconveniente si deja de funcionar. Eso es un peso real, y no finjo lo contrario.

Tengo que capacitar a cualquiera que lo toque. No hay un ejército de freelancers que ya conozcan Chinaski, ningún curso de certificación, ningún marketplace de contratistas que puedan aprenderlo en un fin de semana. Si alguien ayuda a operar este sitio, o ROI Wire, o Coppermont, soy yo quien le enseña cómo funciona realmente el sistema, desde la estructura de bloques hasta las reglas de contenido y las peculiaridades que solo yo conozco porque las escribí. Eso es más lento que entregarle a alguien un acceso de WordPress y una guía de inicio.

Mucho más upside

Prefiero mantener mi propio software antes que rentar el de alguien más y esperar que lo mantengan seguro, lo mantengan actualizado, y mantengan sus precios razonables una vez que dependo de ellos. Control total, privacidad real, y nada que expire porque olvidé darle clic a renovar en un plugin que apenas recuerdo haber instalado.

También es, honestamente, el mismo argumento que les hago a mis clientes sobre sus propias operaciones. Los sistemas rentados están bien hasta que dejan de estarlo, y para cuando dejan de estarlo, normalmente ya estás atado. Ser dueño de la infraestructura que realmente le importa a tu negocio no es una preferencia técnica. Es una decisión sobre quién tiene el control cuando algo sale mal, y prefiero que ese sea yo.