Istoria lui Nette

Originile Nette datează din 2004, când autorul său, David Grudl, a început să caute un cadru de lucru adecvat pentru a scrie aplicații, deoarece PHP-ul pur nu mai era suficient. Niciuna dintre soluțiile disponibile la acea vreme nu i se potrivea, așa că a început treptat să schițeze caracteristicile unui nou framework, care a primit ulterior numele de Nette.

La acea vreme, cadrele actuale precum Symfony, Laravel sau Ruby on Rails nu existau încă. În lumea Java, JSF (JavaServer Faces) era standardul, iar în domeniul concurent .NET, ASP.NET Webforms era cadrul dominant. Ambele permiteau construirea de pagini folosind componente UI reutilizabile. David a considerat că metodele lor de abstractizare și încercările de a crea statelessness prin intermediul protocolului HTTP fără stateless, folosind sesiuni sau postback-uri, erau defectuoase și fundamental defecte. Acestea au cauzat multe dificultăți pentru utilizatori și pentru motoarele de căutare. De exemplu, dacă salvați un link, aveați surpriza să găsiți mai târziu un conținut diferit sub el.

Posibilitatea de a compune pagini din componente UI reutilizabile l-a fascinat pe David, care o cunoștea bine din Delphi, un instrument popular pentru crearea de aplicații desktop la acea vreme. Îi plăceau piețele cu componente opensource pentru Delphi. Așa că a încercat să rezolve problema modului de a crea un cadru de componente care, la rândul său, să funcționeze în deplină armonie cu HTTP fără stat. Căuta un concept care să fie prietenos pentru utilizator, SEO și dezvoltator. Și astfel s-a născut Nette.

Numele Nette a apărut din întâmplare în baie, când autorul a zărit o sticlă de gel de ras Gillette, rotită astfel încât să se vadă doar llette.

Au urmat mii de ore de cercetare, gândire și rescriere. Într-un garaj prăfuit dintr-un sat undeva în afara orașului Brno, se creau primele schițe ale viitorului cadru. Baza arhitecturii a fost modelul MVC, care a fost folosit apoi de către cadrul PHP Mojavi, acum uitat, și mai târziu popularizat de agitația din jurul Ruby on Rails. Una dintre sursele de inspirație a fost chiar cadrul phpBase, niciodată publicat, de Honza Tichý.

Pe blogul autorului au început să apară articole despre viitorul Nette. S-a glumit pe seama faptului că era vorba despre vaporware. Dar apoi, în octombrie 2007, în cadrul conferinței Prague PHP Seminar, David a prezentat public Nette. Apropo, această conferință s-a transformat un an mai târziu în WebExpo, devenită ulterior una dintre cele mai mari conferințe IT din Europa. Chiar și atunci, Nette a prezentat cu mândrie o serie de concepte originale, cum ar fi modelul de componente menționat mai sus, routerul bidirecțional, modul specific de conectare între prezentatori etc. Avea formulare, autentificare, caching etc. Totul este încă folosit în Nette în conceptul său original până astăzi.

Nette folosește prezentator în loc de controler pentru că se presupune că erau prea multe cuvinte care începeau cu con în cod (controller, front controller, control, config, container, …).

La sfârșitul anului 2007, David Grudl a publicat codul și a fost lansat Nette 0.7. O comunitate entuziastă de programatori s-a format în jurul acestuia și a început să se întâlnească în fiecare lună la evenimentul Posobota. Comunitatea a inclus multe dintre personalitățile de astăzi, cum ar fi Ondrej Mirtes, autorul marelui instrument PHPStan. Dezvoltarea lui Nette a avansat, iar în următorii doi ani au fost lansate versiunile 0.8 și 0.9, care au pus bazele pentru aproape toate părțile de astăzi ale cadrului. Inclusiv fragmente AJAX care au precedat cu 14 ani Hotwire pentru Ruby on Rails sau Symfony UX Turbo.

Dar un lucru crucial lipsea din Nette pe atunci. Dependecy injection container (DIC). Nette folosea un service locator, iar intenția era să se treacă la dependecy injection. Dar cum să proiectezi un astfel de lucru? David Grudl, care nu avea nicio experiență cu DI la acea vreme, a mers la prânz cu Vasek Purchart, care folosea DI de aproximativ o jumătate de an. Împreună au discutat subiectul și David a început să lucreze la Nette DI, o bibliotecă care a revoluționat complet modul în care ne gândim la proiectarea aplicațiilor. Containerul DI a devenit una dintre cele mai de succes părți ale cadrului. Și a dat naștere la două produse derivate: formatul Neon și biblioteca Schema.

Trecerea la injecția de dependență a necesitat mult timp și am așteptat câțiva ani pentru o nouă versiune de Nette. Prin urmare, când a apărut în cele din urmă, aceasta a fost numerotată 2. Așadar, Nette versiunea 1 nu există.

Nette și-a început istoria modernă în 2012, cu versiunea 2.0. Aceasta a adus și Nette Database, care a inclus un instrument de baze de date extrem de util, numit acum 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 de Jan Škrášek timp de trei ani.

În 2014, a fost lansat Nette 2.1, urmat la scurt timp de Nette 2.2. Cum este posibil acest lucru? Versiunea 2.2 a fost aceeași cu versiunea 2.1, doar că a fost împărțită în douăzeci de pachete separate. Instrumentul Composer s-a impus în lumea PHP și a schimbat modul în care ne gândim la crearea de biblioteci. Nette a încetat să mai fie un monolit și s-a despărțit în părți independente mai mici. Fiecare cu propriul depozit, cu propriul tracker de probleme și cu propriul flux de dezvoltare și versiuni. În acest fel, Nette nu trebuie să treacă prin absurditățile obișnuite în cadrele monolitice, în care apare o nouă versiune a unui pachet chiar dacă nu s-a schimbat nimic. Împărțirea efectivă a depozitelor Git a implicat câteva săptămâni de pregătire și sute de ore de lucru la mașină.

De asemenea, Nette s-a clasat pe un uimitor loc 3 în sondajul global pentru cel mai bun framework PHP organizat de revista Sitepoint.