Nette Documentation Preview

syntax
Storia di Nette
***************

.[perex]
Le origini di Nette risalgono al 2004, quando il suo autore David Grudl iniziò a cercare un framework adatto per 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.

All'epoca non esistevano ancora framework come Symfony, Laravel o Ruby on Rails. Nel mondo Java, JSF (JavaServer Faces) era lo standard e nel regno concorrente .NET, ASP.NET Webforms era il framework dominante. Entrambi consentivano di creare pagine utilizzando componenti dell'interfaccia utente riutilizzabili. David considerava i loro metodi di astrazione e i tentativi di creare l'assenza di stato sul protocollo HTTP senza stato, utilizzando sessioni o postback, come difettosi e fondamentalmente non funzionanti. Creavano molte difficoltà agli utenti e ai motori di ricerca. Ad esempio, se si salvava un link, ci si sorprendeva di trovare sotto di esso contenuti diversi in un secondo momento.

La possibilità di comporre pagine a partire da componenti dell'interfaccia utente riutilizzabili affascinava David, che la conosceva bene grazie a Delphi, uno strumento molto diffuso all'epoca per la creazione di applicazioni desktop. Gli piacevano i mercati con componenti opensource per Delphi. Così cercò di risolvere il problema di come creare un framework di componenti che, a sua volta, funzionasse in completa armonia con HTTP stateless. Era alla ricerca di un concetto che fosse adatto agli utenti, al SEO e agli sviluppatori. Così è nato Nette.

.[note]
Il nome Nette è nato per caso in bagno, quando l'autore ha notato un flacone di gel da barba Gillette, ruotato in modo che si vedesse solo la *llette*.

Seguirono migliaia di ore di ricerche, riflessioni e riscritture. In un garage polveroso di un villaggio alle porte di Brno, si stavano creando i primi contorni della struttura futura. La base dell'architettura era il pattern MVC, utilizzato poi dall'ormai dimenticato framework PHP Mojavi e successivamente reso popolare dal clamore suscitato da Ruby on Rails. Una delle fonti di ispirazione fu persino il framework phpBase di Honza Tichý, mai pubblicato.

Sul blog dell'autore cominciarono ad apparire articoli sull'imminente Nette. Si scherzava sul fatto che si trattasse di un vaporware. Ma poi, nell'ottobre 2007, alla conferenza PHP Seminar di Praga, David presentò pubblicamente Nette. Tra l'altro, questa conferenza si è evoluta in WebExpo un anno dopo, diventando una delle più grandi conferenze IT in Europa. Già allora Nette presentava con orgoglio una serie di concetti originali, come il già citato modello a componenti, il router bidirezionale, il modo specifico di collegarsi tra i presentatori, ecc. Aveva moduli, autenticazione, caching, ecc. Tutto è ancora utilizzato in Nette nel suo concetto originale fino ad oggi.

.[note]
Nette utilizza *presenter* invece di *controller* perché nel codice c'erano presumibilmente troppe parole che iniziavano con *con* (controller, front controller, control, config, container, ...).

Alla fine del 2007, David Grudl pubblicò il codice e Nette 0.7 fu rilasciato. Attorno ad esso si formò una comunità entusiasta di programmatori che iniziò a riunirsi ogni mese all'evento Posobota. La comunità comprendeva molti dei luminari di oggi, come Ondrej Mirtes, autore del grande strumento PHPStan. Lo sviluppo di Nette andò avanti e nei due anni successivi vennero rilasciate le versioni 0.8 e 0.9, che gettarono le basi per quasi tutte le parti odierne del framework. Compresi gli snippet AJAX che precedono di 14 anni Hotwire per Ruby on Rails o Symfony UX Turbo.

