История на Nette

Корените на Nette датират от 2004 г., когато нейният автор Дейвид Грудъл започва да търси рамка за писане на приложения, тъй като чистият PHP вече не е достатъчен. Нито едно от наличните по това време решения не го устройва, затова постепенно започва да набелязва характеристиките на нова рамка, която по-късно е наречена Nette.

По онова време все още не съществуваха модерни рамки като Symfony, Laravel или Ruby on Rails. В света на Java стандартът беше JSF (JavaServer Faces), а в конкурентния свят на .NET стандартът беше ASP.NET Webforms. И двете позволяват създаването на страници, използващи компоненти на потребителския интерфейс за многократна употреба. Дейвид намери техните методи за абстракция и опити за създаване на безсъстоятелност в безсъстоятелния протокол HTTP с помощта на сесии или обратни връзки за погрешни и фундаментално неприложими. Те създадоха много трудности за потребителите и търсачките. Например, ако сте запазили връзка, по-късно с изненада сте открили под нея друго съдържание.

Самата възможност за съставяне на страници от компоненти на потребителския интерфейс за многократна употреба очарова Дейвид и той я познаваше добре от Delphi, популярен по това време инструмент за разработка на настолни приложения. Той харесва пазарите на компоненти с отворен код за Delphi. Затова се опита да измисли как да създаде компонентна рамка, която на свой ред да работи в пълна хармония с Delphi. Той търсеше концепция, която да е удобна за потребителите, SEO и за разработчиците. Така се ражда Нете.

Името Нете се появява случайно в банята, когато авторът забелязва контейнер с гел за бръснене Gillette, обърнат така, че се вижда само llette.

Последваха хиляди часове на проучване, обмисляне и пренаписване. В един прашен гараж в село край Бърно се създават първите очертания на бъдещата рамка. Архитектурата е базирана на модела MVC, който след това е използван в забравената вече PHP рамка Mojavi, а по-късно е популяризиран от шумотевицата Ruby on Rails. Един от източниците на вдъхновение беше никога непубликуваната рамка phpBase на Honza Tichy.

В блога на автора започват да се появяват статии за предстоящото излизане на Nette. Шегуваха се, че става дума за Steam. Но през октомври 2007 г., на конференцията PHP Seminar в Прага, Дейвид публично представи Nette. Между другото, година по-късно тази конференция се превърна в WebExpo, която впоследствие стана една от най-големите ИТ конференции в Европа. Още тогава 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.

Но по онова време Нете е пропускала едно важно нещо. Контейнер за инжектиране на зависимости (DIC). Nette използваше service locator и имаше намерение да премине към 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.