Історія Nette
Початок виникнення Nette сягає 2004 року, коли його автор Давід Грудл почав шукати відповідний фреймворк, у якому міг би писати додатки, оскільки чистого PHP для цього вже не вистачало. Жодне з доступних на той час рішень йому не підходило, тому він почав поступово накреслювати риси нового фреймворку, який пізніше отримав назву Nette.
У той час ще не існувало сучасних фреймворків, таких як Symfony, Laravel або Ruby on Rails. У світі Java стандартом був фреймворк JSF (JavaServer Faces), а в конкурентному .NET — ASP.NET Webforms. Обидва дозволяли будувати сторінки за допомогою повторно використовуваних UI компонентів. Їхні способи абстракції та спроби створити стан над безстановим протоколом HTTP за допомогою сесії або так званого postback Давід вважав помилковими та принципово нефункціональними. Вони створювали низку труднощів користувачам та пошуковим системам. Наприклад, якщо ви зберігали посилання, пізніше ви з подивом знаходили під ним інший вміст.
Сама можливість складати сторінки з повторно використовуваних UI компонентів захоплювала Давіда, він добре знав її з Delphi, тоді популярного інструменту для створення десктопних додатків. Йому подобалися ринки з opensource компонентами для Delphi. Тому він намагався вирішити питання, як створити компонентний фреймворк, який би, навпаки, працював у повній відповідності з безстановим HTTP. Він шукав концепцію, яка була б дружньою для користувачів, SEO та розробників. І так почало зароджуватися Nette.
Назва Nette виникла випадково у ванній, коли автор помітив баночку з гелем для гоління Gillette, повернуту так, що було видно лише llette.
Далі були тисячі годин досліджень, роздумів та переписувань. У запиленому гаражі в селі десь за Брно виникали перші обриси майбутнього фреймворку. Основою архітектури став патерн MVC, який тоді використовував сьогодні вже забутий PHP фреймворк Mojavi, а пізніше був популяризований завдяки галасу навколо Ruby on Rails. Одним із джерел натхнення був навіть ніколи не опублікований фреймворк phpBase Яна Тихого.
У блозі автора почали з'являтися статті про майбутній Nette. Жартували, що це vaporware. Але потім у жовтні 2007 року на празькій конференції PHP Seminář Давід публічно представив Nette. До речі, з цієї конференції через рік розвинулося WebExpo, пізніше одна з найбільших IT-конференцій у Європі. Вже тоді Nette похвалилося низкою оригінальних концепцій, таких як згадана компонентна модель, двосторонній роутер, специфічний спосіб посилань між презентерами тощо. Воно мало форми, вирішену автентифікацію, кешування тощо. Все це в Nette використовується в початковому вигляді донині.
У Nette замість терміну controller використовується presenter, оскільки в коді, нібито, було занадто багато слів, що починаються на con (controller, front controller, control, config, container, …)
Наприкінці 2007 року Давід Грудл опублікував і код, і так світ побачила версія Nette 0.7. Фреймворк одразу привернув до себе величезну увагу. Навколо нього утворилася захоплена спільнота програмістів, яка почала щомісяця збиратися на заході Posobota. У спільноті була низка сьогоднішніх особистостей, наприклад, Ондржей Міртес, автор чудового інструменту PHPStan. Розробка Nette мчала вперед, і в наступні два роки вийшли версії 0.8 та 0.9, де були закладені основи майже всіх сьогоднішніх частин фреймворку. Включаючи AJAX-сніпети, які на 14 років випередили Hotwire для Ruby on Rails або Symfony UX Turbo.
Однак одна суттєва річ у тодішньому Nette була відсутня. Dependency injection container (DIC). Nette використовувало так званий service locator, і намір був перейти саме на dependency injection. Але як спроектувати таку річ? Давід Грудл, який тоді не мав досвіду з DI, пішов на обід з Вашеком Пурхартом, який використовував DI близько півроку. Вони разом обговорили тему, і Давід розпочав роботу над Nette DI, бібліотекою, яка повністю перевернула спосіб мислення над проектуванням додатків. DI-контейнер став однією з найвдаліших частин фреймворку. І пізніше дав початок двом спін-офам: формату Neon та бібліотеці Schema.
Перехід на dependency injection вимагав багато часу, і на нову версію Nette довелося чекати кілька років. Тому, коли вона нарешті вийшла, вона одразу отримала номер 2. Версії Nette 1, отже, не існує.
Nette у 2012 році версією 2.0 розпочало свою сучасну історію. Вона також принесла Nette Database, частиною якої був і надзвичайно зручний інструмент для роботи з базою даних, сьогодні званий Explorer. Цю бібліотеку спочатку написав Якуб Врана, сусід Давіда Грудла та автор популярного інструменту Adminer. Подальшою її розробкою потім три роки займався Ян Шкрашек.
У 2014 році вийшло Nette 2.1, за яким незабаром послідувало Nette 2.2. Як це можливо? Версія 2.2 була такою ж, як версія 2.1, тільки розділена на двадцять окремих пакетів. У світі PHP прижився інструмент Composer і змінив спосіб сприйняття створення бібліотек. Nette перестало бути монолітом і розпалося на менші незалежні частини. Кожна зі своїм репозиторієм, трекером проблем та власним темпом розробки та версіонуванням. У Nette, таким чином, не може бути абсурдів, поширених у монолітних фреймворках, коли виходить нова версія пакету, хоча в ньому взагалі нічого не змінилося. Саме розділення Git репозиторіїв вимагало кількох тижнів підготовки та сотень годин машинного часу.
Nette також посіло дивовижне 3-тє місце у всесвітньому опитуванні про найкращий PHP фреймворк, проведеному журналом Sitepoint.