Un desarrollo que ha permanecido en las sombras durante casi dos años emerge ahora con una propuesta radicalmente diferente para construir aplicaciones web complejas. Doors es un framework que desafía la arquitectura convencional de las aplicaciones modernas al proponer que el servidor actúe como un tiempo de ejecución de interfaz de usuario completo, mientras que el navegador se reduce a un simple renderizador remoto y capa de entrada.
La propuesta central de Doors es eliminar una de las fricciones más persistentes en el desarrollo web contemporáneo: la necesidad de mantener dos contextos de ejecución completamente separados. Los desarrolladores que utilizan este framework trabajarán exclusivamente en Go del lado del servidor, teniendo acceso a primitivos reactivos, enrutamiento dinámico y componentes componibles, sin necesidad de diseñar capas de API pública ni arquitecturas de endpoints tradicionales.
Según su creador, la filosofía detrás de Doors se resume en un concepto simple pero profundo: vincular el DOM a los datos de los que depende. Esto implica un cambio fundamental en cómo se concibe la seguridad en las aplicaciones web. El modelo de seguridad propuesto es elegantemente simple: cada usuario solo puede interactuar con lo que se le renderiza, lo que significa que verificar permisos en el momento del renderizado es suficiente para garantizar que ninguna acción no autorizada pueda ejecutarse.
La implementación técnica de Doors demuestra una ambición considerable. El framework incluye una extensión del lenguaje Go específicamente diseñada, denominada Gox, que incorpora su propio analizador léxico, servidor de protocolo de lenguaje y extensiones para editores. Esta extensión permite incrustar HTML como expresiones Go directas, simplificando significativamente la sintaxis necesaria para construir interfaces reactivas. Además, el proyecto implementa un motor de concurrencia personalizado que habilita procesamiento de eventos no bloqueante, renderizado paralelo y propagación de estado consciente de la jerarquía del árbol DOM.
Otro aspecto técnico notable es el protocolo de sincronización, que ha sido diseñado con visión al futuro para ser compatible con HTTP/3. En lugar de depender de WebSockets o Server-Sent Events, el framework utiliza un sistema de solicitudes continuas con streaming, donde los eventos se transmiten mediante POST regulares, evitando así las complejidades asociadas a tecnologías de conectividad persistente.
El desarrollo ha requerido un compromiso temporal significativo. El autor invirtió aproximadamente 22 meses en perfeccionar la solución, realizando entre 6 y 7 reescrituras completas del framework hasta alcanzar un punto donde cada componente funcionara de forma coherente y cada decisión técnica fuera justificable o representara un compromiso razonable.
Doors no pretende ser una solución universal. El framework es explícitamente inapropiado para sitios web estáticos no interactivos, aplicaciones que prioricen el enrutamiento del lado del cliente con arquitecturas simples, o PWAs que necesiten funcionalidad offline. Tampoco es la opción óptima para servicios que requieran balanceo de carga convencional sin interrumpir las sesiones de usuario, aunque el framework incluye mecanismos para simplificar estas operaciones en contextos stateful.
Donde Doors alcanza su máximo potencial es en aplicaciones caracterizadas por flujos de usuario complejos y lógica empresarial sofisticada. La eliminación de la necesidad de diseñar y mantener una capa de API con gestión granular de permisos por endpoint reduce significativamente la superficie de complejidad del desarrollo.
El proyecto representa una corriente creciente de reconsideración arquitectónica en el desarrollo web, donde algunos desarrolladores cuestionan si la separación completa entre cliente y servidor es realmente el paradigma óptimo para todos los casos de uso. Doors propone que, para ciertas clases de aplicaciones, la ejecución centralizada con renderizado remoto podría ofrecer ventajas significativas en términos de experiencia del desarrollador, seguridad y mantenibilidad del código.