Ma una cosa cruciale mancava a Nette all'epoca. Il dependecy injection container (DIC). Nette utilizzava un *service locator* e l'intenzione era di passare alla dependecy injection. Ma come progettare una cosa del genere? David Grudl, che all'epoca non aveva alcuna esperienza con DI, andò a pranzo con Vasek Purchart, che utilizzava DI da circa un anno e mezzo. Insieme discussero dell'argomento e David iniziò a lavorare su Nette DI, una libreria che rivoluzionò completamente il modo di concepire la progettazione delle applicazioni. Il contenitore DI è diventato una delle parti di maggior successo del framework. E ha dato origine a due spin-off: il formato Neon e la libreria Schema.

.[note]
Il passaggio alla dependency injection ha richiesto molto tempo e abbiamo aspettato un paio d'anni per una nuova versione di Nette. Pertanto, quando finalmente è uscita, è stata numerata 2. Quindi la versione 1 di Nette non esiste.

Nette ha iniziato la sua storia moderna nel 2012 con la versione 2.0. Con essa è stato introdotto anche Nette Database, che includeva uno strumento di database estremamente pratico, ora chiamato Explorer. Questa libreria è stata originariamente programmata da Jakub Vrána, vicino di casa di David Grudl e autore del popolare strumento Adminer. Il suo sviluppo è stato poi affidato a Jan Škrášek per tre anni.

Nel 2014 è stato rilasciato Nette 2.1, seguito a breve distanza da Nette 2.2. Come è possibile? La versione 2.2 era identica alla versione 2.1, solo suddivisa in venti pacchetti separati. Lo strumento Composer ha preso piede nel mondo PHP e ha cambiato il modo di pensare alla creazione di librerie. Nette ha smesso di essere un monolite e si è suddiviso in parti più piccole e indipendenti. Ognuna con il proprio repository, il proprio issue tracker e il proprio flusso di sviluppo e versionamento. In questo modo Nette non deve affrontare le assurdità comuni ai framework monolitici, dove viene rilasciata una nuova versione di un pacchetto anche se nulla è cambiato. L'effettiva divisione dei repository Git ha richiesto diverse settimane di preparazione e centinaia di ore di lavoro.

Nette ha anche ottenuto un sorprendente terzo posto nel sondaggio globale per il miglior framework PHP organizzato dalla rivista Sitepoint.



{{toc:no}}
{{leftbar: @menu-common}}

Storia di Nette

Le origini di Nette risalgono al 2004, quando il suo autore David Grudl iniziò a cercare un framework adatto per 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.

All'epoca non esistevano ancora framework come Symfony, Laravel o Ruby on Rails. Nel mondo Java, JSF (JavaServer Faces) era lo standard e nel regno concorrente .NET, ASP.NET Webforms era il framework dominante. Entrambi consentivano di creare pagine utilizzando componenti dell'interfaccia utente riutilizzabili. David considerava i loro metodi di astrazione e i tentativi di creare l'assenza di stato sul protocollo HTTP senza stato, utilizzando sessioni o postback, come difettosi e fondamentalmente non funzionanti. Creavano molte difficoltà agli utenti e ai motori di ricerca. Ad esempio, se si salvava un link, ci si sorprendeva di trovare sotto di esso contenuti diversi in un secondo momento.

La possibilità di comporre pagine a partire da componenti dell'interfaccia utente riutilizzabili affascinava David, che la conosceva bene grazie a Delphi, uno strumento molto diffuso all'epoca per la creazione di applicazioni desktop. Gli piacevano i mercati con componenti opensource per Delphi. Così cercò di risolvere il problema di come creare un framework di componenti che, a sua volta, funzionasse in completa armonia con HTTP stateless. Era alla ricerca di un concetto che fosse adatto agli utenti, al SEO e agli sviluppatori. Così è nato Nette.

Il nome Nette è nato per caso in bagno, quando l'autore ha notato un flacone di gel da barba Gillette, ruotato in modo che si vedesse solo la llette.

Seguirono migliaia di ore di ricerche, riflessioni e riscritture. In un garage polveroso di un villaggio alle porte di Brno, si stavano creando i primi contorni della struttura futura. La base dell'architettura era il pattern MVC, utilizzato poi dall'ormai dimenticato framework PHP Mojavi e successivamente reso popolare dal clamore suscitato da Ruby on Rails. Una delle fonti di ispirazione fu persino il framework phpBase di Honza Tichý, mai pubblicato.

