En 2014, le HTML de Hacker News était devenu une fondation fragile pour un vaste écosystème : de nombreuses applications et projets tiers scrappaient le balisage du site pour lire ses histoires et ses commentaires, et ce balisage était loin d'être adapté au mobile. Y Combinator voulait moderniser le front-end et itérer plus vite dessus, mais un changement naïf du HTML aurait cassé d'un coup tous les outils dépendant du scraping.
La démarche de YC a été de publier les données comme un produit à part entière avant de toucher à la présentation. Le 7 octobre 2014, elle a annoncé une API officielle Hacker News construite en partenariat avec Firebase (YC S11), servant le contenu du site quasi en temps réel à l'adresse hacker-news.firebaseio.com, avec une documentation et des exemples publiés sur un compte GitHub Hacker News. Les SDK iOS, Android et Web prêts à l'emploi de Firebase, plus une API REST, permettaient aux développeurs de basculer sans reconstruire leurs stacks.
Le séquencement était l'essentiel : l'annonce donnait à l'écosystème trois semaines de marge avant la date cible de YC du 28 octobre pour un nouveau moteur de rendu, toujours propulsé par Arc, dont le balisage plus propre permettrait au front-end d'itérer plus vite et de rendre enfin Hacker News optimisé pour le mobile. Comme l'API était strictement meilleure que le scraping pour la plupart des usages — mises à jour quasi temps réel, SDK maintenus, pas d'analyse fragile du HTML —, convertir était une amélioration plutôt qu'une corvée, et le site pouvait changer sa présentation sans prendre ses utilisateurs en otage.
La démarche se lisait comme une intendance de l'écosystème : le fil Hacker News a recueilli 1 714 points et 298 commentaires le jour même. L'API a été lancée en lecture seule, avec un accès OAuth aux données privées par utilisateur prévu plus tard, et YC a crédité son équipe logicielle — kogir, dang et sctb — de sa construction.
Publier d'abord le contrat de données : une API officielle quasi temps réel, strictement plus simple que le scraping, avec un préavis avant le changement cassant
Découpler les données de la présentation signifie que le front-end peut changer sans casser quiconque consomme le contenu.
La synchronisation Firebase quasi temps réel avec des SDK maintenus rendait l'API strictement plus simple que le scraping, si bien que l'adoption était une migration volontaire plutôt qu'une conversion forcée.
Annoncer une marge fixe de trois semaines avant le changement de balisage donnait à chaque application une échéance et une raison de bouger tôt.
Conserver le même moteur Arc en ne changeant que le balisage de sortie réduisait le risque que l'API et le site ne divergent.
Pour changer une plateforme sur laquelle d'autres construisent, extraire d'abord le contrat de données, le rendre strictement meilleur que le bricolage qu'il remplace, et publier la date du changement cassant afin que les utilisateurs migrent d'eux-mêmes.
Suites
L'API est entrée en service le jour même à hacker-news.firebaseio.com, en lecture seule, avec des SDK officiels iOS, Android et Web plus une API REST, et YC a indiqué qu'un accès OAuth aux données privées par utilisateur pourrait suivre. L'annonce Hacker News a recueilli 1 714 points et 298 commentaires le 7 octobre 2014. Le billet fixait au 28 octobre la cible pour passer au nouveau moteur de rendu, afin que le balisage puisse être modernisé et optimisé pour le mobile une fois que l'écosystème aurait eu le temps de convertir — l'API était présentée comme le facilitateur de ce changement plutôt que comme une fin en soi.
VÉRIFIEZ LES SOURCES
Les sources
- Hacker News API Y Combinator Blog · blog.ycombinator.com ·
- Hacker News discussion: Hacker News API Hacker News · news.ycombinator.com ·