Історія Nette
Витоки Nette беруть початок у 2004 році, коли його автор Девід Грудл почав шукати відповідний фреймворк для написання додатків, оскільки чистого PHP було вже недостатньо. Жодне з доступних на той момент рішень його не влаштовувало, тому він поступово почав накидати риси нового фреймворку, який згодом отримав назву Nette.
На той час таких сучасних фреймворків, як Symfony, Laravel або Ruby on Rails, ще не існувало. У світі Java стандартом був JSF (JavaServer Faces), а в конкуруючому світі .NET стандартом був ASP.NET Webforms. Обидва вони давали змогу створювати сторінки з використанням багаторазово використовуваних компонентів користувацького інтерфейсу. Девід вважав їхні методи абстракції та спроби створити безгромадянськість за безгромадянським протоколом HTTP за допомогою сесій або постбеків недосконалими і принципово непрацюючими. Вони створювали безліч труднощів для користувачів і пошукових систем. Наприклад, якщо ви зберегли посилання, то з подивом виявили під ним пізніше інший контент.
Сама можливість складання сторінок із багаторазово використовуваних компонентів призначеного для користувача інтерфейсу заворожувала Девіда, і він добре знав її за Delphi, популярним на той час засобом розроблення настільних додатків. Йому сподобалися торгові майданчики з компонентами з відкритим вихідним кодом для Delphi. Тому він спробував розв'язати питання про те, як створити компонентний фреймворк, який, своєю чергою, працював би в повній гармонії зі stateless HTTP. Він шукав концепцію, яка була б зручна для користувачів, SEO та розробників. Так народилася Nette.
Ім'я Nette з'явилося випадково у ванній кімнаті, коли авторка помітила контейнер із гелем для гоління Gillette, повернутий так, що було видно тільки llette.
Потім пішли тисячі годин досліджень, роздумів і переписування. У запиленому гаражі в селі десь за межами Брно було створено перші обриси майбутнього каркаса. В основі архітектури лежав патерн MVC, який потім використовували в забутому нині PHP-фреймворку Mojavi, а пізніше популяризували галасом навколо Ruby on Rails. Одним із джерел натхнення став так і не опублікований фреймворк phpBase Хонзи Тіхі.
У блозі автора почали з'являтися статті про майбутній вихід „Nette“. Жартували, що йдеться про парову продукцію. Але потім у жовтні 2007 року, на конференції Prague PHP Seminar, Девід публічно представив Nette. До речі, через рік ця конференція перетворилася на WebExpo, яка згодом стала однією з найбільших ІТ-конференцій у Європі. Уже тоді Nette міг похвалитися низкою оригінальних концепцій, таких як вищезгадана компонентна модель, двонаправлений маршрутизатор, особливий спосіб зв'язку між ведучими тощо. У ньому були форми, аутентифікація, кешування тощо. Усе і сьогодні використовується в Nette у своїй первісній концепції.
Nette використовує presenter замість controller, тому що в коді нібито було занадто багато слів, що починаються з 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 не вистачало однієї важливої речі. Контейнер для ін'єкції залежностей (DIC). Nette використовувала сервісний локатор, і був намір перейти на dependecy injection. Але як спроектувати таку річ? Девід Грудл, який на той час не мав досвіду роботи з DI, пішов на обід із Вашеком Перчартом, який використовував DI близько півроку. Разом вони обговорили цю тему, і Девід почав роботу над Nette DI, бібліотекою, яка повністю змінила наше уявлення про дизайн додатків. Контейнер DI став однією з найуспішніших частин фреймворку. Це призвело до появи двох побічних продуктів: формату Neon і бібліотеки Schema.
Перехід на впровадження залежностей зайняв багато часу, і нова версія Nette готувалася кілька років. Ось чому, коли він нарешті вийшов, його було пронумеровано як 2. Таким чином, Nette версії 1 не існує.
Свою сучасну історію Nette почала у 2012 році з версії 2.0. Вона також принесла Nette Database, яка включала надзвичайно зручний інструмент для роботи з базами даних, який тепер називається Explorer. Ця бібліотека була спочатку запрограмована Якубом Враною, сусідом Девіда Груделя і автором популярного інструменту Adminer. Подальшим розвитком компанії протягом трьох років займався Ян Шкрашек.
У 2014 році було випущено версію Nette 2.1, за якою незабаром послідувала версія Nette 2.2. Версія 2.2 була такою ж, як і версія 2.1, тільки розбита на двадцять окремих пакетів. Інструмент Composer прижився у світі PHP і змінив наше уявлення про створення бібліотек. Nette перестала бути монолітом і розпалася на дрібні незалежні частини. Кожна з них має свій власний репозиторій, трекер проблем і свій власний темп розробки та версіонування. Таким чином, Nette не потрібно проходити через абсурди, характерні для монолітних фреймворків, коли виходить нова версія пакета, хоча нічого не змінилося. Фактичний поділ репозиторіїв Git вимагав кількох тижнів підготовки і сотень годин машинного часу.
Nette також посів дивовижне 3-е місце в глобальному опитуванні на найкращий PHP-фреймворк, організованому журналом Sitepoint.