Histoire de Nette

Les origines de Nette remontent à 2004, quand son auteur, David Grudl, s'est mis en quête d'un framework convenable pour écrire ses applications, le PHP pur ne lui suffisant plus. Aucune des solutions de l'époque ne répondait à ses besoins ; il a donc peu à peu esquissé les contours d'un nouveau framework, qui reçut plus tard le nom de Nette.

À cette époque, les frameworks modernes comme Symfony, Laravel ou Ruby on Rails n'existaient pas encore. Dans le monde Java, le standard était JSF (JavaServer Faces) ; dans le monde concurrent .NET, ASP.NET WebForms dominait. Tous deux permettaient de construire des pages à partir de composants d'interface réutilisables. Mais David tenait leurs méthodes d'abstraction et leurs tentatives de simuler un état par-dessus le protocole HTTP sans état, à coups de sessions ou de postbacks, pour erronées et fondamentalement bancales. Elles causaient quantité d'ennuis aux utilisateurs comme aux moteurs de recherche. Si vous enregistriez un lien, par exemple, vous pouviez plus tard avoir la surprise d'y trouver un tout autre contenu.

L'idée même de composer des pages à partir de composants d'interface réutilisables fascinait David, qui la connaissait de Delphi, alors un outil populaire pour créer des applications de bureau. Il appréciait les places de marché proposant des composants open source pour Delphi. Il a donc cherché à répondre à cette question : comment créer un framework à composants qui, lui, fonctionnerait en parfaite harmonie avec le HTTP sans état ? Il cherchait un concept qui soit à la fois agréable aux utilisateurs, au référencement et aux développeurs. C'est ainsi que Nette a commencé à prendre forme.

Le nom Nette est né par hasard dans la salle de bain, quand l'auteur a aperçu un flacon 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 ont émergé. Le patron MVC (Modèle-Vue-Contrôleur) est devenu le socle de l'architecture ; il était alors employé par Mojavi, framework PHP aujourd'hui oublié, avant d'être popularisé par le tapage autour de Ruby on Rails. Parmi les sources d'inspiration figurait même phpBase, le framework jamais publié de Honza Tichý.

Le siège mondial de Nette, 2005

Des articles sur le futur Nette ont commencé à paraître sur le blog de l'auteur. On plaisantait en parlant de vaporware. Puis, en octobre 2007, à la conférence PHP Seminar de Prague, David a présenté Nette publiquement. Cette conférence a d'ailleurs donné naissance un an plus tard à WebExpo, devenue l'une des plus grandes conférences informatiques d'Europe. Dès cette époque, Nette pouvait se targuer de plusieurs concepts originaux : le modèle de composants déjà évoqué, un routeur bidirectionnel, une manière particulière de créer les liens entre presenters, etc. Il avait des formulaires, réglait l'authentification, la mise en cache et bien d'autres choses. Tous ces concepts fondamentaux sont encore utilisés aujourd'hui dans Nette sous leur forme d'origine.

Dans Nette, le terme presenter est employé à la place de controller, apparemment parce que le code comptait déjà trop de mots commençant par con (controller, front controller, control, config, container, …).

Fin 2007, David Grudl a publié le code et Nette 0.7 a vu le jour. Le framework a aussitôt suscité une attention immense. Une communauté enthousiaste de programmeurs s'est formée autour de lui et s'est mise à se retrouver chaque mois lors des rencontres Posobota. On y trouvait bien des figures aujourd'hui connues, comme Ondřej Mirtes, l'auteur de l'excellent outil PHPStan. Le développement de Nette a filé bon train et, dans les deux années suivantes, les versions 0.8 et 0.9 sont sorties, posant les bases de presque toutes les parties actuelles du framework. Y compris les snippets AJAX, qui ont devancé de 14 ans des technologies comme Hotwire pour Ruby on Rails ou Symfony UX Turbo.

Il manquait pourtant au Nette des débuts un élément crucial : le conteneur d'injection de dépendances (DIC). Nette utilisait un service locator, et le projet était de passer à l'injection de dépendances. Mais comment concevoir une telle chose ? David Grudl, alors sans expérience de la DI, est allé déjeuner avec Václav Purchart, qui la pratiquait depuis six mois environ. Ils en ont discuté et David s'est mis au travail sur Nette DI, une bibliothèque qui a complètement bouleversé la façon d'aborder la conception des applications. Le conteneur DI est devenu l'une des parties les plus réussies du framework et a donné naissance plus tard à deux dérivés : le format NEON et la bibliothèque Schema.

Le passage à l'injection de dépendances a demandé beaucoup de temps et la communauté a attendu quelques années la nouvelle version de Nette. Aussi, quand elle est enfin sortie, elle a directement porté le numéro 2.0. La version 1 de Nette n'existe donc pas.

Nette a inauguré son ère moderne en 2012 avec la version 2.0. Elle a aussi apporté Nette Database, qui comprenait un outil remarquablement pratique pour travailler avec les bases de données, aujourd'hui appelé Explorer. Cette bibliothèque a d'abord été programmée par Jakub Vrána, voisin de David Grudl et auteur du populaire outil Adminer. Jan Škrášek en a ensuite repris le développement pendant trois ans.

En 2014 est sorti Nette 2.1, suivi peu après de Nette 2.2. Comment est-ce possible ? La version 2.2 était pour l'essentiel identique à la 2.1, mais découpée en vingt paquets distincts. L'outil Composer s'était imposé dans le monde PHP et avait changé la façon de concevoir les bibliothèques. Nette a cessé d'être un monolithe et s'est décomposé en parties plus petites et indépendantes, chacune avec son dépôt, son gestionnaire de tickets, son rythme de développement et son versionnement. Cela évite les absurdités courantes dans les frameworks monolithiques, où une nouvelle version d'un paquet sort alors que rien n'y a changé. Le découpage des dépôts Git a lui-même exigé plusieurs semaines de préparation et des centaines d'heures de temps machine.

Nette a par ailleurs décroché une impressionnante 3e place au sondage mondial du meilleur framework PHP organisé par le magazine SitePoint.