🧯 Bibadac is Born

PostĂ© le 14-10-2024 par Aliaume Lopez – lecture en 5 minutes (≈ 1072 mots)

TL;DR Bibadac est un outil en ligne de commande permettant de gĂ©rer une bibliographie Ă©crite avec BibTeX. Il est conçu pour rĂ©pondre Ă  des besoins simples et rĂ©currents comme : formater une bibliographie et vĂ©rifier la cohĂ©rence des entrĂ©es. Son nom est tirĂ© du verbe polonais biadać qui signifie se plaindre, gĂ©mir, se lamenter, en ajoutant un b pour Bib TeX:

Bibadać (verbe): faire pleurer des fichiers BibTeX.

Quel type de chercheur / chercheuse ĂȘtes-vous ?

Écrire des articles nĂ©cessite de citer des articles. En pratique pour les informaticien·e·s et les mathĂ©maticien·ne·s, cela signifie interagir beaucoup avec le format de bibliographies BibTeX. Ce “format” est trĂšs flexible, et en consĂ©quence, il est trĂšs facile de faire des erreurs. Cet outil peut vous ĂȘtre utile si vous avez dĂ©jà :

  1. Modifié des entrées BibTeX à la main pour retirer des champs.
  2. Pleuré devant des entrées BibTeX illisible parce que mal formatées.
  3. Eu des problÚmes de cohérence entre les entrées de votre fichier BibTeX.
  4. Cité des articles en utilisant des liens morts.
  5. Ajouté des champs dans fichier écrit par un·e collÚgue.
  6. Eu des erreurs de compilation de votre fichier LaTeX Ă  cause de votre fichier BibTeX.

Bibadac

1.

Attention, l’utilisation de Sci-Hub est illĂ©gale dans de nombreux pays. Si vous utilisez cette fonctionnalitĂ©, vous ĂȘtes seul responsable de vos actes. En revanche, les documents tĂ©lĂ©chargĂ©s sur arXiv ou des pages personnelles d’auteurs n’ont en gĂ©nĂ©ral pas de problĂšmes de lĂ©galitĂ©.

Bibadać est un outil en ligne de commande Ă©crit en Rust pour gĂ©rer des fichiers BibTeX. Il est conçu pour ĂȘtre simple et rapide. Pour lister les potentielles erreurs dans un fichier bibadac check mon-fichier.bib. Pour formater un fichier bibadac format mon-fichier.bib. Pour tĂ©lĂ©charger les derniĂšres versions des entrĂ©es bibliographiques ainsi que tous les PDFs associĂ©s bibadac setup mon-fichier.bib.11

2.

Notons que c’est quand mĂȘme Ă©norme pour un si petit programme.

Encore un nouvel outil ? Il existe dĂ©jĂ  de nombreux outils pour gĂ©rer des fichiers BibTeX. Cependant, ces outils sont souvent pĂ©nibles. Ils utilisent des interprĂ©teurs (Python, Node.js) et sont donc relativement lourds Ă  dĂ©ployer, alors que Bibadać est un binaire d’à peine 2 Mo.22 De plus, ils sont souvent assez stricts sur le format de fichier : des erreurs de syntaxes mineures peuvent les faire planter. LĂ  oĂč Bibadać se dĂ©marque, c’est qu’il utilise Tree Sitter pour analyser le fichier d’entrĂ©e : cela permet de faire des diagnostics pertinents mĂȘme sur des fichiers invalides, et de formater des fichiers invalides sur le principe du meilleur effort. De plus, son fonctionnement sans Ă©tat le rend particuliĂšrement adaptĂ© Ă  des pipelines de compilation ou d’intĂ©gration continue.

FonctionnalitĂ©s. La principale fonction de Bibadać est de vĂ©rifier la cohĂ©rence des entrĂ©es d’un fichier BibTeX. Cela signifie vĂ©rifier l’absence de doublons, de champs vides, d’URLs qui ne sont pas accessibles, de versions pĂ©rimĂ©es d’un document, etc. En plus de cela, Bibadać propose de formater un fichier BibTeX pour le rendre plus lisible, avec la possibilitĂ© d’enrichir les entrĂ©es avec des informations provenant d’un autre fichier BibTeX. Enfin, Bibadać propose de tĂ©lĂ©charger des versions “standardisĂ©es” des citations issues du fichier d’entrĂ©e ainsi que (presque) tous les PDFs associĂ©s.

