Mais qu'est-il arrivé à Prototype ?
Par Christophe Porteneuve • Publié le 6 octobre 2012 • 3 min

En 2005, alors que Ajax devenait tendance et qu’on commençait à faire du JavaScript un peu costaud dans les pages web, il n’y avait pas encore de framework renommé. Arrivé en premier et impressionant dès l’origine, Prototype est vite devenu le chouchou de la grande majorité des développeurs web.

En 2006 puis 2007, désormais doté d’une documentation solide et d’une équipe de développement (Prototype Core) compétente, motivée et très active, il était incontournable.

Avance rapide sur 2012 : plus personne (ou presque) n’en parle. On entend encore un peu parler de MooTools, Dojo, YUI… Et le grand vainqueur est jQuery, ce framework à l’écosystème gigantesque et vivace, à tel point qu’on est obligé d’expliquer au plus grand nombre la différence entre jQuery et JavaScript.

Que s’est-il passé ?

Ce petit article un peu nostalgique vous explique pourquoi Prototype a sombré et où il en est aujourd’hui.

Full Disclaimer

Je suis moi-même un ancien de Prototype Core. En 2006, avec Bien Développer pour le Web 2.0, je produisais la première documentation exhaustive du framework, alors en version 1.4.

Durant l’hiver, j’étais l’un des trois co-auteurs du site officiel de documentation, et en janvier 2007 je rejoignais le noyau des développeurs pour produire, au fil des mois, les versions 1.5, 1.5.1 (qui était absolument géniale à l’époque) puis 1.6. En 2008, je publiais la référence, Prototype and script.aculo.us, chez les Pragmatic Programmers.

2005–2008 : l’âge d’or

C’était une période dorée. L’équipe était petite mais très active : Sam Stephenson, Andrew Dupont, Tobie Langel, Mislav Marohnić, Juriy Zaytsev et Thomas Fuchs, le créateur de script.aculo.us, plus votre serviteur.

On bossait beaucoup et ça se voyait, Prototype dominait complètement le marché des bibliothèques médianes, qui simplifiaient Ajax et le DOM mais aussi la création d’algorithmes compliqués et de systèmes de classes.

La décroissance

Et puis, presque du jour au lendemain, jQuery a pris presque toute la place. Les raisons sont multiples, mais ses forces principales étaient évidentes :

  • Une cible plus étroitement définie mais majoritaire sur le marché : les intégrateurs HTML/CSS qui ne veulent pas apprendre JavaScript trop en profondeur : ils veulent « juste » des effets visuels, des animations simples et de l’Ajax simplifié.
  • Une syntaxe facile et laxiste, triviale à apprendre, ne demandant que très peu d’efforts et de rigueur
  • Une équipe volumineuse
  • Une vraie force de frappe marketing, avec des tonnes de docs, tutorials, meetups, événements communautaires puis conférences, bouquins…

Alors que jQuery ne cessait de grandir, épaulée par le statut Mozillien de John Resig et une forte attention portée à sa communauté, pour atteindre rapidement de très nombreuses personnes dédiées à temps plein, Prototype, lui, voyait son équipe se réduire comme peau de chagrin.

Nous avions tous un boulot à temps plein à côté, nous étions peu nombreux, nous nous concentrions sur le code et n’accordions que très peu de temps à la visibilité de Prototype. Et jQuery l’a éclipsé.

Encore aujourd’hui, beaucoup de gens qui sont « tombés dans Prototype » à l’époque continuent à l’utiliser, tout en connaissant aussi jQuery. Ils aiment Prototype pour son API claire, cohérente et élégante, ses nombreuses fonctions orientées algorithmes et programmation fonctionnelle (avec jQuery, il faut complémenter par Underscore.js, très fortement inspiré de Prototype, pour obtenir un équivalent).

Mais Prototype, aujourd’hui, c’est quelques jours par mois, voire par trimestre, du seul porteur du flambeau qui reste, le vaillant Andrew Dupont. Sa détermination sans faille me touche et m’émeut ; mais le projet n’en est pas moins dans un coma léger, parfois même profond.

Des utilisateurs fidèles

J’ai moi-même arrêté de travailler à Prototype il y a presque 4 ans. Jusqu’à cet été cependant, il restait ma bibliothèque de choix pour tous mes développements front.

Quand j’utilise jQuery, si j’apprécie la complétude de son offre Ajax/JSONP et certains aspects de son offre DOM, je peste contre les nombreux pièges inhérents au design de son API, pièges souvent silencieux et sournois à l’exécution.

Et j’ai, évidemment, toujours Underscore.js en complément, car je ne pourrais me passer d’un each raisonnable, de filter, inject, flatten, without et j’en passe.

De la gratitude

Alors oui, Prototype est pratiquement mort, malgré la persistence éminemment louable d’Andrew. Mais j’aimerais qu’on se rappelle que Prototype a été le premier. Sam a inventé ce positionnement de bibliothèque, a pondu des API dont l’influence se fait sentir partout, de ES5 à Underscore.js en passant par jQuery lui-même, que John a clairement dit avoir lancé « parce [qu’il] n’était pas totalement en phase avec Prototype ».

Autour de la 1.5, on a fait des prouesses pour les premiers outils de type $$, en implémentant l’intégralité des sélecteurs CSS3 à la fois en DOM Level 3 XPath et en parcours classique.

Prototype a permis des merveilles dès 2005, et a connu une sacrée gloire pendant plusieurs années.

Je lui dis un immense merci, et à mon sens, les web devs du monde entier, y compris ceux qui ne l’ont jamais utilisé, ont eux aussi cette dette de gratitude.

Et le web continue…