Storia di Nette
Le origini di Nette risalgono al 2004, quando il suo autore, David Grudl, cominciò a cercare un framework adatto per scrivere applicazioni, perché il PHP puro non gli bastava più. Nessuna delle soluzioni allora disponibili soddisfaceva le sue esigenze, così iniziò via via a delineare le caratteristiche di un nuovo framework, che in seguito ricevette il nome Nette.
A quel tempo i framework moderni come Symfony, Laravel o Ruby on Rails non esistevano ancora. Nel mondo Java lo standard era JSF (JavaServer Faces), mentre nel campo concorrente di .NET dominava ASP.NET WebForms. Entrambi permettevano di costruire pagine con componenti UI riutilizzabili. David però considerava il loro modo di astrarre e i tentativi di simulare uno stato sul protocollo HTTP senza stato, tramite sessioni o i cosiddetti postback, sbagliati e concettualmente rotti. Causavano numerose difficoltà agli utenti e ai motori di ricerca. Se per esempio salvavate un link, potevate poi essere sorpresi di trovarci sotto un contenuto diverso.
L'idea stessa di comporre le pagine da componenti UI riutilizzabili affascinava David, che la conosceva da Delphi, all'epoca uno strumento popolare per costruire applicazioni desktop. Gli piacevano i marketplace che offrivano componenti open source per Delphi. Cercava quindi la risposta alla domanda: come creare un framework a componenti che funzioni in piena armonia con l'HTTP senza stato? Cercava un concetto che fosse amichevole per gli utenti, per il SEO e per gli sviluppatori. E così Nette cominciò a prendere forma.
Il nome Nette nacque per caso in bagno, quando l'autore notò una bomboletta di gel da barba Gillette girata in modo che si vedesse solo llette.
Seguirono migliaia di ore di ricerca, riflessione e riscrittura. In un garage polveroso in un paese da qualche parte fuori Brno nacquero i primi contorni del futuro framework. La base architetturale divenne il pattern MVC (Model-View-Controller), allora usato dall'ormai dimenticato framework PHP Mojavi e poi reso popolare dal clamore attorno a Ruby on Rails. Una fonte di ispirazione fu perfino il framework phpBase di Honza Tichý, che non uscì mai.
Sul blog dell'autore cominciarono a comparire articoli sul Nette in arrivo. Circolavano battute sul fatto che fosse vaporware. Ma poi, nell'ottobre 2007, alla conferenza PHP Seminar a Praga, David presentò pubblicamente Nette. Per inciso, un anno dopo quella conferenza si trasformò in WebExpo, che divenne una delle più grandi conferenze IT d'Europa. Già allora Nette poteva vantare diversi concetti originali, come il già citato modello a componenti, un router bidirezionale, un modo particolare di creare link tra i presenter ecc. Aveva i form, risolveva l'autenticazione, la cache e altro. Tutti questi concetti fondamentali sono usati in Nette ancora oggi nella loro forma originale.
In Nette si usa il termine presenter invece di controller, si dice perché nel codice c'erano troppe parole che iniziavano con con (controller, front controller, control, config, container, …).
Alla fine del 2007 David Grudl rilasciò il codice e vide la luce Nette 0.7. Il framework attirò subito enorme attenzione. Attorno a esso si formò una comunità entusiasta di programmatori, che cominciò a organizzare incontri mensili chiamati Posobota. Di questa comunità facevano parte molte figure oggi importanti, per esempio Ondřej Mirtes, autore dell'eccellente strumento PHPStan. Lo sviluppo di Nette corse in avanti e nei due anni successivi uscirono le versioni 0.8 e 0.9, che posero le basi di quasi tutte le parti attuali del framework. Tra queste anche gli snippet AJAX, che anticiparono di 14 anni tecnologie come Hotwire per Ruby on Rails o Symfony UX Turbo.
Nel primo Nette mancava però un elemento fondamentale: un Dependency Injection Container (DIC). Nette usava un service locator e il piano era passare alla dependency injection. Ma come progettare una cosa del genere? David Grudl, che allora non aveva esperienza con la DI, pranzò con Václav Purchart, che usava la DI da circa sei mesi. Ne discussero e David cominciò a lavorare su Nette DI, una libreria che rivoluzionò completamente il modo di concepire la progettazione delle applicazioni. Il container DI divenne una delle parti più riuscite del framework e da esso nacquero in seguito due spin-off: il formato NEON e la libreria Schema.
Il passaggio alla dependency injection richiese parecchio tempo e la comunità aspettò qualche anno la nuova versione di Nette. Perciò, quando finalmente uscì, ricevette direttamente il numero 2.0. La versione 1 di Nette quindi non esiste.
Nette iniziò la sua era moderna nel 2012 con la versione 2.0. Con essa arrivò anche Nette Database, che comprendeva uno strumento eccezionalmente comodo per lavorare con i database, oggi noto come Explorer. Questa libreria fu programmata in origine da Jakub Vrána, vicino di casa di David Grudl e autore del popolare strumento Adminer. Il suo ulteriore sviluppo fu poi curato per tre anni da Jan Škrášek.
Nel 2014 uscì Nette 2.1 e poco dopo Nette 2.2. Com'è stato possibile? La versione 2.2 era in sostanza la stessa della 2.1, ma divisa in venti pacchetti separati. Nel mondo PHP si era affermato lo strumento Composer, che cambiò il modo di concepire le librerie. Nette smise di essere un monolite e si scompose in parti più piccole e indipendenti, ognuna con il proprio repository, il proprio issue tracker e il proprio ritmo di sviluppo e versionamento. Questo evita le assurdità consuete dei framework monolitici, dove una nuova versione di un pacchetto esce anche se al suo interno non è cambiato nulla. La divisione vera e propria dei repository Git richiese diverse settimane di preparazione e centinaia di ore di tempo macchina.
Nette ottenne anche un notevole terzo posto nel sondaggio mondiale sul miglior framework PHP organizzato dalla rivista SitePoint.