Zgodovina mesta Nette

Začetki Nette segajo v leto 2004, ko je njen avtor David Grudl začel iskati primerno ogrodje za pisanje aplikacij, saj čisti PHP ni več zadoščal. Nobena od takrat razpoložljivih rešitev mu ni ustrezala, zato je postopoma začel oblikovati značilnosti novega ogrodja, ki je pozneje dobilo ime Nette.

Takrat še ni bilo sedanjih ogrodij, kot so Symfony, Laravel ali Ruby on Rails. V svetu Jave je bil standard JSF (JavaServer Faces), v konkurenčnem svetu .NET pa je prevladovalo ogrodje ASP.NET Webforms. Oboje je omogočalo izdelavo strani z uporabo komponent uporabniškega vmesnika za večkratno uporabo. David je menil, da so njune metode abstrakcije in poskusi ustvarjanja brezstavnosti prek brezstavnega protokola HTTP z uporabo sej ali povratnih sporočil pomanjkljivi in v osnovi pokvarjeni. Uporabnikom in iskalnikom sta povzročala številne težave. Če ste na primer shranili povezavo, ste bili presenečeni, ko ste kasneje pod njo našli drugačno vsebino.

Možnost sestavljanja strani iz komponent uporabniškega vmesnika za večkratno uporabo je navdušila Davida, ki jo je dobro poznal iz Delphija, takrat priljubljenega orodja za izdelavo namiznih aplikacij. Všeč so mu bile tržnice z odprtokodnimi komponentami za Delphi. Zato je poskušal rešiti vprašanje, kako ustvariti ogrodje komponent, ki bi delovalo v popolni harmoniji z brezstavnim protokolom HTTP. Iskal je koncept, ki bi bil prijazen do uporabnikov, SEO in razvijalcev. Tako se je rodil Nette.

Ime Nette je nastalo po naključju v kopalnici, ko je avtor opazil stekleničko gela za britje Gillette, obrnjeno tako, da je bilo videti le llette.

Sledilo je na tisoče ur raziskovanja, razmišljanja in prepisovanja. V zaprašeni garaži v vasi nekje pri Brnu so nastajali prvi obrisi prihodnjega okvira. Osnova arhitekture je bil vzorec MVC, ki ga je takrat uporabljalo danes pozabljeno ogrodje PHP Mojavi, pozneje pa ga je populariziral hype okoli Ruby on Rails. Eden od virov navdiha je bilo celo nikoli objavljeno ogrodje phpBase Honze Tichýja.

Na avtorjevem blogu so se začeli pojavljati članki o prihajajoči Nette. V šali je bilo rečeno, da gre za vaporware. Nato pa je David oktobra 2007 na praški konferenci PHP Seminar javno predstavil Nette. Mimogrede, ta konferenca se je leto pozneje razvila v WebExpo, pozneje eno največjih konferenc IT v Evropi. Že takrat je Nette ponosno predstavil številne izvirne koncepte, kot so omenjeni model komponent, dvosmerni usmerjevalnik, poseben način povezovanja med predavatelji itd. Imel je obrazce, avtentikacijo, predpomnjenje itd. Vse to se v Nette še danes uporablja v prvotnem konceptu.

Nette uporablja presenter namesto controller, ker naj bi bilo v kodi preveč besed, ki se začenjajo z con (controller, front controller, control, config, container, …).

Konec leta 2007 je David Grudl objavil kodo in izšla je različica Nette 0.7. Okoli nje se je oblikovala navdušena skupnost programerjev, ki se je začela vsak mesec srečevati na dogodku Posobota. V skupnosti je bilo veliko današnjih velikanov, kot je Ondrej Mirtes, avtor odličnega orodja PHPStan. Razvoj Nette je napredoval in v naslednjih dveh letih sta bili izdani različici 0.8 in 0.9, ki sta postavili temelje za skoraj vse današnje dele ogrodja. Vključno z utrinki AJAX, ki so bili pred Hotwire za Ruby on Rails ali Symfony UX Turbo za 14 let.

Vendar je v Nette takrat manjkala ena ključna stvar. Zabojnik za vbrizgavanje odvisnosti (Dependecy injection container, DIC). Nette je uporabljal iskalnik storitev in namen je bil preiti na vbrizgavanje odvisnosti. Toda kako načrtovati takšno stvar? David Grudl, ki takrat ni imel izkušenj z DI, je šel na kosilo z Vaskom Purchartom, ki je DI uporabljal že približno pol leta. Skupaj sta razpravljala o tej temi in David je začel delati na Nette DI, knjižnici, ki je popolnoma spremenila način razmišljanja o načrtovanju aplikacij. Posoda DI je postala eden najuspešnejših delov ogrodja. Iz njega sta nastala dva stranska dela: format Neon in knjižnica Schema.

Prehod na vbrizgavanje odvisnosti je zahteval veliko časa, zato smo na novo različico Nette čakali nekaj let. Ko je končno izšla, je bila oštevilčena z 2. Različica Nette 1 torej ne obstaja.

Nette je svojo sodobno zgodovino začel leta 2012 z različico 2.0. Ta je prinesla tudi zbirko podatkov Nette, ki je vključevala izjemno priročno orodje za delo s podatkovnimi zbirkami, ki se zdaj imenuje Raziskovalec. To knjižnico je prvotno programiral Jakub Vrána, sosed Davida Grudla in avtor priljubljenega orodja Adminer. Njen nadaljnji razvoj je nato za tri leta prevzel Jan Škrášek.

Leta 2014 je bila izdana različica Nette 2.1, ki ji je kmalu sledila različica Nette 2.2. Kako je to mogoče? Različica 2.2 je bila enaka različici 2.1, le da je bila razdeljena na dvajset ločenih paketov. Orodje Composer se je uveljavilo v svetu PHP in spremenilo način razmišljanja o ustvarjanju knjižnic. Nette ni bil več monolit in je razpadel na manjše neodvisne dele. Vsak s svojo shrambo, sledilnikom težav ter lastnim potekom razvoja in različic. Na ta način Nette ni bilo treba preživeti absurdov, ki so pogosti pri monolitnih ogrodjih, kjer izide nova različica paketa, čeprav se ni nič spremenilo. Dejanska razdelitev skladišč Git je zahtevala več tednov priprav in na stotine ur strojnega časa.

Nette je zasedel tudi neverjetno tretje mesto v svetovni anketi za najboljše ogrodje PHP, ki jo je organizirala revija Sitepoint.