Geschichte von Nette
Die Entstehung von Nette reicht bis ins Jahr 2004 zurück, als sein Autor David Grudl nach einem geeigneten Framework suchte, in dem er Anwendungen schreiben konnte, da reines PHP dafür nicht mehr ausreichte. Keine der damals verfügbaren Lösungen passte ihm, also begann er nach und nach, die Züge eines neuen Frameworks zu skizzieren, das später den Namen Nette erhielt.
Zu dieser Zeit existierten die heutigen Frameworks wie Symfony, Laravel oder Ruby on Rails noch nicht. In der Java-Welt war das Framework JSF (JavaServer Faces) Standard, im konkurrierenden .NET wiederum ASP.NET Webforms. Beide ermöglichten den Aufbau von Seiten mithilfe wiederverwendbarer UI-Komponenten. Ihre Abstraktionsmethoden und Versuche, über das zustandslose HTTP-Protokoll mithilfe von Sessions oder sogenannten Postbacks einen Zustand zu schaffen, hielt David für fehlerhaft und von Grund auf nicht funktionsfähig. Sie verursachten eine Reihe von Schwierigkeiten für Benutzer und Suchmaschinen. Wenn Sie beispielsweise einen Link speicherten, fanden Sie später überraschenderweise anderen Inhalt darunter.
Die Möglichkeit selbst, Seiten aus wiederverwendbaren UI-Komponenten zusammenzusetzen, faszinierte David; er kannte sie gut aus Delphi, einem damals beliebten Werkzeug zur Erstellung von Desktop-Anwendungen. Ihm gefielen die Marktplätze mit Open-Source-Komponenten für Delphi. Er versuchte daher, die Frage zu lösen, wie man ein Komponenten-Framework schaffen könnte, das im Gegensatz dazu in völliger Übereinstimmung mit dem zustandslosen HTTP funktionieren würde. Er suchte nach einem Konzept, das benutzer-, SEO- und entwicklerfreundlich wäre. Und so begann Nette zu entstehen.
Der Name Nette entstand zufällig im Badezimmer, als der Autor einen Behälter mit Gillette-Rasiergel sah, der so gedreht war, dass nur llette zu sehen war.
Es folgten Tausende Stunden des Forschens, Nachdenkens und Umschreibens. In einer staubigen Garage in einem Dorf irgendwo hinter Brünn entstanden die ersten Umrisse des zukünftigen Frameworks. Die Grundlage der Architektur bildete das MVC-Muster, das damals das heute vergessene PHP-Framework Mojavi verwendete und später durch den Hype um Ruby on Rails populär wurde. Eine der Inspirationsquellen war sogar das nie veröffentlichte Framework phpBase von Honza Tichý.
Auf dem Blog des Autors erschienen erste Artikel über das kommende Nette. Es wurde gescherzt, dass es sich um Vaporware handele. Aber dann, im Oktober 2007, stellte David Nette auf der Prager Konferenz PHP Seminář öffentlich vor. Übrigens entwickelte sich aus dieser Konferenz ein Jahr später das WebExpo, später eine der größten IT-Konferenzen Europas. Schon damals konnte Nette mit einer Reihe origineller Konzepte aufwarten, wie dem erwähnten Komponentenmodell, einem bidirektionalen Router, einer spezifischen Art der Verlinkung zwischen Presentern usw. Es hatte Formulare, gelöste Authentifizierung, Caching usw. Alles wird in Nette bis heute im ursprünglichen Konzept verwendet.
In Nette wird anstelle des Begriffs controller der Begriff presenter verwendet, da es im Code angeblich zu viele Wörter gab, die mit con begannen (controller, front controller, control, config, container, …)
Ende 2007 veröffentlichte David Grudl auch den Code, und so erblickte die Version Nette 0.7 das Licht der Welt. Das Framework zog sofort immense Aufmerksamkeit auf sich. Um es herum bildete sich eine begeisterte Gemeinschaft von Programmierern, die sich jeden Monat bei der Veranstaltung Posobota trafen. In der Community gab es eine Reihe heutiger Persönlichkeiten, zum Beispiel Ondřej Mirtes, den Autor des großartigen Werkzeugs PHPStan. Die Entwicklung von Nette schritt schnell voran, und in den nächsten zwei Jahren erschienen die Versionen 0.8 und 0.9, in denen die Grundlagen für fast alle heutigen Teile des Frameworks gelegt wurden. Einschließlich AJAX-Snippets, die Hotwire für Ruby on Rails oder Symfony UX Turbo um 14 Jahre voraus waren.
Eine wesentliche Sache fehlte jedoch im damaligen Nette. Dependency Injection Container (DIC). Nette verwendete einen sogenannten Service Locator, und die Absicht war, genau auf Dependency Injection umzusteigen. Aber wie entwirft man so etwas? David Grudl, der damals keine Erfahrung mit DI hatte, ging mit Vašek Purchart zum Mittagessen, der DI seit etwa einem halben Jahr verwendete. Sie diskutierten das Thema gemeinsam, und David begann mit der Arbeit an Nette DI, einer Bibliothek, die die Art und Weise, wie über Anwendungsdesign nachgedacht wird, völlig revolutionierte. Der DI-Container wurde zu einem der gelungensten Teile des Frameworks. Und brachte später auch zwei Spin-offs hervor: das Neon-Format und die Schema-Bibliothek.
Der Übergang zur Dependency Injection erforderte viel Zeit, und auf die neue Version von Nette musste man einige Jahre warten. Als sie endlich erschien, trug sie daher direkt die Versionsnummer 2. Die Version Nette 1 existiert also nicht.
Mit der Version 2.0 startete Nette 2012 seine moderne Geschichte. Es brachte auch Nette Database mit, dessen Bestandteil auch ein außerordentlich praktisches Werkzeug für die Arbeit mit Datenbanken war, heute Explorer genannt. Diese Bibliothek wurde ursprünglich von Jakub Vrána programmiert, einem Nachbarn von David Grudl und Autor des beliebten Werkzeugs Adminer. Ihre Weiterentwicklung übernahm anschließend für drei Jahre Jan Škrášek.
2014 erschien Nette 2.1, kurz darauf folgte Nette 2.2. Wie ist das möglich? Version 2.2 war identisch mit Version 2.1, nur aufgeteilt in zwanzig separate Pakete. In der PHP-Welt etablierte sich das Werkzeug Composer und veränderte die Art und Weise, wie die Erstellung von Bibliotheken angegangen wurde. Nette hörte somit auf, ein Monolith zu sein, und zerfiel in kleinere, unabhängige Teile. Jeder mit eigenem Repository, Issue Tracker und eigenem Entwicklungstempo und Versionierung. So muss es in Nette nicht zu Absurditäten kommen, die in monolithischen Frameworks üblich sind, wenn eine neue Version eines Pakets erscheint, obwohl sich darin überhaupt nichts geändert hat. Die eigentliche Aufteilung der Git-Repositories erforderte mehrere Wochen Vorbereitung und Hunderte von Stunden Maschinenzeit.
Nette erreichte außerdem einen erstaunlichen 3. Platz in der weltweiten Umfrage zum besten PHP-Framework, die vom Magazin Sitepoint durchgeführt wurde.