Istoria Nette
Începutul Nette datează din 2004, când autorul său, David Grudl, a început să caute un framework potrivit în care să poată scrie aplicații, deoarece PHP pur nu mai era suficient. Nicio soluție disponibilă la acea vreme nu i se potrivea, așa că a început treptat să schițeze trăsăturile unui nou framework, care mai târziu a primit numele Nette.
La acea vreme, framework-urile actuale precum Symfony, Laravel sau Ruby on Rails nu existau încă. În lumea Java, standardul era framework-ul JSF (JavaServer Faces), iar în .NET-ul concurent, ASP.NET Webforms. Ambele permiteau construirea paginilor folosind componente UI reutilizabile. Modurile lor de abstractizare și încercările de a crea statefulness peste protocolul stateless HTTP folosind sesiuni sau așa-numitul postback au fost considerate de David ca fiind greșite și fundamental nefuncționale. Acestea cauzau numeroase dificultăți utilizatorilor și motoarelor de căutare. De exemplu, dacă salvați un link, mai târziu ați fi surprins să găsiți alt conținut sub el.
Posibilitatea însăși de a compune pagini din componente UI reutilizabile l-a fascinat pe David, o cunoștea bine din Delphi, un instrument popular la acea vreme pentru crearea aplicațiilor desktop. Îi plăceau piețele cu componente opensource pentru Delphi. Prin urmare, a încercat să rezolve întrebarea cum să creeze un framework bazat pe componente care, dimpotrivă, să funcționeze în perfectă armonie cu HTTP-ul stateless. Căuta un concept care să fie prietenos pentru utilizatori, SEO și dezvoltatori. Și așa a început să se nască Nette.
Numele Nette a apărut întâmplător în baie, când autorul a văzut un recipient cu gel de ras Gillette, întors astfel încât se vedea doar llette.
Au urmat mii de ore de cercetare, gândire și rescriere. Într-un garaj prăfuit dintr-un sat undeva lângă Brno, au început să prindă contur primele schițe ale viitorului framework. Baza arhitecturii a devenit modelul MVC, folosit la acea vreme de framework-ul PHP Mojavi, acum uitat, și popularizat ulterior datorită agitației din jurul Ruby on Rails. Una dintre sursele de inspirație a fost chiar și framework-ul phpBase, niciodată publicat, al lui Honza Tichý.
Pe blogul autorului au început să apară articole despre viitorul Nette. Se glumea că este vaporware. Apoi, însă, în octombrie 2007, la conferința PHP Seminář din Praga, David a prezentat public Nette. Apropo, din această conferință s-a dezvoltat un an mai târziu WebExpo, ulterior una dintre cele mai mari conferințe IT din Europa. Deja atunci, Nette se lăuda cu o serie de concepte originale, precum modelul de componente menționat, routerul bidirecțional, modul specific de legare între Presentere etc. Avea formulare, autentificare rezolvată, caching etc. Totul se folosește în Nette în conceptul original și astăzi.
În Nette, în loc de termenul controller se folosește Presenter, deoarece în cod existau, se pare, prea multe cuvinte care începeau cu con (controller, front controller, control, config, container, …)
La sfârșitul anului 2007, David Grudl a publicat și codul, și astfel a văzut lumina zilei versiunea Nette 0.7. Framework-ul a atras imediat o atenție enormă. În jurul său s-a format o comunitate entuziastă de programatori, care a început să se întâlnească lunar la evenimentul Posobota. În comunitate se aflau multe dintre personalitățile de astăzi, de exemplu Ondřej Mirtes, autorul excelentului instrument PHPStan. Dezvoltarea Nette a avansat rapid și în următorii doi ani au fost lansate versiunile 0.8 și 0.9, unde au fost puse bazele aproape tuturor părților actuale ale framework-ului. Inclusiv snippet-urile AJAX, care au devansat cu 14 ani Hotwire pentru Ruby on Rails sau Symfony UX Turbo.
Un lucru esențial lipsea însă în Nette de atunci. Containerul de injecție de dependențe (DIC). Nette folosea așa-numitul service locator și intenția era de a trece tocmai la injecția de dependențe. Dar cum să proiectezi așa ceva? David Grudl, care la acea vreme nu avea experiență cu DI, a mers la prânz cu Vašek Purchart, care folosea DI de aproximativ jumătate de an. Au discutat împreună subiectul și David a început lucrul la Nette DI, o bibliotecă care a revoluționat complet modul de gândire asupra proiectării aplicațiilor. Containerul DI a devenit una dintre cele mai reușite părți ale framework-ului. Și a dat naștere ulterior și la două spin-off-uri: formatul Neon și biblioteca Schema.
Trecerea la injecția de dependențe a necesitat destul timp și s-a așteptat câțiva ani pentru noua versiune Nette. De aceea, când a fost lansată în sfârșit, a purtat direct numărul 2. Versiunea Nette 1 deci nu există.
Nette a început istoria sa modernă în 2012 cu versiunea 2.0. A adus și Nette Database, parte a căruia era și un instrument neobișnuit de util pentru lucrul cu baza de date, numit astăzi Explorer. Această bibliotecă a fost programată inițial de Jakub Vrána, vecinul lui David Grudl și autorul popularului instrument Adminer. Dezvoltarea sa ulterioară a fost preluată apoi pentru trei ani de Jan Škrášek.
În 2014 a fost lansat Nette 2.1, urmat la scurt timp de Nette 2.2. Cum este posibil? Versiunea 2.2 era aceeași cu versiunea 2.1, doar împărțită în douăzeci de pachete separate. În lumea PHP s-a impus instrumentul Composer și a schimbat modul de abordare a creării bibliotecilor. Nette a încetat astfel să mai fie un monolit și s-a descompus în părți mai mici, independente. Fiecare cu propriul său depozit, issue tracker și propriul ritm de dezvoltare și versionare. În Nette, astfel, nu trebuie să apară absurdități comune în framework-urile monolitice, când se lansează o nouă versiune a unui pachet, deși nu s-a schimbat absolut nimic în el. Împărțirea propriu-zisă a depozitelor Git a implicat câteva săptămâni de pregătire și sute de ore de timp de mașină.
Nette s-a clasat, de asemenea, pe uimitorul loc 3 în sondajul mondial privind cel mai bun framework PHP, organizat de revista Sitepoint.