1 puntos por GN⁺ 2024-01-15 | 1 comentarios | Compartir por WhatsApp
  • Citadel es una app de gestión de bibliotecas de ebooks que busca ofrecer una mejor UX y una sensación de mayor rapidez, manteniendo una biblioteca de ebooks que Calibre pueda leer
  • Sus objetivos principales son la retrocompatibilidad con Calibre, una interfaz fácil de usar y agradable a la vista, y un rendimiento mucho más rápido que Calibre, que nunca se sienta lento
  • Actualmente es software en etapa temprana, por lo que se esperan errores y falta de funciones; puede fallar, carecer de funciones básicas o dañar la biblioteca de ebooks
  • Citadel no es un lector de ebooks ni un editor de contenido de ebooks; abre los archivos con la app predeterminada y se enfoca en gestionar metadatos como el título
  • Las compilaciones estables están en Releases, las de desarrollo en GitHub Actions, y para desarrollar se requieren Bun y Rust

Lo que Citadel intenta hacer

  • Citadel es una app para gestionar bibliotecas de ebooks, y toma la retrocompatibilidad con Calibre como premisa central
  • Una biblioteca modificada por Citadel debe poder ser leída por Calibre
  • El proyecto tiene tres objetivos
    • Retrocompatibilidad con Calibre: Calibre debe poder leer las bibliotecas editadas por Citadel
    • Buena UX: debe ser fácil de usar y verse bien
    • Rendimiento: debe sentirse mucho más rápido que Calibre y nunca ser más lento

Lo que no hace

  • Citadel no es un lector de ebooks
    • Ya existen buenas apps lectoras de ebooks, y Citadel hace que los archivos se abran en la app predeterminada del usuario
  • Citadel no es un editor de contenido de ebooks
    • Si lo que necesitas es editar el contenido del cuerpo del ebook, y no metadatos como el título, no es una alternativa
  • No apunta a tener paridad funcional del 100% con Calibre
    • Esto aplica principalmente al área de plugins
    • Es posible que algunas funciones avanzadas de Calibre no se implementen

Estado actual y descargas

  • Citadel está en una fase de desarrollo muy temprana
    • Puede fallar
    • Puede faltarle funcionalidad básica
    • Puede dañar la biblioteca de ebooks
  • Si se usa Citadel con una biblioteca de Calibre, se necesitan copias de seguridad periódicas
  • Las compilaciones medianamente estables se pueden obtener en Releases
  • Las compilaciones de desarrollo se pueden obtener en GitHub Actions
  • Se pide reportar cualquier problema o fallo que ocurra al usar cualquier versión

Advertencias de instalación en macOS

  • Las compilaciones para macOS aún no están firmadas
  • Si se abre Citadel.app directamente, aparece una advertencia de que el archivo está “damaged”
  • Se soluciona eliminando el atributo Quarantine del archivo

Desarrollo y compilación

  • Los prerrequisitos de desarrollo son instalar Bun y Rust
  • Instalación de paquetes:
    bun install
    
  • Ejecución en desarrollo:
    bun run dev
    
    # or just bun dev
    
  • Los comandos de lint y formato son los siguientes
    • Formatear todo el código: bun format
    • Verificar el formato de todo el código: bun format:check
    • Lint de todo el código: bun lint
    • Formato del backend: bun format:backend
    • Lint del backend: bun lint:backend
    • Formato del frontend: bun format:web
    • Lint del frontend: bun lint:web
  • Se puede ejecutar una vista previa de la app sin backend
    • Como asume que el backend en Rust existe aunque no esté presente, se muestran errores
    bun dev:app
    
  • La compilación de producción se genera con los siguientes comandos después de cumplir los prerrequisitos de desarrollo
    bun install
    bun run build
    

Actualizaciones y proyectos relacionados

  • Citadel puede buscar actualizaciones de la app e instalarlas cuando se solicite
  • La búsqueda automática de actualizaciones se puede desactivar en Settings con Auto updates: On/Off
  • La instalación siempre se realiza explícitamente, y el texto de la UI es Install and restart
  • La configuración para mantenedores y los detalles del workflow de releases están en docs/updater-and-releases.md
  • Citadel toma a Calibre como punto de referencia y se inspira en el prototipo de Figma de rediseño de Calibre

