Show HN : Citadel, une application de gestion d’ebooks compatible avec Calibre
(github.com/every-day-things)- Citadel est une application de gestion de bibliothèque d’ebooks qui vise une meilleure UX et une impression de vitesse supérieure, tout en conservant une bibliothèque d’ebooks lisible par Calibre
- Ses objectifs principaux sont la rétrocompatibilité avec Calibre, une interface facile à utiliser et agréable à regarder, ainsi que des performances nettement plus rapides que Calibre, sans jamais donner l’impression d’être plus lente
- Il s’agit actuellement d’un logiciel à un stade précoce : il faut s’attendre à des bugs et à des fonctionnalités manquantes ; il peut planter, ne pas inclure certaines fonctions de base ou endommager une bibliothèque d’ebooks
- Citadel n’est ni une liseuse ni un éditeur de contenu d’ebook ; les fichiers s’ouvrent avec l’application par défaut, et l’accent est mis sur la gestion des métadonnées, comme les titres
- Les builds stables sont disponibles dans Releases, les builds de développement dans GitHub Actions, et le développement nécessite Bun et Rust
Ce que Citadel cherche à faire
- Citadel est une application de gestion de bibliothèque d’ebooks, qui pose comme principe central la rétrocompatibilité avec Calibre
- Une bibliothèque modifiée par Citadel doit pouvoir être lue par Calibre
- Le projet poursuit trois objectifs
- Rétrocompatibilité avec Calibre : les bibliothèques modifiées par Citadel doivent pouvoir être lues par Calibre
- Bonne UX : l’application doit être facile à utiliser et agréable à regarder
- Performances : elle doit sembler beaucoup plus rapide que Calibre, et ne doit absolument jamais être plus lente
Ce que Citadel ne fait pas
- Citadel n’est pas une liseuse d’ebooks
- Il existe déjà de bonnes applications de lecture d’ebooks, et Citadel ouvre les fichiers dans l’application par défaut de l’utilisateur
- Citadel n’est pas un éditeur de contenu d’ebooks
- Si l’objectif est de modifier le contenu du texte d’un ebook, et non des métadonnées comme le titre, ce n’est pas un substitut
- Citadel ne vise pas une parité fonctionnelle à 100 % avec Calibre
- Cela concerne surtout l’écosystème des plugins
- Certaines fonctionnalités avancées de Calibre pourraient ne jamais être développées
État actuel et téléchargement
- Citadel est à un stade de développement très précoce
- Il peut planter
- Des fonctionnalités de base peuvent manquer
- Il peut endommager une bibliothèque d’ebooks
- Si Citadel est utilisé avec une bibliothèque Calibre, des sauvegardes régulières sont nécessaires
- Des builds à peu près stables sont disponibles dans Releases
- Les builds de développement sont disponibles dans GitHub Actions
- Les utilisateurs sont invités à signaler les problèmes ou plantages rencontrés, quelle que soit la version utilisée
Remarque sur l’installation sous macOS
- Les builds macOS ne sont pas encore signés
- Si
Citadel.appest ouvert directement, macOS affiche un avertissement indiquant que le fichier est « damaged » - Le problème se résout en supprimant l’attribut Quarantine du fichier
- Instructions associées : Removing the Quarantine attribute from the file
- Exemple de commande :
xattr -d com.apple.quarantine /Applications/Citadel.app/
Développement et build
- Les prérequis de développement sont l’installation de Bun et de Rust
- Installation des paquets :
bun install - Exécution en développement :
bun run dev # or just bun dev - Les commandes de lint et de formatage sont les suivantes
- Formatage de tout le code :
bun format - Vérification du formatage de tout le code :
bun format:check - Lint de tout le code :
bun lint - Formatage du backend :
bun format:backend - Lint du backend :
bun lint:backend - Formatage du frontend :
bun format:web - Lint du frontend :
bun lint:web
- Formatage de tout le code :
- Il est possible de lancer un aperçu de l’application sans backend
- Des erreurs s’affichent, car l’application suppose que le backend Rust existe alors qu’il n’est pas présent
bun dev:app - Le build de production se génère avec les commandes suivantes, une fois les prérequis de développement installés
bun install bun run build
Mises à jour et projets liés
- Citadel peut vérifier les mises à jour de l’application et les installer sur demande
- La vérification automatique des mises à jour peut être désactivée dans Settings via
Auto updates: On/Off - L’installation se fait toujours explicitement, et le libellé dans l’UI est
Install and restart - Les paramètres mainteneur et les détails du workflow de release se trouvent dans
docs/updater-and-releases.md - Citadel prend Calibre comme point de référence et s’inspire du prototype Figma de redesign de Calibre
1 commentaires
Avis sur Hacker News
On pourrait demander : « Pourquoi créer une nouvelle app au lieu de contribuer à des projets existants comme Calibre Web ? » La réponse est : simplement parce que j’en avais envie.
Pour l’instant, c’est un projet de loisir, donc je m’intéresse davantage au plaisir de créer du logiciel, même de façon plus rugueuse, qu’à l’extension de projets existants. Citadel est conçu pour être rétrocompatible avec Calibre, ce qui permet de continuer à utiliser Calibre Web.
Côté backend, le code qui touche à Calibre a aussi été isolé dans une bibliothèque séparée, avec l’idée qu’elle puisse plus tard servir à d’autres projets. Une CLI pour la bibliothèque Calibre semble aussi envisageable.
« Dans beaucoup de domaines, on considère presque comme une évidence qu’il ne faut pas réinventer la roue. Mais parfois, j’ai envie d’encourager les gens à le faire quand même. Rien que par ce processus, on s’améliore, et c’est aussi comme ça qu’on finit par obtenir de meilleures roues. Parce que des gens essaient, tout simplement. »
https://www.youtube.com/watch?v=YOZnqjHkULc
Même quand on connaît ses fonctionnalités, Calibre est assez pénible à utiliser, au point qu’il devient difficile de le recommander, que ce soit à ses grands-parents ou à quelqu’un de calé en technologie.
Quoi qu’il en soit, j’espère que le projet marchera bien.
[0] https://www.cs.cmu.edu/~awb/linux.history.html
S’il existait un concurrent solide, plus ouvert, plus moderne, et pensé comme une bibliothèque hébergée, je pense que je migrerais immédiatement.
Il m’arrive de penser que si Calibre avait simplement été plus agréable à regarder, les gens auraient compris à quel point il est impressionnant. Franchement, ce n’est pas si mauvais, et personnellement je l’aime bien, mais les gens semblent incapables de dépasser son apparence.
Il plantait sans arrêt, et le processus était tellement lent que je l’ai déplacé sur une machine séparée. Quand j’ai essayé de chercher via l’interface Web, c’était aussi très lent.
Sans même parler de l’UI peu intuitive. Pour quelque chose censé servir de bibliothèque, il est très loin même d’une simple liste d’auteurs par ordre alphabétique comme dans une vraie bibliothèque.
Je comprends que la plupart des gens en aient plutôt 10 à 300, mais j’ai essayé d’utiliser Calibre pour quelques grosses bibliothèques, et il n’a vraiment pas tenu le coup.
Le choix de s’en tenir uniquement à SQLite n’aide pas non plus. Vers 2016, j’avais ouvert une PR, mais le mainteneur était assez fortement opposé à modifier la couche base de données ou à la rendre remplaçable.
En plus, en quelques secondes on peut lancer un conteneur calibre-web et obtenir une UI propre avec OPDS ; je ne vois donc pas pourquoi il faudrait supporter cette « esthétique ».
Il n’est pas intuitif, et son UI/UX est plutôt mauvaise. Il subit pleinement la malédiction que connaissent souvent les applications puissantes.
Cela dit, je vais le réessayer aujourd’hui pour voir si je peux m’y habituer. Surtout pour les utilisateurs avancés, c’est vraiment excellent pour un produit gratuit.
Bon projet. J’aime les fonctionnalités de Calibre, mais moi aussi son UI me frustre pas mal, donc j’ai commencé à concevoir une interface qui ressemble à un mélange entre iTunes avant Apple Music et iBooks
Je n’ai encore fait qu’un seul écran, mais il est visible ici : https://www.figma.com/file/m8qaYbPSnxiFPDPbuYtz2w/Calibre-re...
La question centrale était : comment présenter les principales fonctionnalités de Calibre dans une UI qui donne l’impression d’être native sur macOS ?
Si l’objectif n’est pas le multiplateforme, je pourrais peut-être, quand j’aurai le temps, en faire une app SwiftUI avec un backend Rust
Suivre le développement de Calibre et maintenir la compatibilité pourrait être difficile, mais ça ressemble à un projet perso amusant
En particulier, la refonte publiée sur Reddit par Kemie Guaida[1] a été une grande source d’inspiration design, et je dois aussi l’ajouter aux crédits dans le dépôt ; je vais le faire bientôt : https://old.reddit.com/r/Calibre/comments/udzumn/testing_a_n...
On peut voir la vue d’ensemble du projet ici : https://www.figma.com/file/g4ntqXWa6C0PRGrG3WjyXM/Calibre-pr...
[1]: https://kemielikes.design/
Je m’en suis rendu compte hier : sur Ubuntu 22.04, après avoir branché une liseuse Kobo, il suffit de copier les epub dans le répertoire
root/du point de montage/media/oakhaven/koboreader. Ils apparaissent alors dans la liste des livres de l’appareilPour une raison quelconque, je pensais que mettre des livres sur un Kobo était compliqué, et j’utilisais uniquement Calibre pour transférer des livres de mon portable vers le Kobo
Je sais que Calibre a beaucoup d’autres fonctionnalités, mais je n’aimais pas son interface, et je suis content de ne plus avoir besoin d’utiliser Calibre ni d’apps similaires
Pas besoin d’un format particulier non plus : les formats standards comme ePub fonctionnent bien
Du coup, je me demandais comment le Kindle pouvait rester aussi populaire. Je ne sais pas si c’est l’avantage du premier entrant, mais une liseuse qui ne lit pas les ePub et les PDF me fait l’effet d’un lecteur audio qui ne lit pas les MP3 et les AAC
[1]: https://pgaskin.net/kepubify/
Je crois que je mettais d’abord les livres via USB, puis je synchronisais les nouvelles quotidiennes et les livres supplémentaires avec rsync. Certains contenus étaient générés automatiquement dans le répertoire, comme via une collecte automatique ou des abonnements par e-mail, et d’autres étaient ajoutés manuellement, comme quand je copiais de nouveaux livres après les avoir achetés
En fait, ce n’est pas un problème très compliqué, mais Calibre fait bien plus que copier des livres dans une structure de dossiers donnée
Je ne sais pas si c’est vraiment plus simple que d’ouvrir simplement un dossier et de faire copier/coller, mais quand Citadel détecte quels livres sont sur l’appareil, il met à jour le fichier de métadonnées utilisé par Calibre, ce qui évite d’avoir à lire tous les fichiers du dossier
Ça a l’air bien. Pas plus tard que la semaine dernière, j’ai essayé de réutiliser Calibre et je suis tombé dans le trou noir qu’est cette UI. J’ai envisagé de contribuer du travail UI/UX, mais ça ressemblait à un projet de plusieurs années
À la place, je pourrais peut-être aider sur l’UI/UX de ce projet
Il a fait un travail incroyable, mais c’est une de ces personnes aux goûts très affirmés, et même si quelqu’un propose de travailler dessus, il peut devenir rapidement, arbitrairement et bizarrement hostile sur certains sujets
Je lis des livres pendant quelques mois, puis je répète le processus d’import
Franchement, je suis curieux : existe-t-il des exemples d’apps natives pour smartphone aussi riches en fonctionnalités que Calibre, mais qui les proposent d’une manière bien meilleure et plus simple ?
J’aime le fait qu’un projet perso ait été réellement publié. Visuellement, c’est aussi propre. Et le CLI de calibre sera clairement bien accueilli. Je déteste devoir cliquer à travers cinq niveaux de menus
Si les volets « lecteur » et « éditeur » ne sont pas explicitement des objectifs, je me demande ce que Citadel apporte concrètement aux utilisateurs. Est-ce surtout un portail pour consulter, trier et cliquer sur des livres ? Y a-t-il une feuille de route prévoyant davantage de fonctionnalités ?
Citadel prend en charge, et prend déjà partiellement en charge, l’édition de métadonnées comme le titre du livre, l’auteur et, plus tard, les tags et les colonnes personnalisées. C’est certain. La synchronisation avec les appareils arrivera aussi avec le temps, tout comme le téléchargement de métadonnées depuis des sources en ligne
En revanche, il n’est pas prévu de modifier le contenu des livres ni d’intégrer une liseuse. Il existe déjà beaucoup d’excellentes applications et d’excellents appareils de lecture, et je ne pense pas que l’édition d’epub soit aussi courante que la gestion de collections
Il n’y a pas de feuille de route, mais les retours et les idées sont toujours les bienvenus
En plus, des fonctionnalités comme la conversion de formats et la suppression de DRM finiront probablement par arriver. Idéalement, j’aimerais les implémenter sous forme de crates ou de plugins afin de rendre l’extension plus facile
ebook-convert. Il prend en charge plusieurs formats de fichiers, dont epub, pdf, azw3, mobi, etc.Exemple :
ebook-convert file.epub file.azw3Ça a vraiment l’air super, et je compte y jeter un œil. Ironiquement, j’ai récemment créé une application desktop de gestion de livres audio avec la même stack, à savoir Rust + Tauri + Svelte
Petite promo au cas où ça intéresserait quelqu’un : https://gitlab.com/fonner/audiobook-locker#audiobook-locker
Je suis curieux de savoir pourquoi tu as choisi Svelte et Tauri pour ce projet. Tu les connaissais déjà ?
Petite digression, mais cette façon de lancer l’application m’a fait ma journée
bun dev -- -- -- -- --server ...Intéressant. J’ai moi aussi commencé à travailler pendant un moment sur un projet similaire, avec une idée proche, mais j’ai choisi SvelteKit et le navigateur plutôt qu’une application native
https://github.com/project-kiosk/kiosk
Je n’arrive pas à garder la motivation assez longtemps pour le terminer
Court article sur Citadel : https://denhoff.ca/posts/replacing-calibre