Historia de Nette
El origen de Nette se remonta al año 2004, cuando su autor, David Grudl, comenzó a buscar un framework adecuado en el que pudiera escribir aplicaciones, ya que PHP puro ya no era suficiente para ello. Ninguna de las soluciones disponibles en ese momento le satisfacía, por lo que comenzó a esbozar gradualmente las características de un nuevo framework, que más tarde recibiría el nombre de Nette.
En aquella época, aún no existían los frameworks actuales como Symfony, Laravel o Ruby on Rails. En el mundo de Java, el estándar era el framework JSF (JavaServer Faces) y en el competidor .NET, ASP.NET Webforms. Ambos permitían construir páginas utilizando componentes de UI reutilizables. David consideraba que sus métodos de abstracción y los intentos de crear estado sobre el protocolo HTTP sin estado mediante session o el llamado postback eran erróneos y fundamentalmente disfuncionales. Causaban muchas dificultades a los usuarios y a los motores de búsqueda. Por ejemplo, si guardabas un enlace, más tarde encontrabas contenido diferente bajo él con sorpresa.
La posibilidad misma de componer páginas a partir de componentes de UI reutilizables fascinaba a David, la conocía bien de Delphi, una herramienta popular en ese momento para crear aplicaciones de escritorio. Le gustaban los mercados con componentes de código abierto para Delphi. Por lo tanto, intentó resolver la cuestión de cómo crear un framework de componentes que, por el contrario, funcionara en completa armonía con el HTTP sin estado. Buscaba un concepto que fuera amigable para los usuarios, el SEO y los desarrolladores. Y así comenzó a nacer Nette.
El nombre Nette surgió por casualidad en el baño, cuando el autor vio un bote de gel de afeitar Gillette, girado de tal manera que solo se veía llette.
Siguieron miles de horas de investigación, reflexión y reescritura. En un garaje polvoriento en un pueblo en algún lugar cerca de Brno, surgieron los primeros esbozos del futuro framework. La base de la arquitectura se convirtió en el patrón MVC, que en ese momento utilizaba el ya olvidado framework PHP Mojavi y que más tarde se popularizó gracias al revuelo en torno a Ruby on Rails. Una de las fuentes de inspiración fue incluso el framework nunca publicado phpBase de Honza Tichý.
En el blog del autor comenzaron a aparecer artículos sobre el próximo Nette. Se bromeaba diciendo que era vaporware. Pero luego, en octubre de 2007, en la conferencia PHP Seminář en Praga, David presentó públicamente Nette. Por cierto, de esta conferencia evolucionó un año después WebExpo, más tarde una de las conferencias de TI más grandes de Europa. Ya entonces, Nette presumía de una serie de conceptos originales, como el mencionado modelo de componentes, el router bidireccional, una forma específica de enlazar entre presenters, etc. Tenía formularios, autenticación resuelta, almacenamiento en caché, etc. Todo en Nette se utiliza en su concepción original hasta el día de hoy.
En Nette, en lugar del término controller, se utiliza presenter, porque supuestamente había demasiadas palabras en el código que comenzaban con con (controller, front controller, control, config, container, …)
A finales de 2007, David Grudl también publicó el código y así vio la luz la versión Nette 0.7. El framework atrajo inmediatamente una enorme atención. Se creó a su alrededor una entusiasta comunidad de programadores que comenzó a reunirse cada mes en el evento Posobota. En la comunidad había muchas personalidades de hoy en día, por ejemplo, Ondřej Mirtes, autor de la excelente herramienta PHPStan. El desarrollo de Nette avanzó rápidamente y en los dos años siguientes se lanzaron las versiones 0.8 y 0.9, donde se sentaron las bases de casi todas las partes actuales del framework. Incluidos los snippets AJAX, que se adelantaron 14 años a Hotwire para Ruby on Rails o Symfony UX Turbo.
Sin embargo, faltaba una cosa fundamental en el Nette de entonces. Un contenedor de inyección de dependencias (DIC). Nette utilizaba el llamado service locator y la intención era pasar precisamente a la inyección de dependencias. Pero, ¿cómo diseñar algo así? David Grudl, que entonces no tenía experiencia con DI, fue a almorzar con Vašek Purchart, que llevaba usando DI aproximadamente medio año. Discutieron juntos el tema y David inició el trabajo en Nette DI, una librería que revolucionó por completo la forma de pensar sobre el diseño de aplicaciones. El contenedor DI se convirtió en una de las partes más exitosas del framework. Y más tarde dio lugar a dos spin-offs: el formato Neon y la librería Schema.
El cambio a la inyección de dependencias requirió bastante tiempo y hubo que esperar unos años para la nueva versión de Nette. Por eso, cuando finalmente salió, llevó directamente el número 2. Por lo tanto, la versión Nette 1 no existe.
Nette inició su historia moderna en 2012 con la versión 2.0. También trajo Nette Database, que incluía una herramienta extraordinariamente útil para trabajar con bases de datos, hoy 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 hizo cargo de su desarrollo posterior durante tres años.
En 2014 se lanzó Nette 2.1, seguida en poco tiempo por Nette 2.2. ¿Cómo es posible? La versión 2.2 era igual que la versión 2.1, solo que dividida en veinte paquetes separados. En el mundo de PHP, se estableció la herramienta Composer y cambió la forma de concebir la creación de librerías. Nette dejó de ser un monolito y se descompuso en partes más pequeñas e independientes. Cada una con su propio repositorio, issue tracker y su propio ritmo de desarrollo y versionado. Así, en Nette no tienen por qué ocurrir absurdos comunes en frameworks monolíticos, donde se lanza una nueva versión de un paquete aunque no haya cambiado absolutamente nada en él. La propia división de los repositorios Git supuso varias semanas de preparación y cientos de horas de tiempo de máquina.
Nette también obtuvo un increíble 3er puesto en la encuesta mundial sobre el mejor framework PHP organizada por la revista Sitepoint.