1 Punkte von GN⁺ 2024-01-15 | 1 Kommentare | Auf WhatsApp teilen
  • Citadel ist eine App zur Verwaltung von E-Book-Bibliotheken, die eine von Calibre lesbare E-Book-Bibliothek beibehält und dabei eine bessere UX sowie ein schnelleres Nutzungserlebnis anstrebt
  • Die Kernziele sind Abwärtskompatibilität mit Calibre, eine einfach zu bedienende und ansprechende Oberfläche sowie eine Leistung, die sich deutlich schneller als Calibre anfühlt und niemals langsamer ist
  • Derzeit handelt es sich um frühe Software, daher sind Bugs und fehlende Funktionen zu erwarten; die App kann abstürzen, grundlegende Funktionen können fehlen oder sie kann eine E-Book-Bibliothek beschädigen
  • Citadel ist weder ein E-Book-Reader noch ein Editor für E-Book-Inhalte; Dateien werden mit der Standard-App geöffnet, und der Fokus liegt auf der Verwaltung von Metadaten wie Titeln
  • Stabile Builds gibt es unter Releases, Entwicklungs-Builds über GitHub Actions; für die Entwicklung werden Bun und Rust benötigt

Was Citadel erreichen will

  • Citadel ist eine App zur Verwaltung von E-Book-Bibliotheken und setzt Abwärtskompatibilität mit Calibre als zentrales Prinzip voraus
  • Von Citadel geänderte Bibliotheken müssen von Calibre lesbar sein
  • Das Projekt hat drei Ziele
    • Abwärtskompatibilität mit Calibre: Von Citadel bearbeitete Bibliotheken müssen von Calibre lesbar sein
    • Gute UX: Die App soll einfach zu bedienen und optisch ansprechend sein
    • Leistung: Sie soll sich deutlich schneller als Calibre anfühlen und darf niemals langsamer sein

Was Citadel nicht ist

  • Citadel ist kein E-Book-Reader
    • Es gibt bereits gute E-Book-Reader-Apps, und Citadel öffnet Dateien in der Standard-App des Nutzers
  • Citadel ist kein Editor für E-Book-Inhalte
    • Wenn du den eigentlichen Inhalt eines E-Books statt Metadaten wie dem Titel bearbeiten willst, ist Citadel kein Ersatz
  • Es wird keine 100%ige Funktionsgleichheit mit Calibre angestrebt
    • Das betrifft vor allem den Plugin-Bereich
    • Einige fortgeschrittene Funktionen von Calibre werden möglicherweise nicht umgesetzt

Aktueller Status und Download

  • Citadel befindet sich in einer sehr frühen Entwicklungsphase
    • Die App kann abstürzen
    • Grundlegende Funktionen können fehlen
    • Sie kann eine E-Book-Bibliothek beschädigen
  • Wenn du Citadel mit einer Calibre-Bibliothek verwendest, sind regelmäßige Backups erforderlich
  • Halbwegs stabile Builds gibt es unter Releases
  • Entwicklungs-Builds gibt es über GitHub Actions
  • Es wird darum gebeten, alle Probleme oder Abstürze zu melden, die bei der Nutzung irgendeiner Version auftreten

Hinweise zur Installation unter macOS

  • Der macOS-Build ist noch nicht signiert
  • Wenn Citadel.app direkt geöffnet wird, erscheint eine Warnung, dass die Datei „damaged“ sei
  • Das Problem lässt sich beheben, indem das Quarantine-Attribut der Datei entfernt wird

Entwicklung und Build

  • Voraussetzungen für die Entwicklung sind die Installation von Bun und Rust
  • Pakete installieren:
    bun install
    
  • Entwicklung starten:
    bun run dev
    
    # or just bun dev
    
  • Die Befehle für Linting und Formatierung sind wie folgt
    • Gesamten Code formatieren: bun format
    • Formatierung des gesamten Codes prüfen: bun format:check
    • Gesamten Code linten: bun lint
    • Backend formatieren: bun format:backend
    • Backend linten: bun lint:backend
    • Frontend formatieren: bun format:web
    • Frontend linten: bun lint:web
  • Eine Vorschau der App kann auch ohne Backend ausgeführt werden
    • Da das Rust-Backend nicht vorhanden ist, aber als vorhanden angenommen wird, werden Fehler angezeigt
    bun dev:app
    
  • Ein Produktions-Build wird nach Erfüllung der Entwicklungsvoraussetzungen mit den folgenden Befehlen erzeugt
    bun install
    bun run build
    

