Historia Nette
Początek Nette sięga roku 2004, kiedy jego autor David Grudl zaczął szukać odpowiedniego frameworku, w którym mógłby pisać aplikacje, ponieważ czyste PHP już do tego nie wystarczało. Żadne z dostępnych wówczas rozwiązań mu nie odpowiadało, więc zaczął stopniowo szkicować zarysy nowego frameworku, który później otrzymał nazwę Nette.
W tamtym czasie nie istniały jeszcze obecne frameworki takie jak Symfony, Laravel czy Ruby on Rails. W świecie Javy standardem był framework JSF (JavaServer Faces), a w konkurencyjnym .NET – ASP.NET Webforms. Oba pozwalały budować strony za pomocą ponownie używalnych komponentów UI. Ich sposoby abstrakcji i próby stworzenia stanowości nad bezstanowym protokołem HTTP za pomocą sesji lub tzw. postbacku David uważał za błędne i od podstaw niefunkcjonalne. Powodowały one szereg trudności użytkownikom i wyszukiwarkom. Na przykład, jeśli zapisałeś link, później z zaskoczeniem znajdowałeś pod nim inną treść.
Sama możliwość składania stron z ponownie używalnych komponentów UI fascynowała Davida, dobrze znał ją z Delphi, popularnego wówczas narzędzia do tworzenia aplikacji desktopowych. Podobały mu się rynki z komponentami open source dla Delphi. Starał się więc rozwiązać pytanie, jak stworzyć framework komponentowy, który działałby w całkowitej zgodzie z bezstanowym HTTP. Szukał koncepcji, która byłaby przyjazna dla użytkowników, SEO i deweloperów. I tak zaczęło rodzić się Nette.
Nazwa Nette powstała przypadkiem w łazience, gdy autor zauważył pojemnik z żelem do golenia Gillette, obrócony tak, że widać było tylko llette.
Nastąpiły tysiące godzin badań, przemyśleń i przepisywania. W zakurzonym garażu we wsi gdzieś za Brnem powstawały pierwsze zarysy przyszłego frameworku. Podstawą architektury stał się wzorzec MVC, który wówczas używał dziś już zapomniany framework PHP Mojavi, a później został spopularyzowany dzięki szumowi wokół Ruby on Rails. Jednym ze źródeł inspiracji był nawet nigdy nieopublikowany framework phpBase Honzy Tichého.
Na blogu autora zaczęły pojawiać się artykuły o planowanym Nette. Żartowano, że to vaporware. Ale potem w październiku 2007 roku na praskiej konferencji PHP Seminář David publicznie zaprezentował Nette. Nawiasem mówiąc, z tej konferencji rok później wyewoluowało WebExpo, później jedna z największych konferencji IT w Europie. Już wtedy Nette pochwaliło się szeregiem oryginalnych koncepcji, jak wspomniany model komponentowy, dwukierunkowy router, specyficzny sposób linkowania między prezenterami itp. Miało formularze, rozwiązaną autentykację, cache itp. Wszystko to w Nette jest używane w pierwotnym ujęciu do dziś.
W Nette zamiast pojęcia controller używa się presenter, ponieważ w kodzie było podobno zbyt wiele słów zaczynających się na con (controller, front controller, control, config, container, …)
Pod koniec 2007 roku David Grudl opublikował również kod i światło dzienne ujrzała wersja Nette 0.7. Framework natychmiast przyciągnął ogromną uwagę. Wokół niego utworzyła się entuzjastyczna społeczność programistów, która zaczęła spotykać się co miesiąc na wydarzeniu Posobota. W społeczności było wiele dzisiejszych osobistości, na przykład Ondřej Mirtes, autor świetnego narzędzia PHPStan. Rozwój Nette pędził naprzód i w kolejnych dwóch latach ukazały się wersje 0.8 i 0.9, gdzie położono fundamenty pod niemal wszystkie dzisiejsze części frameworku. W tym snippety AJAXowe, które o 14 lat wyprzedziły Hotwire dla Ruby on Rails czy Symfony UX Turbo.
Jednej zasadniczej rzeczy jednak w ówczesnym Nette brakowało. Kontenera Wstrzykiwania Zależności (DIC). Nette używało tzw. service locator i zamiarem było przejście właśnie na wstrzykiwanie zależności. Ale jak zaprojektować coś takiego? David Grudl, który wówczas nie miał doświadczenia z DI, poszedł na obiad z Vaškem Purchartem, który używał DI od około pół roku. Wspólnie przedyskutowali temat i David rozpoczął pracę nad Nette DI, biblioteką, która całkowicie zmieniła sposób myślenia o projektowaniu aplikacji. Kontener DI stał się jedną z najbardziej udanych części frameworku. I dał później początek dwóm spin-offom: formatowi Neon i bibliotece Schema.
Przejście na wstrzykiwanie zależności wymagało sporo czasu i na nową wersję Nette trzeba było czekać kilka lat. Dlatego, gdy w końcu się ukazała, nosiła od razu numer 2. Wersja Nette 1 więc nie istnieje.
Nette w 2012 roku wersją 2.0 rozpoczęło swoją nowoczesną historię. Przyniosło również Nette Database, której częścią był niezwykle poręczny narzędzie do pracy z bazą danych, dziś nazywane Explorer. Tę bibliotekę pierwotnie zaprogramował Jakub Vrána, sąsiad Davida Grudla i autor popularnego narzędzia Adminer. Jej dalszym rozwojem zajął się następnie na trzy lata Jan Škrášek.
W 2014 roku ukazało się Nette 2.1, w krótkim czasie nastąpiło Nette 2.2. Jak to możliwe? Wersja 2.2 była taka sama jak wersja 2.1, tylko podzielona na dwadzieścia osobnych pakietów. W świecie PHP zadomowiło się narzędzie Composer i zmieniło sposób pojmowania tworzenia bibliotek. Nette przestało być monolitem i rozpadło się na mniejsze, niezależne części. Każda z własnym repozytorium, issue trackerem i własnym tempem rozwoju i wersjonowaniem. W Nette nie musi więc dochodzić do absurdów powszechnych w monolitycznych frameworkach, kiedy wychodzi nowa wersja pakietu, mimo że nic się w nim nie zmieniło. Samo podzielenie repozytoriów Git wymagało kilku tygodni przygotowań i setek godzin czasu maszynowego.
Nette zajęło również niesamowite 3. miejsce w światowej ankiecie na najlepszy framework PHP organizowanej przez magazyn Sitepoint.