1 points par GN⁺ 2024-01-15 | 1 commentaires | Partager sur WhatsApp
  • 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.app est 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

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
  • 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

 
GN⁺ 2024-01-15
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.

    • C’est un peu dommage de devoir fournir ce genre d’explication même sur un forum de hackers. Ça me rappelle une formule que j’aime bien dans le discours de remise de diplôme de John Carmack :
      « 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
    • Piloter une réécriture de l’UI depuis zéro serait probablement aussi une tâche bien plus lourde.
      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.
    • La phrase « pour l’instant, c’est un projet de loisir » a un petit air des débuts de Linus Torvalds : « ce n’est qu’un hobby, ça ne sera pas gros et professionnel comme gnu » [0].
      Quoi qu’il en soit, j’espère que le projet marchera bien.
      [0] https://www.cs.cmu.edu/~awb/linux.history.html
    • Calibre est une référence pour la gestion d’e-books, mais je n’ai jamais été satisfait ni de l’expérience utilisateur ni du côté développeur. Il n’a jamais été conçu comme une bibliothèque hébergée accessible via le Web, et personnellement, mon expérience a été très mauvaise.
      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 suffirait probablement de dire : « ça ne répond pas à mes besoins et il faudrait réécrire entièrement le backend ». Quand l’orientation de l’app souhaitée est aussi différente de ce qui existe déjà, je ne pense pas qu’il soit nécessaire de justifier ce choix.
  • 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.

    • Calibre est incroyablement lent et instable. Pour y importer une grosse bibliothèque, par exemple de l’ordre de 100 Go, cela a littéralement pris des semaines, et j’ai dû l’ajouter par petits lots.
      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.
    • Le problème que je rencontre, c’est que Calibre s’effondre complètement au-delà de 20 000 e-books.
      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.
    • Si l’on parle non seulement de l’esthétique mais de l’ensemble de l’UI/UX, je suis d’accord. Calibre est une application très puissante et riche en fonctionnalités, mais son interface peu intuitive et lourde le freine.
    • Ce n’est pas qu’il n’est « pas si mauvais » : il est réellement mauvais. Si l’on gère quelque chose comme une bibliothèque publique et qu’on veut contrôler tous les détails, ça peut convenir, mais si l’on veut simplement stocker sa bibliothèque personnelle, il y a trop souvent des moments du type « comment je fais X ? ».
      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 ».
    • En tant que lecteur occasionnel d’e-books, je suis assez d’accord. Si Calibre avait eu une équipe de designers, il serait sans doute beaucoup plus populaire et largement utilisé.
      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

  • 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’appareil
    Pour 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

    • C’est l’une des raisons pour lesquelles j’ai acheté un Kobo plutôt qu’un Kindle il y a quelques années. Quand on le branche, il se monte comme un simple périphérique de stockage de masse USB, et il suffit de copier les fichiers
      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
    • Je recommande de passer les epub dans kepubify [1] une fois avant de les transférer vers la liseuse
      [1]: https://pgaskin.net/kepubify/
    • Ça fait longtemps que je l’ai configuré, mais on peut aussi synchroniser via ssh, donc synchroniser récursivement un répertoire sans fil
      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
    • J’ai été assez surpris quand j’ai appris que c’était possible. Je pensais que Calibre faisait quelque chose de spécial. C’est pour ça que Citadel a une fonction « copier vers un dossier ». On peut copier des ebooks vers un disque externe
      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
    • Faut-il un compte pour utiliser un Kobo ? Ou est-ce qu’on peut simplement l’acheter, mettre des epub dans ce répertoire et commencer à lire ?
  • Ç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

    • D’après ce que j’ai observé pendant plusieurs années, j’ai l’impression que le projet Calibre n’accueille généralement pas très bien les améliorations. Kovid Goyal a déjà ce qu’il veut, et si l’on veut autre chose, il faudra probablement forker puis maintenir soi-même
      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 n’utilise pas Calibre assez longtemps pour que son UI me dérange. Environ 10 minutes maximum tous les quelques mois. J’importe des Epub, je mets à jour les métadonnées et je les envoie vers l’appareil
      Je lis des livres pendant quelques mois, puis je répète le processus d’import
    • Pour donner un autre point de vue, je n’ai jamais eu de problème avec l’UI de Calibre et, en général, j’arrive rapidement et efficacement à faire ce que je veux
      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 ?

    • Mon principal usage de Calibre était de rassembler mes epub au même endroit et, de temps en temps, de les synchroniser avec une liseuse. Quand on ajoute un livre, il faut récupérer des métadonnées comme le titre ou l’ISBN
      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
    • Par « Calibre CLI », tu sembles parler de la gestion d’une collection de livres, mais si tu veux seulement convertir des livres, Calibre dispose déjà d’un CLI appelé 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

    • Sympa. J’ai moi aussi un peu touché à Tauri sur quelques projets par le passé
      Je suis curieux de savoir pourquoi tu as choisi Svelte et Tauri pour ce projet. Tu les connaissais déjà ?
    • Je vais regarder ce projet pour m’en inspirer
  • Petite digression, mais cette façon de lancer l’application m’a fait ma journée
    bun dev -- -- -- -- --server ...

    • Ça m’a donné envie de comprendre ce qui se passe
  • 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

    • Ça a l’air bien. J’espère que tu continueras à travailler dessus, j’aimerais l’essayer
  • Court article sur Citadel : https://denhoff.ca/posts/replacing-calibre