Updates und verwandte Projekte

  • Citadel kann nach App-Updates suchen und sie auf Anfrage installieren
  • Die automatische Update-Prüfung kann in den Settings unter Auto updates: On/Off deaktiviert werden
  • Die Installation erfolgt immer explizit; der UI-Text lautet Install and restart
  • Details zu Maintainer-Einstellungen und Release-Workflow stehen in docs/updater-and-releases.md
  • Citadel orientiert sich an Calibre und ist vom Calibre-redesign-Figma-Prototyp inspiriert

1 Kommentare

 
GN⁺ 2024-01-15
Meinungen auf Hacker News
  • Auf die Frage „Warum eine neue App bauen, statt zu bestehenden Projekten wie Calibre Web beizutragen?“ lautet die Antwort: einfach, weil ich Lust dazu hatte.
    Im Moment ist es ein Hobbyprojekt, und mir geht es mehr darum, mit Spaß Software zu bauen, auch wenn sie rauer ist, als ein bestehendes Projekt zu erweitern. Citadel ist so konzipiert, dass es abwärtskompatibel zu Calibre ist, sodass man Calibre Web weiterhin verwenden kann.
    Auch im Backend habe ich den Code, der mit Calibre in Berührung kommt, in eine separate Library ausgelagert, und später soll sie auch in anderen Projekten nutzbar sein. Eine CLI für die Calibre-Library scheint ebenfalls möglich.

    • Es ist ein wenig schade, dass man selbst in einem Hacker-Forum so eine Erklärung abgeben muss. Mir fällt eine Lieblingsstelle aus John Carmacks Abschlussrede ein:
      „In vielen Bereichen gilt es fast als Allgemeinwissen, dass man das Rad nicht neu erfinden soll. Aber manchmal möchte ich trotzdem dazu raten, es zu versuchen. Allein durch den Prozess wird man besser, und am Ende entstehen so auch bessere Räder. Weil Leute es einfach ausprobieren.“
      https://www.youtube.com/watch?v=YOZnqjHkULc
    • Auch ein UI von Grund auf neu zu schreiben, dürfte eine deutlich größere Aufgabe sein.
      Calibre ist, selbst wenn man die Funktionen kennt, ziemlich mühsam zu benutzen, sodass man es weder Großeltern noch technikaffinen Leuten guten Gewissens empfehlen kann.
    • Bei „Im Moment ist es ein Hobbyprojekt“ schwingt ein bisschen der frühe Linus-Torvalds-Vibe mit: „nur ein Hobby, wird nicht groß und professionell wie gnu“ [0].
      Trotzdem wünsche ich dem Projekt viel Erfolg.
      [0] https://www.cs.cmu.edu/~awb/linux.history.html
    • Calibre ist bei der Verwaltung von E-Books zwar stark, aber weder bei der User Experience noch aus Entwicklersicht war ich je zufrieden. Es wurde nie als gehostete Library mit Webzugriff entworfen, und persönlich finde ich die Erfahrung sehr schlecht.
      Wenn es einen soliden Konkurrenten gäbe, der offener und moderner ist und eine gehostete Library mitdenkt, würde ich wohl sofort wechseln.
    • Man könnte einfach sagen: „Es passt nicht zu meinen Bedürfnissen, und ich müsste das Backend komplett neu schreiben.“ Wenn die gewünschte Richtung der App so stark von dem abweicht, was es derzeit gibt, muss man diese Entscheidung meiner Meinung nach nicht eigens rechtfertigen.
  • Manchmal denke ich, wenn Calibre nur besser aussehen würde, würden die Leute erkennen, wie großartig es ist. Ehrlich gesagt ist es gar nicht so schlecht, und ich persönlich mag es, aber die Leute scheinen nicht über das Äußere hinwegzukommen.

    • Calibre ist extrem langsam und instabil. Eine große Library, zum Beispiel in der Größenordnung von 100 GB, einzuspielen hat buchstäblich Wochen gedauert, und ich musste sie stückweise hinzufügen.
      Es ist ständig abgestürzt, und der Vorgang war so langsam, dass ich ihn auf eine separate Maschine ausgelagert habe. Als ich über das Webinterface gesucht habe, war auch das sehr langsam.
      Von der nicht intuitiven UI ganz zu schweigen. Dafür, dass es als Library dienen soll, bleibt es sogar weit hinter einer echten Bibliotheksliste nach Autor in alphabetischer Reihenfolge zurück.
    • Das Problem, das ich habe, ist, dass Calibre bei mehr als 20.000 E-Books komplett zusammenbricht.
      Ich verstehe, dass die meisten wohl eher 10 bis 300 Bücher haben, aber ich wollte ein paar große Libraries mit Calibre nutzen, und es hat wirklich nicht standgehalten.
      Die Entscheidung, stur bei SQLite zu bleiben, hilft auch nicht. Um 2016 herum habe ich einen PR eröffnet, aber der Maintainer war ziemlich entschieden dagegen, die Datenbankschicht zu ändern oder austauschbar zu machen.
    • Wenn damit nicht nur die Optik, sondern die gesamte UI/UX gemeint ist, stimme ich zu. Calibre ist eine sehr mächtige und funktionsreiche App, aber die unintuitive und klobige UI bremst sie aus.
    • Es ist nicht nur „nicht schlecht“, sondern tatsächlich schlecht. Wenn man so etwas wie eine öffentliche Bibliothek verwaltet und jedes Detail kontrollieren will, mag es okay sein, aber wenn man nur seine persönliche Library speichern möchte, gibt es jedes Mal zu viele „Wie mache ich X?“-Momente.
      Außerdem kann man in ein paar Sekunden einen calibre-web-Container starten und eine saubere UI plus OPDS bekommen; warum sollte man sich also diese „Ästhetik“ antun?
    • Aus Sicht eines gelegentlichen E-Book-Lesers stimme ich stark zu. Wenn Calibre ein Designerteam hätte, wäre es vermutlich viel beliebter und weiter verbreitet.
      Es ist nicht intuitiv, und die UI/UX ist ziemlich schlecht. Es leidet genau unter dem Fluch, den mächtige Anwendungen häufig haben.
      Trotzdem werde ich es heute noch einmal ausprobieren und sehen, ob ich mich daran gewöhnen kann. Gerade für Power-User ist es für ein kostenloses Produkt wirklich hervorragend.
  • Gutes Projekt. Ich mag die Funktionen von Calibre, aber die UI frustriert mich auch ziemlich, deshalb habe ich angefangen, ein Interface zu entwerfen, das wie eine Mischung aus iTunes vor Apple Music und iBooks wirkt
    Bisher habe ich erst einen Screen gebaut, aber man kann ihn hier sehen: https://www.figma.com/file/m8qaYbPSnxiFPDPbuYtz2w/Calibre-re...
    Die Kernfrage war, wie man die wichtigsten Funktionen von Calibre in einer UI darstellen kann, die sich nativ für macOS anfühlt
    Wenn man nicht auf Cross-Platform abzielt, könnte ich daraus irgendwann, wenn ich Zeit habe, auch eine SwiftUI-App mit Rust-Backend machen
    Mit der Calibre-Entwicklung Schritt zu halten und es zu warten, könnte schwierig sein, aber es sieht nach einem interessanten Hobbyprojekt aus

  • Ich habe gestern gemerkt, dass man unter Ubuntu 22.04, nachdem man einen Kobo-Reader angeschlossen hat, epubs einfach in das Verzeichnis root/ am Mount-Punkt /media/oakhaven/koboreader kopieren kann. Dann erscheinen sie in der Bücherliste auf dem Gerät
    Aus irgendeinem Grund dachte ich, Bücher auf einen Kobo zu laden sei kompliziert, und habe immer nur Calibre verwendet, wenn ich Bücher vom Laptop auf den Kobo übertragen habe
    Ich weiß, dass Calibre viele andere Funktionen hat, aber mir gefiel das Interface nicht, und ich bin froh, dass ich Calibre oder ähnliche Apps jetzt nicht mehr verwenden muss

    • Genau das war vor ein paar Jahren einer der Gründe, warum ich statt eines Kindle einen Kobo gekauft habe. Man schließt ihn an, er wird wie ein normales USB-Massenspeichergerät gemountet, und man kopiert einfach Dateien
      Es ist kein spezielles Format nötig, und Standardformate wie ePub funktionieren gut
      Deshalb habe ich mich gefragt, wie der Kindle weiterhin so beliebt sein kann. Vielleicht ist es der First-Mover-Effekt, aber ein E-Book-Reader, der ePub und PDF nicht lesen kann, fühlt sich an wie ein Audioplayer, der MP3 und AAC nicht abspielen kann
    • Ich empfehle, epubs vor dem Übertragen auf den E-Book-Reader einmal durch kepubify [1] laufen zu lassen
      [1]: https://pgaskin.net/kepubify/
    • Es ist lange her, dass ich das eingerichtet habe, aber man kann auch per ssh synchronisieren, sodass man Verzeichnisse drahtlos rekursiv synchronisieren kann
      Ich glaube, ich habe Bücher zunächst per USB geladen und dann tägliche Nachrichten und weitere Bücher per rsync synchronisiert. Einige Inhalte wurden automatisch erzeugt und in ein Verzeichnis gelegt, etwa durch automatisches Sammeln oder E-Mail-Abos; anderes habe ich manuell hinzugefügt, etwa indem ich nach dem Kauf ein neues Buch kopiert habe
      Eigentlich ist das kein besonders kompliziertes Problem, aber Calibre macht sehr viel mehr, als Bücher nur in eine bestimmte Ordnerstruktur zu kopieren
    • Ich war ziemlich überrascht, als ich erfuhr, dass das geht. Ich dachte, Calibre mache irgendetwas Besonderes. Deshalb hat Citadel eine Funktion „In Ordner kopieren“. Man kann E-Books auf ein externes Laufwerk kopieren
      Ich weiß nicht, ob das wirklich einfacher ist, als einfach den Ordner zu öffnen und Copy/Paste zu machen, aber Citadel aktualisiert die Metadatendatei, die Calibre verwendet, wenn es erkennt, welche Bücher auf dem Gerät sind, sodass nicht alle Dateien im Ordner gelesen werden müssen
    • Braucht man für die Nutzung eines Kobo ein Konto? Oder kann man ihn einfach kaufen, epubs in dieses Verzeichnis legen und sofort lesen?
  • Sieht gut aus. Erst letzte Woche habe ich versucht, Calibre wieder zu benutzen, und bin in dieses schwarze Loch von UI gefallen. Ich habe überlegt, UI/UX-Arbeit zu spenden, aber das hätte sich nach einem mehrjährigen Projekt angefühlt
    Stattdessen könnte ich vielleicht bei der UI/UX dieses Projekts helfen

    • Nach mehreren Jahren Beobachtung habe ich den Eindruck gewonnen, dass das Calibre-Projekt Verbesserungen im Allgemeinen nicht besonders begrüßt. Kovid Goyal hat bereits das, was er will, und wenn man etwas anderes möchte, muss man wohl forken und es selbst warten
      Er hat erstaunliche Arbeit geleistet, aber er ist einer dieser Menschen mit sehr starken Vorlieben, und selbst wenn jemand anderes die Arbeit übernehmen will, kann er bei manchen Dingen schnell und willkürlich auf seltsame Weise feindselig werden
    • Ich benutze Calibre nicht lange genug, als dass mich die UI stören würde. Alle paar Monate höchstens etwa 10 Minuten. Epub importieren, Metadaten aktualisieren, ans Gerät senden
      Dann lese ich ein paar Monate Bücher und wiederhole den Importvorgang
    • Als andere Perspektive: Ich hatte mit der Calibre-UI nie Probleme und erledige normalerweise schnell und effizient, was ich möchte
      Ganz ehrlich gefragt: Gibt es Beispiele für native Smartphone-Apps, die so funktionsreich wie Calibre sind und das Ganze deutlich besser und einfacher anbieten?
  • Ich finde es gut, dass ein Hobbyprojekt tatsächlich veröffentlicht wurde. Sieht auch aufgeräumt aus. Und calibre CLI dürfte definitiv gut ankommen. Ich hasse es, mich durch fünf Menüebenen klicken zu müssen.
    Wenn die Bereiche „Reader“ und „Editor“ ausdrücklich nicht das Ziel sind: Was tut Citadel dann konkret für Nutzer? Ist es vor allem ein Portal, um Bücher anzusehen, zu sortieren und anzuklicken? Gibt es eine Roadmap mit weiteren geplanten Funktionen?

    • Mein Hauptanwendungsfall für Calibre war, epubs an einem Ort zu sammeln und sie gelegentlich mit einem E-Book-Reader zu synchronisieren. Beim Hinzufügen von Büchern muss man Metadaten wie Titel und ISBN abrufen.
      Citadel unterstützt bereits teilweise und wird definitiv das Bearbeiten von Metadaten wie Buchtitel, Autor sowie später Tags und benutzerdefinierte Spalten unterstützen. Das ist sicher. Gerätesynchronisierung wird mit der Zeit ebenfalls dazukommen, ebenso die Funktion, Metadaten aus Online-Quellen herunterzuladen.
      Allerdings gibt es keine Pläne, Buchinhalte zu bearbeiten oder einen integrierten E-Book-Reader einzubauen. Es gibt bereits viele hervorragende E-Book-Apps und -Geräte, und epub-Bearbeitung halte ich im Vergleich zur Sammlungsverwaltung nicht für etwas, das häufig genutzt wird.
      Eine Roadmap gibt es nicht, aber Feedback und Ideen sind jederzeit willkommen.
      Zusätzlich werden wohl auch Funktionen wie Formatkonvertierung und DRM-Entfernung dazukommen. Idealerweise möchte ich sie als Crates oder Plugins umsetzen, damit Erweiterungen einfacher werden.
    • Mit Calibre CLI ist wohl die Verwaltung von Buchsammlungen gemeint, aber wenn man nur Bücher konvertieren möchte, hat Calibre bereits eine CLI namens ebook-convert. Sie unterstützt verschiedene Dateiformate wie epub, pdf, azw3, mobi usw.
      Beispiel:
      ebook-convert file.epub file.azw3
  • Sieht wirklich großartig aus, ich werde es mir ansehen. Ironischerweise habe ich kürzlich mit demselben Stack, also Rust + Tauri + Svelte, eine Desktop-App zur Verwaltung von Hörbüchern gebaut.
    Falls es jemanden interessiert, hier etwas Eigenwerbung: https://gitlab.com/fonner/audiobook-locker#audiobook-locker

    • Cool. Ich habe früher auch in ein paar Projekten ein wenig mit Tauri herumprobiert.
      Mich würde interessieren, warum du für dieses Projekt Svelte und Tauri gewählt hast. Warst du damit schon vertraut?
    • Ich werde mir dieses Projekt zur Inspiration ansehen.
  • Nebenbei: Diese Art, es auszuführen, hat mir den Tag versüßt.
    bun dev -- -- -- -- --server ...

    • Jetzt frage ich mich, was da vor sich geht.
  • Interessant. Ich hatte auch eine Zeit lang angefangen, an einem ähnlichen Projekt mit einer ähnlichen Idee zu arbeiten, habe mich aber statt einer nativen App für SvelteKit und den Browser entschieden.
    https://github.com/project-kiosk/kiosk
    Ich schaffe es nicht, die Motivation lange genug aufrechtzuerhalten, um es fertigzustellen.

    • Sieht gut aus. Ich hoffe, du arbeitest weiter daran; ich würde es gern ausprobieren.
  • Ein kurzer Artikel über Citadel: https://denhoff.ca/posts/replacing-calibre