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 commencé à esquisser les caractéristiques d'un nouveau framework, qui a ensuite été baptisé Nette.

À l'époque, les frameworks actuels comme Symfony, Laravel ou Ruby on Rails n'existaient pas encore. Dans le monde Java, JSF (JavaServer Faces) était la norme, et dans le domaine concurrent de .NET, ASP.NET Webforms était le cadre dominant. Tous deux permettaient de construire des pages en utilisant des composants d'interface utilisateur réutilisables. David considérait que leurs méthodes d'abstraction et leurs tentatives de créer l'apatridie sur le protocole HTTP sans état à l'aide de sessions ou de postbacks étaient défectueuses et fondamentalement cassées. Elles causaient de nombreuses difficultés aux utilisateurs et aux moteurs de recherche. Par exemple, si vous sauvegardiez un lien, vous étiez surpris de trouver un contenu différent sous ce lien plus tard.

La possibilité de composer des pages à partir de composants d'interface utilisateur réutilisables a fasciné David, qui la connaissait bien grâce à Delphi, un outil populaire pour la création d'applications de bureau à l'époque. Il aimait les places de marché proposant des composants open source pour Delphi. Il a donc essayé de résoudre la question de savoir comment créer un cadre de composants qui fonctionnerait en parfaite harmonie avec le protocole HTTP sans état. Il cherchait un concept qui serait convivial pour l'utilisateur, le référencement et le développeur. Et c'est ainsi que Nette est né.

Le nom de Nette est apparu par hasard dans la salle de bains, lorsque l'auteur a aperçu un flacon de gel à raser Gillette, tourné de manière à ce que seule la llette soit visible.

Des milliers d'heures de recherche, de réflexion et de réécriture ont suivi. Dans un garage poussiéreux d'un village aux alentours de Brno, les premiers contours du futur cadre étaient en train de se dessiner. La base de l'architecture était le modèle MVC, qui a ensuite été utilisé par le framework PHP Mojavi, aujourd'hui oublié, puis popularisé par le battage médiatique autour de Ruby on Rails. L'une des sources d'inspiration était même le framework phpBase de Honza Tichý, jamais publié.

Des articles sur le futur Nette ont commencé à apparaître sur le blog de l'auteur. On plaisantait en disant qu'il s'agissait d'un vaporware. Mais en octobre 2007, lors de la conférence Prague PHP Seminar, David a présenté publiquement Nette. À propos, cette conférence est devenue un an plus tard WebExpo, qui est devenue l'une des plus grandes conférences informatiques d'Europe. À l'époque déjà, Nette présentait fièrement un certain nombre de concepts originaux, tels que le modèle de composants susmentionné, le routeur bidirectionnel, la manière spécifique de créer des liens entre les présentateurs, etc. Il y avait des formulaires, l'authentification, la mise en cache, etc. Tout est encore utilisé dans Nette dans son concept original jusqu'à aujourd'hui.

Nette utilise presenter au lieu de controller car il y avait soi-disant trop de mots commençant par con dans le code (controller, front controller, control, config, container, …).

Fin 2007, David Grudl a publié le code et Nette 0.7 est sorti. Une communauté enthousiaste de programmeurs s'est formée autour de ce projet et a commencé à se réunir tous les mois lors de l'événement Posobota. La communauté comprenait de nombreuses sommités d'aujourd'hui, comme Ondrej Mirtes, auteur du grand outil PHPStan. Le développement de Nette a progressé et, au cours des deux années suivantes, les versions 0.8 et 0.9 ont été publiées, jetant les bases de presque toutes les parties actuelles du framework. Y compris les snippets AJAX qui précèdent de 14 ans Hotwire pour Ruby on Rails ou Symfony UX Turbo.

Mais une chose cruciale manquait à Nette à l'époque. Le Dependecy Injection Container (DIC). Nette utilisait un service locator et l'intention était de passer à l'injection de dépendances. Mais comment concevoir une telle chose ? David Grudl, qui n'avait aucune expérience de la DI à l'époque, est allé déjeuner avec Vasek Purchart, qui utilisait la DI depuis environ six mois. Ils ont discuté ensemble du sujet et David a commencé à travailler sur Nette DI, une bibliothèque qui a complètement révolutionné notre façon de concevoir les applications. Le conteneur DI est devenu l'une des parties les plus réussies du framework. Il a donné naissance à deux produits dérivés : le format Neon et la bibliothèque Schema.

Le passage à l'injection de dépendances a pris beaucoup de temps, et nous avons attendu une nouvelle version de Nette pendant deux ans. C'est pourquoi, lorsqu'elle est finalement sortie, elle portait le numéro 2. La version 1 de Nette n'existe donc pas.

Nette a commencé son histoire moderne en 2012 avec la version 2.0. Elle a également apporté Nette Database, qui comprenait un outil de base de données extrêmement pratique, maintenant appelé Explorer. Cette bibliothèque a été programmée à l'origine par Jakub Vrána, voisin de David Grudl et auteur du populaire outil Adminer. Son développement a ensuite été repris par Jan Škrášek pendant trois ans.

En 2014, Nette 2.1 est sorti, suivi de peu par Nette 2.2. Comment cela est-il possible ? La version 2.2 était la même que la version 2.1, juste divisée en vingt paquets distincts. L'outil Composer s'est imposé dans le monde PHP et a changé notre façon de concevoir la création de bibliothèques. Nette a cessé d'être un monolithe et s'est divisé en petites parties indépendantes. Chacune d'entre elles dispose de son propre dépôt, de son propre système de suivi des problèmes et de son propre flux de développement et de gestion des versions. De cette façon, Nette n'a pas à passer par les absurdités communes dans les cadres monolithiques, où une nouvelle version d'un paquet sort même si rien n'a changé. La division effective des dépôts Git a nécessité plusieurs semaines de préparation et des centaines d'heures de travail.

Nette a également obtenu une étonnante 3e place dans le sondage mondial pour le meilleur framework PHP organisé par le magazine Sitepoint.