Historia de Nette

Los orígenes de Nette se remontan a 2004, cuando su autor, David Grudl, empezó a buscar un framework adecuado para escribir aplicaciones, porque el PHP puro ya no bastaba. Ninguna de las soluciones disponibles entonces satisfacía sus necesidades, así que poco a poco empezó a esbozar las características de un nuevo framework, que más tarde recibió el nombre de Nette.

En aquel momento todavía no existían frameworks modernos como Symfony, Laravel o Ruby on Rails. En el mundo de Java, el estándar era JSF (JavaServer Faces), mientras que en el terreno rival de .NET dominaba ASP.NET WebForms. Ambos permitían construir páginas con componentes de interfaz reutilizables. Pero David consideraba que sus métodos de abstracción y sus intentos de simular un estado sobre el protocolo HTTP sin estado, mediante sesiones o los llamados postbacks, eran defectuosos y estaban fundamentalmente rotos. Causaban numerosas dificultades a los usuarios y a los buscadores. Por ejemplo, si guardaba un enlace, podía llevarse la sorpresa de encontrar más tarde otro contenido bajo él.

La idea misma de componer las páginas a partir de componentes de interfaz reutilizables fascinaba a David, que la conocía de Delphi, una herramienta popular por entonces para construir aplicaciones de escritorio. Le gustaban los mercados que ofrecían componentes de código abierto para Delphi. Por eso buscaba respuesta a la pregunta: ¿cómo crear un framework basado en componentes que funcionara en completa armonía con el HTTP sin estado? Buscaba un concepto amable a la vez para los usuarios, para el SEO y para los desarrolladores. Y así empezó a tomar forma Nette.

El nombre Nette surgió por casualidad en el baño, cuando el autor se fijó en un bote de gel de afeitar Gillette girado de modo que solo se veía llette.

Siguieron miles de horas de investigación, reflexión y reescritura. En un garaje polvoriento de un pueblo en algún lugar cerca de Brno surgieron los primeros bocetos del futuro framework. El patrón MVC (Model-View-Controller) se convirtió en la base arquitectónica; entonces lo usaba el hoy olvidado framework de PHP Mojavi y más tarde lo popularizó el revuelo en torno a Ruby on Rails. Una de las fuentes de inspiración fue incluso el framework phpBase de Honza Tichý, que nunca llegó a publicarse.

Cuartel general mundial de Nette, 2005

En el blog del autor empezaron a aparecer artículos sobre el Nette que estaba por llegar. Circulaban bromas sobre que era vaporware. Pero entonces, en octubre de 2007, en la conferencia PHP Seminar de Praga, David presentó Nette públicamente. Por cierto, esa conferencia se transformó un año después en WebExpo, que llegó a ser una de las mayores conferencias de informática de Europa. Ya entonces Nette presumía de varios conceptos originales, como el mencionado modelo de componentes, un router bidireccional, una forma concreta de enlazar entre presenters, etc. Tenía formularios, resolvía la autenticación, la caché y más. Todos estos conceptos esenciales se siguen usando hoy en Nette en su forma original.

En Nette se usa el término presenter en lugar de controller, según se dice porque en el código había demasiadas palabras que empezaban por con (controller, front controller, control, config, container, …).

A finales de 2007, David Grudl liberó el código y Nette 0.7 vio la luz. El framework atrajo de inmediato una enorme atención. A su alrededor se formó una comunidad entusiasta de programadores que empezó a organizar encuentros mensuales llamados Posobota. En esa comunidad había muchas figuras hoy destacadas, como Ondřej Mirtes, el autor de la excelente herramienta PHPStan. El desarrollo de Nette avanzó a toda velocidad y en los dos años siguientes salieron las versiones 0.8 y 0.9, que sentaron las bases de casi todas las partes actuales del framework. Entre ellas los snippets AJAX, que se adelantaron 14 años a tecnologías como Hotwire para Ruby on Rails o Symfony UX Turbo.

Faltaba, sin embargo, un elemento crucial en el Nette de los primeros tiempos: un contenedor de inyección de dependencias (DIC). Nette usaba un service locator y el plan era pasar a la inyección de dependencias. ¿Pero cómo diseñar algo así? David Grudl, que entonces no tenía experiencia con la DI, comió con Václav Purchart, que llevaba medio año usándola. Hablaron del tema y David empezó a trabajar en Nette DI, una biblioteca que revolucionó por completo la forma de abordar el diseño de las aplicaciones. El contenedor DI se convirtió en una de las partes más logradas del framework y más tarde dio lugar a dos derivados: el formato NEON y la biblioteca Schema.

El paso a la inyección de dependencias llevó bastante tiempo y la comunidad esperó unos años la nueva versión de Nette. Por eso, cuando por fin salió, se numeró directamente como 2.0. Así que la versión 1 de Nette no existe.

Nette empezó su era moderna en 2012 con la versión 2.0. Llegó también Nette Database, que incluía una herramienta extraordinariamente práctica para trabajar con bases de datos, hoy conocida como Explorer. Esta biblioteca la programó originalmente Jakub Vrána, vecino de David Grudl y autor de la popular herramienta Adminer. Jan Škrášek se hizo cargo después de su desarrollo durante tres años.

En 2014 salió Nette 2.1 y poco después Nette 2.2. ¿Cómo fue posible? La versión 2.2 era en esencia la misma que la 2.1, pero repartida en veinte paquetes separados. La herramienta Composer se había asentado en el mundo de PHP y había cambiado la forma de concebir las bibliotecas. Nette dejó de ser un monolito y se descompuso en partes más pequeñas e independientes, cada una con su propio repositorio, su gestor de incidencias y su ritmo de desarrollo y versionado. Eso evita los absurdos habituales en los frameworks monolíticos, donde puede salir una nueva versión de un paquete aunque en él no haya cambiado nada. La división real de los repositorios de Git supuso varias semanas de preparación y cientos de horas de tiempo de máquina.

Nette logró además un impresionante tercer puesto en la encuesta mundial sobre el mejor framework de PHP organizada por la revista SitePoint.