1 comentarios

 
GN⁺ 2024-01-15
Opiniones de Hacker News
  • Podría surgir la pregunta: “¿Por qué crear una app nueva en vez de contribuir a proyectos existentes como Calibre Web?”, y la respuesta es simplemente porque tenía ganas de hacerla.
    Por ahora es un proyecto de hobby, así que me interesa más crear software de forma divertida, aunque sea más rústico, que ampliar un proyecto existente. Citadel está diseñado para ser retrocompatible con Calibre, así que también se puede seguir usando Calibre Web.
    En el backend también separé el código que interactúa con Calibre en una biblioteca aparte, y más adelante quiero que otros proyectos también puedan usarla. También parece posible hacer una CLI para la biblioteca de Calibre.

    • Es un poco triste que incluso en un foro de hackers haya que dar este tipo de explicación. Me viene a la mente una frase que me gusta del discurso de graduación de John Carmack:
      “En muchos ámbitos, la idea de no reinventar la rueda se acepta casi como sentido común. Pero de vez en cuando quisiera recomendar que igual lo intenten. Solo el proceso los vuelve mejores, y al final también salen mejores ruedas de ahí. Porque la gente simplemente lo intenta”.
      https://www.youtube.com/watch?v=YOZnqjHkULc
    • Liderar una reescritura de la UI desde cero también parece una tarea mucho más grande.
      Calibre es bastante doloroso de usar aun conociendo sus funciones, lo que hace difícil recomendárselo tanto a los abuelos como a gente con conocimientos técnicos.
    • La frase “por ahora es un proyecto de hobby” deja un poco de vibra del Linus Torvalds inicial: “solo es un hobby, no será grande ni profesional como gnu” [0].
      Aun así, espero que al proyecto le vaya bien.
      [0] https://www.cs.cmu.edu/~awb/linux.history.html
    • Calibre es fuerte en funciones de gestión de ebooks, pero nunca me satisfizo desde la experiencia de uso ni desde el lado de desarrollo. Nunca fue diseñado como una biblioteca alojada accesible desde la web, y personalmente la experiencia me parece muy mala.
      Si hubiera un competidor sólido, más abierto y moderno, pensado como biblioteca alojada, creo que me cambiaría de inmediato.
    • Bastaría con decir: “no se ajusta a mis necesidades y tendría que reescribir por completo el backend”. Si la dirección de la app que uno quiere es tan distinta de lo que existe actualmente, no creo que haga falta justificar tanto esa decisión.
  • A veces pienso que, si Calibre simplemente se viera mejor, la gente se daría cuenta de lo increíble que es. Sinceramente no es tan malo y a mí en lo personal me gusta, pero parece que la gente no logra pasar más allá de la apariencia.

    • Calibre es tremendamente lento e inestable. Cargar una biblioteca grande, por ejemplo de unos 100 GB, me tomó literalmente semanas y tuve que agregarla en tandas pequeñas.
      Se caía constantemente y el proceso era tan lento que lo pasé a una máquina aparte. Probé buscar desde la interfaz web y también era muy lenta.
      Ni hablar de la UI poco intuitiva. Para algo que pretende funcionar como biblioteca, ni siquiera se acerca a una lista real de autores al estilo de una biblioteca, ordenada alfabéticamente.
    • El problema que tengo es que Calibre se desmorona por completo con más de 20 mil ebooks.
      Entiendo que la mayoría tendrá unos 10 a 300 libros, pero intenté usar Calibre con algunas bibliotecas grandes y realmente no aguantó.
      La decisión de insistir solo con SQLite tampoco ayuda. Abrí un PR alrededor de 2016, pero el mantenedor se opuso con bastante fuerza a cambiar la capa de base de datos o hacerla reemplazable.
    • Si no se habla solo de estética sino de toda la UI/UX, estoy de acuerdo. Calibre es una app muy potente y con muchas funciones, pero su UI poco intuitiva y tosca la frena.
    • No es que no sea tan malo; en realidad sí es malo. Si estás administrando algo como una biblioteca pública y quieres controlar cada detalle, puede estar bien, pero si solo quieres guardar una biblioteca personal, cada vez hay demasiados “¿cómo hago X?”.
      Además, si en unos segundos puedo levantar un contenedor de calibre-web y obtener una UI limpia y OPDS, no sé por qué tendría que aguantar esa “estética”.
    • Como lector ligero de ebooks, estoy muy de acuerdo. Si Calibre hubiera tenido un equipo de diseñadores, creo que sería mucho más popular y usado.
      No es intuitivo y la UI/UX es bastante mala. Sufre tal cual la maldición que suelen padecer las aplicaciones potentes.
      Aun así, hoy voy a volver a probarlo para ver si puedo acostumbrarme. Especialmente para usuarios avanzados, es realmente excelente para ser un producto gratuito.
  • Buen proyecto. Me gustan las funciones de Calibre, pero su UI también me resulta bastante frustrante, así que empecé a diseñar una interfaz que se siente como una mezcla de iTunes antes de Apple Music e iBooks
    Todavía solo hice una pantalla, pero se puede ver aquí: https://www.figma.com/file/m8qaYbPSnxiFPDPbuYtz2w/Calibre-re...
    La pregunta clave era cómo mostrar las funciones principales de Calibre con una UI que se sintiera nativa de macOS
    Si no apunto a multiplataforma, quizá podría intentar convertirlo en una app SwiftUI con un backend en Rust cuando tenga tiempo
    Mantenerlo al día con el desarrollo de Calibre podría ser difícil, pero parece un proyecto de hobby divertido

  • Ayer me di cuenta de que, en Ubuntu 22.04, después de conectar un lector Kobo, basta con copiar los epub al directorio root/ del punto de montaje /media/oakhaven/koboreader. Entonces aparecen en la lista de libros del dispositivo
    Por alguna razón pensaba que cargar libros en un Kobo era complicado, y solo usaba Calibre para pasar libros de mi laptop al Kobo
    Sé que Calibre tiene muchas otras funciones, pero no me gustaba la interfaz, y me alegra que ahora ya no tenga que usar Calibre ni apps similares

    • Esa fue una de las razones por las que compré un Kobo en lugar de un Kindle hace unos años. Lo conectas y se monta como un dispositivo de almacenamiento masivo USB normal, y copias los archivos
      No hace falta ningún formato especial, y formatos estándar como ePub funcionan bien
      Por eso me preguntaba cómo Kindle seguía siendo tan popular. No sé si es efecto de ser el primero, pero un e-reader que no puede leer ePub y PDF se siente como un reproductor de audio que no puede reproducir MP3 y AAC
    • Recomiendo pasar los epub por kepubify [1] una vez antes de transferirlos al e-reader
      [1]: https://pgaskin.net/kepubify/
    • Lo configuré hace mucho, pero también se puede sincronizar por ssh, así que puedes sincronizar directorios de forma recursiva por Wi-Fi
      Creo que primero cargaba los libros por USB y luego sincronizaba las noticias diarias y libros adicionales con rsync. Parte del contenido se generaba automáticamente y terminaba en el directorio, como recolecciones automáticas o suscripciones por correo, y otras cosas las agregaba manualmente, como copiar libros nuevos después de comprarlos
      En realidad no es un problema muy complejo, pero Calibre hace mucho más que copiar libros a una estructura específica de carpetas
    • Me sorprendió bastante cuando supe que eso se podía hacer. Pensaba que Calibre hacía algo especial. Por eso Citadel tiene una función de "copiar a carpeta". Puedes copiar ebooks a un disco externo
      No sé si de verdad es más fácil que simplemente abrir la carpeta y copiar/pegar, pero Citadel actualiza el archivo de metadatos que usa Calibre al detectar qué libros hay en el dispositivo, para no tener que leer todos los archivos de la carpeta
    • ¿Kobo requiere una cuenta para usarlo? ¿O simplemente puedes comprarlo, poner epub en ese directorio y leerlos de inmediato?
  • Se ve bien. Justo la semana pasada intenté volver a usar Calibre y caí en el agujero negro que es esa UI. Pensé en donar trabajo de UI/UX, pero parecía que sería un proyecto de años
    En cambio, quizá podría ayudar con la UI/UX de este proyecto

    • Por lo que he visto durante varios años, me da la impresión de que el proyecto Calibre en general no recibe bien las mejoras. Kovid Goyal ya tiene lo que quiere, y si quieres algo distinto parece que tendrías que hacer un fork y mantenerlo tú mismo
      Ha hecho un trabajo increíble, pero es una de esas personas con gustos muy fuertes, y puede volverse rápida, arbitraria y extrañamente hostil con ciertas cosas, incluso si alguien más se ofrece a hacer el trabajo
    • No uso Calibre el tiempo suficiente como para que su UI me moleste. Lo uso como máximo unos 10 minutos cada varios meses. Importo epub, actualizo metadatos y los envío al dispositivo
      Leo libros durante unos meses y luego repito el proceso de importación
    • Para aportar otra perspectiva, yo nunca tuve problemas con la UI de Calibre y normalmente termino lo que quiero hacer de forma rápida y eficiente
      Honestamente me da curiosidad: ¿hay algún ejemplo de una app nativa para smartphone que sea tan rica en funciones como Calibre y las ofrezca de una manera mucho mejor y más fácil?
  • Me gusta que hayan lanzado de verdad un proyecto personal. También se ve limpio. Y calibre CLI seguramente será bien recibido. No me gusta tener que hacer clic pasando por cinco niveles de menús.
    Si las áreas de “lector” y “editor” no son objetivos explícitos, me da curiosidad qué es lo que Citadel realmente hace por el usuario. ¿Es principalmente un portal para ver, ordenar y hacer clic en libros? ¿Hay un roadmap con más funciones en mente?

    • Mi uso principal de Calibre era reunir epubs en un solo lugar y sincronizarlos de vez en cuando con un lector de ebooks. Al agregar libros, hay que traer metadatos como el título o el ISBN.
      Citadel admite, y ya admite en parte, la edición de metadatos como título del libro, autor y, más adelante, etiquetas y columnas personalizadas. Eso está claro. La sincronización con dispositivos también llegará con el tiempo, y también se agregará la descarga de metadatos desde fuentes en línea.
      Eso sí, no hay planes de editar el contenido de los libros ni de incluir un lector de ebooks integrado. Ya hay muchas apps y dispositivos de ebooks excelentes, y no creo que la edición de epub se use tanto como la gestión de colecciones.
      No hay roadmap, pero siempre estoy abierto a feedback e ideas.
      Además, probablemente también se incluyan funciones como conversión de formatos y eliminación de DRM. Lo ideal sería implementarlas como crates o plugins para facilitar la extensión.
    • Parece que Calibre CLI se refiere a gestionar una colección de libros, pero si solo quieres convertir libros, Calibre ya tiene una CLI llamada ebook-convert. Soporta varios formatos de archivo, como epub, pdf, azw3, mobi, etc.
      Ejemplo:
      ebook-convert file.epub file.azw3
  • Se ve realmente genial y pienso probarlo. Irónicamente, hace poco hice una app de escritorio para gestionar audiolibros con el mismo stack, es decir, Rust + Tauri + Svelte.
    Por si a alguien le interesa, aprovecho para promocionarla: https://gitlab.com/fonner/audiobook-locker#audiobook-locker

    • Qué bueno. Yo también jugué un poco con Tauri en algunos proyectos anteriores.
      Me da curiosidad por qué elegiste Svelte y Tauri para este proyecto. ¿Ya los conocías?
    • Voy a revisar este proyecto para inspirarme.
  • Es un detalle aparte, pero esta forma de ejecutarlo me alegró el día.
    bun dev -- -- -- -- --server ...

    • Ahora me dio curiosidad qué está pasando ahí.
  • Interesante. Yo también empecé a trabajar durante un tiempo en un proyecto parecido con una idea similar, pero elegí SvelteKit y el navegador en vez de una app nativa.
    https://github.com/project-kiosk/kiosk
    No he logrado mantener la motivación el tiempo suficiente como para terminarlo.

    • Se ve bien. Ojalá sigas trabajando en él; me gustaría probarlo.
  • Un breve artículo sobre Citadel: https://denhoff.ca/posts/replacing-calibre