Storia di Nette
L'inizio della nascita di Nette risale al 2004, quando il suo autore David Grudl iniziò a cercare un framework adatto in cui poter scrivere applicazioni, poiché il PHP puro non era più sufficiente. Nessuna delle soluzioni disponibili all'epoca lo soddisfaceva, così iniziò gradualmente a delineare le caratteristiche di un nuovo framework, che in seguito prese il nome di Nette.
A quel tempo non esistevano ancora framework attuali come Symfony, Laravel o Ruby on Rails. Nel mondo Java, lo standard era il framework JSF (JavaServer Faces) e nella concorrenza .NET c'erano ASP.NET Webforms. Entrambi permettevano di costruire pagine utilizzando componenti UI riutilizzabili. I loro metodi di astrazione e i tentativi di creare statefulness su un protocollo HTTP stateless utilizzando session o il cosiddetto postback erano considerati da David errati e fondamentalmente non funzionanti. Causavano numerose difficoltà agli utenti e ai motori di ricerca. Ad esempio, se si salvava un link, si scopriva con sorpresa che in seguito conteneva un contenuto diverso.
La possibilità stessa di comporre pagine da componenti UI riutilizzabili affascinava David, la conosceva bene da Delphi, uno strumento allora popolare per la creazione di applicazioni desktop. Gli piacevano i marketplace con componenti opensource per Delphi. Cercò quindi di risolvere la questione di come creare un framework a componenti che funzionasse invece in completa armonia con l'HTTP stateless. Cercava un concetto che fosse amichevole per gli utenti, per la SEO e per gli sviluppatori. E così iniziò a nascere Nette.
Il nome Nette è nato per caso in bagno, quando l'autore ha visto un contenitore di gel da barba Gillette, girato in modo che si vedesse solo llette.
Seguirono migliaia di ore di ricerca, riflessione e riscrittura. In un garage polveroso in un villaggio da qualche parte vicino a Brno nacquero i primi contorni del futuro framework. La base dell'architettura divenne il pattern MVC, che all'epoca era utilizzato dal framework PHP ormai dimenticato Mojavi e successivamente reso popolare grazie all'hype attorno a Ruby on Rails. Una delle fonti di ispirazione fu persino il framework mai pubblicato phpBase di Honza Tichý.
Sul blog dell'autore iniziarono ad apparire articoli sul futuro Nette. Si scherzava sul fatto che fosse vaporware. Ma poi, nell'ottobre 2007, alla conferenza PHP Seminář di Praga, David presentò pubblicamente Nette. Tra l'altro, da questa conferenza si sviluppò un anno dopo WebExpo, successivamente una delle più grandi conferenze IT in Europa. Già allora Nette vantava numerosi concetti originali, come il menzionato modello a componenti, il router bidirezionale, un modo specifico di linking tra presenter, ecc. Aveva form, autenticazione risolta, caching, ecc. Tutto in Nette viene utilizzato nel concetto originale ancora oggi.
In Nette, invece del termine controller, si usa presenter, perché nel codice c'erano apparentemente troppe parole che iniziavano con con (controller, front controller, control, config, container, …)
Alla fine del 2007, David Grudl pubblicò anche il codice e così vide la luce la versione Nette 0.7. Il framework attirò immediatamente un'enorme attenzione. Si creò attorno ad esso una comunità entusiasta di programmatori, che iniziò a incontrarsi ogni mese all'evento Posobota. Nella comunità c'erano molte personalità di oggi, ad esempio Ondřej Mirtes, autore dell'ottimo strumento PHPStan. Lo sviluppo di Nette procedette rapidamente e nei due anni successivi uscirono le versioni 0.8 e 0.9, dove furono gettate le basi di quasi tutte le parti attuali del framework. Compresi gli snippet AJAX, che anticiparono di 14 anni Hotwire per Ruby on Rails o Symfony UX Turbo.
Ma una cosa fondamentale mancava nel Nette di allora. Il Dependency injection container (DIC). Nette utilizzava il cosiddetto service locator e l'intenzione era di passare proprio alla dependency injection. Ma come progettare una cosa del genere? David Grudl, che all'epoca non aveva esperienza con la DI, andò a pranzo con Vašek Purchart, che usava la DI da circa sei mesi. Discussero insieme l'argomento e David iniziò a lavorare su Nette DI, una libreria che ribaltò completamente il modo di pensare alla progettazione delle applicazioni. Il container DI divenne una delle parti meglio riuscite del framework. E diede successivamente origine anche a due spin-off: il formato Neon e la libreria Schema.
Il passaggio alla dependency injection richiese molto tempo e si dovette attendere qualche anno per la nuova versione di Nette. Pertanto, quando finalmente uscì, portava direttamente il numero 2. La versione Nette 1 quindi non esiste.
Nette nel 2012 con la versione 2.0 diede inizio alla sua storia moderna. Portò anche Nette Database, di cui faceva parte anche uno strumento straordinariamente pratico per lavorare con il database, oggi chiamato Explorer. Questa libreria fu originariamente programmata da Jakub Vrána, vicino di casa di David Grudl e autore del popolare strumento Adminer. Del suo ulteriore sviluppo si occupò poi per tre anni Jan Škrášek.
Nel 2014 uscì Nette 2.1, seguito a breve da Nette 2.2. Com'è possibile? La versione 2.2 era uguale alla versione 2.1, solo divisa in venti pacchetti separati. Nel mondo PHP si era affermato lo strumento Composer e aveva cambiato il modo di concepire la creazione di librerie. Nette smise così di essere un monolite e si divise in parti più piccole e indipendenti. Ognuna con il proprio repository, issue tracker e il proprio ritmo di sviluppo e versioning. In Nette non devono quindi verificarsi le assurdità comuni nei framework monolitici, quando esce una nuova versione di un pacchetto anche se non è cambiato assolutamente nulla al suo interno. La divisione stessa dei repository Git richiese diverse settimane di preparazione e centinaia di ore di tempo macchina.
Nette si classificò anche all'incredibile 3° posto nel sondaggio mondiale sul miglior framework PHP organizzato dalla rivista Sitepoint.