Usage typique. Vous commencez Ă  collaborer sur un projet, vous tĂ©lĂ©chargez le fichier BibTeX de votre collĂšgue. Vous lancez bibadac setup pour obtenir tous les documents nĂ©cessaires ainsi qu’une base de rĂ©fĂ©rence bibliographique Ă  jour. Vous pouvez ensuite vous servir de cette base pour vĂ©rifier votre fichier BibTeX, et le formater, l’enrichir au besoin, ou en supprimer certains champs inutiles. Avant de publier votre article, vous pouvez lancer une derniĂšre fois bibadac check pour vĂ©rifier que tout est en ordre.

Technologies, DĂ©veloppement, DĂ©ploiement

3.

Pour le moment, ce n’est pas utilisĂ©, mais dans la perspective d’écrire un plugin pour un Ă©diteur de texte, cette fonction permet de faire des analyses d’un fichier pendant que l’utilisateur le modifie.

Comme dĂ©jĂ  mentionnĂ©, Bibadać est Ă©crit en Rust. Le langage possĂšde une excellente communautĂ©, beaucoup de bibliothĂšques et une toolchain fabuleuse. Le cƓur de Bibadać est basĂ© sur Tree-sitter, un parser gĂ©nĂ©rique qui permet de faire des analyses syntaxiques de fichiers de maniĂšre efficace et itĂ©rative.33 Le seul et unique problĂšme avec ce langage est son utilisation des durĂ©es de vie nommĂ©es qui s’écrivent avec la syntaxe <'a>, or :

  1. J’écris avec un clavier BÉPO et je n’ai pas envie de changer de disposition pour Ă©crire du code.
  2. J’utilise un MacPro d’occasion sans y avoir installĂ© Linux, et le driver bĂ©po ne permet pas facilement de taper le caractĂšre ', qui est systĂ©matiquement remplacĂ© par un caractĂšre ’.
4.

C’est-Ă -dire, que toute la configuration est extraite de l’exĂ©cutable lui-mĂȘme (ou plutĂŽt, de la phase de compilation de l’exĂ©cutable), ce qui veut dire que la configuration est toujours Ă  jour avec le code.

Afin de faire une petite dĂ©monstration en ligne de Bibadać, j’ai Ă©crit une interface web minimaliste, et c’est Ă  ce moment lĂ  que j’ai rencontrĂ© le premier bĂ©mol : j’espĂ©rais pouvoir compiler Bibadać vers du WebAssembly pour avoir un dĂ©monstrateur sur une page statique, mais cela n’est pas possible Ă  cause de la dĂ©pendance Ă  Tree-sitter et des incompatibilitĂ©s d’ABI WebAssembly. J’ai donc dĂ» construire une petite API en ligne. Pour sa mise en route j’ai utilisĂ© le service shuttle.rs, destinĂ© Ă  dĂ©ployer des applications Rust en ligne de maniĂšre simple, rapide, et sans configuration.44 C’est particuliĂšrement simple Ă  utiliser (une seule commande), et le dĂ©ploiement de l’application est fait en une dizaine de minutes lors du premier build.

Conclusion

Un jour, peut-ĂȘtre, Bibadać sera un outil incontournable. En attendant, testez le en ligne sur 🧯 Bibadać — Web Demo. Si vous ĂȘtes plutĂŽt CURLieux, vous pouvez directement utiliser l’API:

curl -X POST \
     -H "Content-Type: plain/text" \
     -d @mon-fichier.bib \
     https://bibadac-web-woht.shuttle.app/api/check

  1. Attention, l’utilisation de Sci-Hub est illĂ©gale dans de nombreux pays. Si vous utilisez cette fonctionnalitĂ©, vous ĂȘtes seul responsable de vos actes. En revanche, les documents tĂ©lĂ©chargĂ©s sur arXiv ou des pages personnelles d’auteurs n’ont en gĂ©nĂ©ral pas de problĂšmes de lĂ©galitĂ©.↩

  2. Notons que c’est quand mĂȘme Ă©norme pour un si petit programme.↩

  3. Pour le moment, ce n’est pas utilisĂ©, mais dans la perspective d’écrire un plugin pour un Ă©diteur de texte, cette fonction permet de faire des analyses d’un fichier pendant que l’utilisateur le modifie.↩

  4. C’est-Ă -dire, que toute la configuration est extraite de l’exĂ©cutable lui-mĂȘme (ou plutĂŽt, de la phase de compilation de l’exĂ©cutable), ce qui veut dire que la configuration est toujours Ă  jour avec le code.↩