project· maintenu
linelapse · L'histoire d'un dépôt git, ligne par ligne
Horiot Studio a écrit linelapse, un outil open source en Rust qui rejoue l'historique d'un dépôt git ligne par ligne, le noyau Linux entier à 120 images par seconde, en 2026.
- pour indexer l'historique de Linux
- 32 s
- images par seconde
- 120
- de demi-vie pour une ligne de Linux
- 6,8 ans
Un outil open source, du premier prototype à la version publique en une journée.
Contexte
Une carte du code où chaque dossier a la taille de ses lignes et la couleur de leur âge, que l’on parcourt dans le temps comme une vidéo.
linelapse ouvre un dépôt git et le montre comme une carte. Chaque dossier est une case dont la taille suit ses lignes de code vivantes et dont la couleur dit leur âge moyen, du jaune pour le code récent au violet pour le code ancien. Une frise permet de glisser sur toute l’histoire du dépôt. Sur le noyau Linux, cela représente 77 605 commits, de 2005 à 2026.
On y voit des dossiers naître, grossir et vieillir : le pilote
graphique d’AMD qui devient le plus gros dossier de drivers/gpu,
le Rust qui apparaît en jaune vif, des architectures qui virent au
violet.
Ce qu’on y lit
D’où vient le code, combien de temps il survit, et dans quel langage il est écrit.
La provenance. Un panneau classe les sources des lignes à l’écran : l’arbre du mainteneur cité dans chaque merge (« netdev/net-next », « drm/drm »…), la branche fusionnée ou l’auteur d’un commit direct. Il se met à jour pendant la lecture. Un clic sur une source n’allume plus que son territoire, avec l’âge de ses propres lignes.
La demi-vie. Le temps au bout duquel la moitié des lignes écrites
dans un dossier ont disparu, calculé avec l’estimateur de
Kaplan-Meier. Une ligne de Linux a une demi-vie de 6,8 ans, une
ligne de drivers/gpu de 14,6 ans.
Les langages. Une touche colore la carte par langage dominant : le Devicetree occupe les architectures ARM, la documentation et les données ressortent à part.
Comment c’est construit
Un index de chaque ligne, de sa naissance à sa disparition, vérifié contre git : zéro écart sur 97 316 fichiers.
Rust, avec GPUI, le framework d’interface de l’éditeur Zed, qui
dessine tout sur le GPU. L’indexeur lance un git log par cœur,
donne à chaque ligne un commit de naissance et un commit de
disparition, puis compresse ces événements. Sur Linux : 32 s
d’indexation, un cache de 126 Mo, 120 images par seconde et un saut
vers n’importe quel commit en moins de 0,3 ms.
Une commande compare l’index aux vrais fichiers de git : zéro écart sur 97 316 fichiers. Les vidéos se rendent hors écran, sans fenêtre, et l’outil se compile et se vérifie sous macOS comme sous Linux.
Pourquoi c’est ici
La méthode d’un projet client : mesurer le risque qui peut tout arrêter avant de construire, puis prouver chaque étape.
Avant d’écrire la moindre interface, j’ai mesuré ce qui pouvait tout arrêter : le coût d’un index ligne par ligne sur l’historique complet de Linux. Le prototype a répondu en quelques minutes, l’outil a suivi.
Construit avec des agents (Claude Code), encadré par des tests qui comparent chaque calcul à un recalcul exhaustif, une CI et des vérifications sous Linux. Le code est sous licence MIT.