Sul blog dell'autore cominciarono ad apparire articoli sull'imminente Nette. Si scherzava sul fatto che si trattasse di un vaporware. Ma poi, nell'ottobre 2007, alla conferenza PHP Seminar di Praga, David presentò pubblicamente Nette. Tra l'altro, questa conferenza si è evoluta in WebExpo un anno dopo, diventando una delle più grandi conferenze IT in Europa. Già allora Nette presentava con orgoglio una serie di concetti originali, come il già citato modello a componenti, il router bidirezionale, il modo specifico di collegarsi tra i presentatori, ecc. Aveva moduli, autenticazione, caching, ecc. Tutto è ancora utilizzato in Nette nel suo concetto originale fino ad oggi.

Nette utilizza presenter invece di controller perché nel codice c'erano presumibilmente troppe parole che iniziavano con con (controller, front controller, control, config, container, …).

Alla fine del 2007, David Grudl pubblicò il codice e Nette 0.7 fu rilasciato. Attorno ad esso si formò una comunità entusiasta di programmatori che iniziò a riunirsi ogni mese all'evento Posobota. La comunità comprendeva molti dei luminari di oggi, come Ondrej Mirtes, autore del grande strumento PHPStan. Lo sviluppo di Nette andò avanti e nei due anni successivi vennero rilasciate le versioni 0.8 e 0.9, che gettarono le basi per quasi tutte le parti odierne del framework. Compresi gli snippet AJAX che precedono di 14 anni Hotwire per Ruby on Rails o Symfony UX Turbo.

Ma una cosa cruciale mancava a Nette all'epoca. Il dependecy injection container (DIC). Nette utilizzava un service locator e l'intenzione era di passare alla dependecy injection. Ma come progettare una cosa del genere? David Grudl, che all'epoca non aveva alcuna esperienza con DI, andò a pranzo con Vasek Purchart, che utilizzava DI da circa un anno e mezzo. Insieme discussero dell'argomento e David iniziò a lavorare su Nette DI, una libreria che rivoluzionò completamente il modo di concepire la progettazione delle applicazioni. Il contenitore DI è diventato una delle parti di maggior successo del framework. E ha dato origine a due spin-off: il formato Neon e la libreria Schema.

Il passaggio alla dependency injection ha richiesto molto tempo e abbiamo aspettato un paio d'anni per una nuova versione di Nette. Pertanto, quando finalmente è uscita, è stata numerata 2. Quindi la versione 1 di Nette non esiste.

Nette ha iniziato la sua storia moderna nel 2012 con la versione 2.0. Con essa è stato introdotto anche Nette Database, che includeva uno strumento di database estremamente pratico, ora chiamato Explorer. Questa libreria è stata originariamente programmata da Jakub Vrána, vicino di casa di David Grudl e autore del popolare strumento Adminer. Il suo sviluppo è stato poi affidato a Jan Škrášek per tre anni.

Nel 2014 è stato rilasciato Nette 2.1, seguito a breve distanza da Nette 2.2. Come è possibile? La versione 2.2 era identica alla versione 2.1, solo suddivisa in venti pacchetti separati. Lo strumento Composer ha preso piede nel mondo PHP e ha cambiato il modo di pensare alla creazione di librerie. Nette ha smesso di essere un monolite e si è suddiviso in parti più piccole e indipendenti. Ognuna con il proprio repository, il proprio issue tracker e il proprio flusso di sviluppo e versionamento. In questo modo Nette non deve affrontare le assurdità comuni ai framework monolitici, dove viene rilasciata una nuova versione di un pacchetto anche se nulla è cambiato. L'effettiva divisione dei repository Git ha richiesto diverse settimane di preparazione e centinaia di ore di lavoro.

Nette ha anche ottenuto un sorprendente terzo posto nel sondaggio globale per il miglior framework PHP organizzato dalla rivista Sitepoint.