Contexte et motivations

La guerre de douze jours a provoqué un blackout national qui a coupé l’accès à Internet pendant plus de quatre mois. L’auteur, habitué aux lecteurs en ligne, a alors cherché une alternative hors‑ligne et a testé Strawberry, qui téléchargeait les paroles mais affichait parfois les horodatages de façon peu lisible. Cette expérience a déclenché la décision de créer son propre lecteur, baptisé AMP, afin de disposer d’un outil fonctionnant sans connexion et adapté à un environnement où le trafic UDP reste bloqué, impactant notamment les protocoles QUIC.

Architecture et choix technologiques

AMP a été écrit en Zig, un langage compilé qui ne requiert aucune bibliothèque C++ au moment de l’exécution. Cette absence de dépendances C++ réduit la surface d’attaque et simplifie le déploiement sur des distributions Linux variées. L’intégration système repose sur les API natives du bureau, garantissant une apparence « native ». L’interface utilisateur a été développée à partir de zéro, inspirée par l’expérience de l’auteur avec le framework UI de V, et les effets visuels, dont un flou, sont implémentés via des shaders écrits en Zig, suivant un article de blog spécialisé.

Intégration des LLMs et refactorisation

Pour accélérer le développement, l’auteur a exploité un abonnement Claude Max 20x (2025) afin de générer du code. Après plusieurs jours de prompts, une partie substantielle du lecteur a été « vibecodée ». Suite à la détection de l’adresse IP iranienne, Anthropic a suspendu le compte, et Codeberg a appliqué sa politique « no‑AI », obligeant l’auteur à choisir entre supprimer le code généré ou migrer le dépôt. Il a opté pour la suppression, relisant chaque ligne et réécrivant environ la moitié du codebase. Le résultat est un lecteur plus robuste, conservant les mêmes fonctionnalités tout en éliminant la complexité introduite par les LLMs.

Perspectives et limites

La feuille de route d’AMP prévoit un serveur musical, la prise en charge d’Android et de Windows, ainsi que des paquets pour les principales distributions Linux. Le projet reste sensible aux restrictions réseau : le blocage du trafic UDP limite les flux audio en temps réel et empêche l’utilisation de protocoles modernes comme QUIC. Malgré ces contraintes, le choix de Zig et l’absence de dépendances externes offrent une portabilité accrue, mais la maintenance d’une UI maison impose un coût de développement continu.