Histoire de Nette
Les origines de Nette remontent à 2004, lorsque son auteur, David Grudl, a commencé à chercher un framework approprié pour écrire des applications, car le PHP pur ne suffisait plus. Aucune des solutions disponibles à l'époque ne lui convenait, il a donc progressivement esquissé les contours d'un nouveau framework, qui a plus tard reçu le nom de Nette.
À cette époque, les frameworks actuels tels que Symfony, Laravel ou même Ruby on Rails n'existaient pas encore. Dans le monde Java, le standard était le framework JSF (JavaServer Faces), et dans le monde concurrent .NET, c'était ASP.NET Webforms. Les deux permettaient de construire des pages à l'aide de composants UI réutilisables. David considérait leurs méthodes d'abstraction et leurs tentatives de créer un état sur le protocole HTTP sans état à l'aide de sessions ou de ce qu'on appelle le postback comme erronées et fondamentalement non fonctionnelles. Elles causaient de nombreuses difficultés aux utilisateurs et aux moteurs de recherche. Par exemple, si vous enregistriez un lien, vous trouviez plus tard avec surprise un contenu différent sous celui-ci.
La possibilité même de composer des pages à partir de composants UI réutilisables fascinait David, il la connaissait bien de Delphi, un outil alors populaire pour la création d'applications de bureau. Il aimait les marchés de composants open source pour Delphi. Il a donc essayé de résoudre la question de savoir comment créer un framework à composants qui fonctionnerait, au contraire, en parfaite harmonie avec le protocole HTTP sans état. Il cherchait un concept qui serait convivial pour les utilisateurs, le SEO et les développeurs. C'est ainsi que Nette a commencé à naître.
Le nom Nette est né par hasard dans la salle de bain, lorsque l'auteur a aperçu un pot de gel à raser Gillette, tourné de telle sorte que seul llette était visible.
Ont suivi des milliers d'heures de recherche, de réflexion et de réécriture. Dans un garage poussiéreux d'un village quelque part près de Brno, les premiers contours du futur framework prenaient forme. La base de l'architecture est devenue le modèle MVC, qui était alors utilisé par le framework PHP aujourd'hui oublié Mojavi et qui a ensuite été popularisé grâce au battage médiatique autour de Ruby on Rails. L'une des sources d'inspiration était même le framework jamais publié phpBase de Honza Tichý.
Sur le blog de l'auteur, des articles sur le futur Nette ont commencé à paraître. On plaisantait en disant qu'il s'agissait d'un vaporware. Puis, en octobre 2007, lors de la conférence PHP Seminář à Prague, David a présenté publiquement Nette. D'ailleurs, de cette conférence est née un an plus tard WebExpo, devenue plus tard l'une des plus grandes conférences informatiques d'Europe. Déjà à l'époque, Nette se vantait de nombreux concepts originaux, tels que le modèle de composants mentionné, le routeur bidirectionnel, une méthode spécifique de liaison entre les presenters, etc. Il avait des formulaires, l'authentification résolue, la mise en cache, etc. Tout dans Nette est utilisé dans sa conception originale jusqu'à aujourd'hui.
Dans Nette, le terme presenter est utilisé à la place de controller, car il y avait apparemment trop de mots commençant par con dans le code (controller, front controller, control, config, container, …)
Fin 2007, David Grudl a également publié le code et la version Nette 0.7 a ainsi vu le jour. Le framework a immédiatement attiré une attention considérable. Une communauté enthousiaste de programmeurs s'est formée autour de lui, qui a commencé à se réunir chaque mois lors de l'événement Posobota. La communauté comptait de nombreuses personnalités d'aujourd'hui, par exemple Ondřej Mirtes, l'auteur du formidable outil PHPStan. Le développement de Nette a progressé rapidement et au cours des deux années suivantes, les versions 0.8 et 0.9 sont sorties, où les bases de presque toutes les parties actuelles du framework ont été posées. Y compris les snippets AJAX, qui ont devancé de 14 ans Hotwire pour Ruby on Rails ou Symfony UX Turbo.
Cependant, une chose essentielle manquait dans le Nette de l'époque. Le conteneur d'injection de dépendances (DIC). Nette utilisait ce qu'on appelle un service locator et l'intention était de passer justement à l'injection de dépendances. Mais comment concevoir une telle chose ? David Grudl, qui n'avait alors aucune expérience avec DI, est allé déjeuner avec Vašek Purchart, qui utilisait DI depuis environ six mois. Ensemble, ils ont discuté du sujet et David a commencé à travailler sur Nette DI, une bibliothèque qui a complètement renversé la façon de penser la conception d'applications. Le conteneur DI est devenu l'une des parties les plus réussies du framework. Et il a donné naissance plus tard à deux spin-offs : le format Neon et la bibliothèque Schema.
Le passage à l'injection de dépendances a demandé beaucoup de temps et il a fallu attendre quelques années pour une nouvelle version de Nette. C'est pourquoi, lorsqu'elle est enfin sortie, elle portait directement le numéro 2. La version Nette 1 n'existe donc pas.
En 2012, avec la version 2.0, Nette a lancé son histoire moderne. Elle a également apporté Nette Database, qui comprenait un outil extraordinairement pratique pour travailler avec la base de données, aujourd'hui appelé Explorer. Cette bibliothèque avait été initialement programmée par Jakub Vrána, voisin de David Grudl et auteur de l'outil populaire Adminer. Jan Škrášek a ensuite pris en charge son développement ultérieur pendant trois ans.
En 2014, Nette 2.1 est sorti, suivi peu de temps après par Nette 2.2. Comment est-ce possible ? La version 2.2 était identique à la version 2.1, mais divisée en vingt paquets distincts. Dans le monde PHP, l'outil Composer s'était installé et avait changé la façon de concevoir la création de bibliothèques. Nette a ainsi cessé d'être un monolithe et s'est décomposé en parties plus petites et indépendantes. Chacune avec son propre dépôt, son issue tracker et son propre rythme de développement et de versionnement. Ainsi, dans Nette, il n'est pas nécessaire que se produisent les absurdités courantes dans les frameworks monolithiques, où une nouvelle version d'un paquet sort alors que rien n'y a changé du tout. La division elle-même des dépôts Git a nécessité plusieurs semaines de préparation et des centaines d'heures de temps machine.
Nette s'est également classé à une incroyable 3ème place dans le sondage mondial sur le meilleur framework PHP organisé par le magazine Sitepoint.