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, ya que PHP puro ya no era suficiente. Ninguna de las soluciones disponibles en ese momento le convencía, por lo que poco a poco comenzó a esbozar las características de un nuevo framework, que más tarde recibió el nombre de Nette.
Por aquel entonces, aún no existían frameworks actuales como Symfony, Laravel o Ruby on Rails. En el mundo Java, JSF (JavaServer Faces) era el estándar, y en el reino competidor .NET, ASP.NET Webforms era el marco dominante. Ambos permitían crear páginas con componentes de interfaz de usuario reutilizables. David consideraba que sus métodos de abstracción y sus intentos de crear apatridia a través del protocolo HTTP sin estado mediante sesiones o postbacks eran defectuosos y no funcionaban. Causaban muchas dificultades a los usuarios y a los motores de búsqueda. Por ejemplo, si uno guardaba un enlace, se sorprendía al encontrar más tarde un contenido diferente debajo de él.
La posibilidad de componer páginas a partir de componentes de interfaz de usuario reutilizables fascinó a David, que la conocía bien de Delphi, una popular herramienta para crear aplicaciones de escritorio en aquella época. Le gustaban los mercados con componentes de código abierto para Delphi. Así que intentó resolver la cuestión de cómo crear un marco de componentes que, a su vez, funcionara en completa armonía con HTTP sin estado. Buscaba un concepto que fuera amigable para el usuario, el SEO y el desarrollador. Y así nació Nette.
El nombre Nette surgió por casualidad en el cuarto de baño, cuando el autor vio un bote de gel de afeitar Gillette, girado de forma que sólo se viera la llette.
Siguieron miles de horas de investigación, reflexión y reescritura. En un garaje polvoriento de un pueblo de las afueras de Brno se estaban creando los primeros esbozos del futuro marco. La base de la arquitectura era el patrón MVC, utilizado entonces por el ahora olvidado framework PHP Mojavi y popularizado más tarde por el revuelo en torno a Ruby on Rails. Una de las fuentes de inspiración fue incluso el nunca publicado framework phpBase de Honza Tichý.
En el blog del autor empezaron a aparecer artículos sobre el futuro Nette. Se bromeaba diciendo que se trataba de vaporware. Pero entonces, en octubre de 2007, en la conferencia PHP Seminar de Praga, David presentó públicamente Nette. Por cierto, esta conferencia evolucionó hasta convertirse un año después en WebExpo, más tarde una de las mayores conferencias de TI de Europa. Ya entonces Nette presentaba con orgullo una serie de conceptos originales, como el mencionado modelo de componentes, el enrutador bidireccional, la forma específica de enlazar entre presentadores, etc. Tenía formularios, autenticación, caché, etc. Todo ello se sigue utilizando en Nette en su concepto original hasta el día de hoy.
Nette utiliza presentador en lugar de controlador porque supuestamente había demasiadas palabras que empezaban por con en el código (controller, front controller, control, config, container, …).
A finales de 2007, David Grudl publicó el código y se lanzó Nette 0.7. A su alrededor se formó una entusiasta comunidad de programadores que empezó a reunirse todos los meses en el evento Posobota. La comunidad incluía a muchas de las luminarias actuales, como Ondrej Mirtes, autor de la gran herramienta PHPStan. El desarrollo de Nette siguió adelante, y en los dos años siguientes se publicaron las versiones 0.8 y 0.9, que sentaron las bases de casi todas las partes actuales del framework. Incluyendo fragmentos de AJAX que preceden en 14 años a Hotwire para Ruby on Rails o Symfony UX Turbo.
Pero entonces faltaba algo crucial en Nette. Contenedor de inyección de dependencias (DIC). Nette utilizaba un service locator y la intención era pasar a dependecy injection. Pero, ¿cómo diseñar algo así? David Grudl, que por aquel entonces no tenía experiencia con DI, fue a comer con Vasek Purchart, que llevaba medio año utilizando DI. Juntos discutieron el tema y David empezó a trabajar en Nette DI, una biblioteca que revolucionó por completo la forma de pensar en el diseño de aplicaciones. El contenedor DI se convirtió en una de las partes más exitosas del framework. Y dio lugar a dos spin-offs: el formato Neon y la biblioteca Schema.
El cambio a la inyección de dependencias llevó mucho tiempo, y esperamos un par de años a una nueva versión de Nette. Por eso, cuando por fin salió, llevaba el número 2. Así que la versión 1 de Nette no existe.
Nette comenzó su historia moderna en 2012 con la versión 2.0. También trajo Nette Database, que incluía una herramienta de base de datos extremadamente práctica, ahora llamada Explorer. Esta librería fue programada originalmente por Jakub Vrána, vecino de David Grudl y autor de la popular herramienta Adminer. Jan Škrášek se encargó de su desarrollo durante tres años.
En 2014 se publicó Nette 2.1, a la que siguió en breve Nette 2.2. ¿Cómo es posible? La versión 2.2 era la misma que la 2.1, solo que dividida en veinte paquetes independientes. La herramienta Composer se impuso en el mundo PHP y cambió la forma de pensar sobre la creación de librerías. Nette dejó de ser un monolito y se dividió en partes más pequeñas e independientes. Cada una con su propio repositorio, gestor de incidencias y su propio flujo de desarrollo y versionado. De esta forma, Nette no tiene que pasar por los absurdos habituales en los frameworks monolíticos, en los que sale una nueva versión de un paquete aunque no haya cambiado nada. La división real de los repositorios Git supuso varias semanas de preparación y cientos de horas de máquina.
Nette también obtuvo un sorprendente tercer puesto en la encuesta mundial sobre el mejor framework PHP organizada por la revista Sitepoint.