1 pontos por GN⁺ 2024-01-15 | 1 comentários | Compartilhar no WhatsApp
  • Citadel é um app de gerenciamento de bibliotecas de ebooks que busca oferecer uma UX melhor e uma sensação de uso mais rápida, mantendo uma biblioteca de ebooks que o Calibre consiga ler
  • Os objetivos centrais são retrocompatibilidade com o Calibre, uma interface fácil de usar e bonita, e desempenho muito mais rápido que o Calibre, sem nunca parecer lento
  • No momento, é um software em estágio inicial, portanto bugs e falta de recursos são esperados; ele pode travar, não ter funcionalidades básicas ou danificar sua biblioteca de ebooks
  • O Citadel não é um leitor de ebooks nem um editor de conteúdo de ebooks; ele abre arquivos no app padrão e foca no gerenciamento de metadados, como títulos
  • Builds estáveis estão disponíveis em Releases, builds de desenvolvimento no GitHub Actions, e o desenvolvimento requer Bun e Rust

O que o Citadel pretende fazer

  • Citadel é um app para gerenciar bibliotecas de ebooks, tendo como premissa central a retrocompatibilidade com o Calibre
  • Bibliotecas modificadas pelo Citadel devem poder ser lidas pelo Calibre
  • O projeto tem três objetivos
    • Retrocompatibilidade com o Calibre: o Calibre deve conseguir ler bibliotecas editadas pelo Citadel
    • Boa UX: deve ser fácil de usar e ter boa aparência
    • Desempenho: deve parecer muito mais rápido que o Calibre e jamais ser mais lento

O que ele não faz

  • O Citadel não é um leitor de ebooks
    • Já existem bons apps de leitura de ebooks, e o Citadel abre os arquivos no app padrão do usuário
  • O Citadel não é um editor de conteúdo de ebooks
    • Se a necessidade for editar o conteúdo do corpo do ebook, e não metadados como o título, ele não é um substituto
  • Ele não busca 100% de paridade de recursos com o Calibre
    • Isso se aplica principalmente à área de plugins
    • É possível que alguns recursos avançados do Calibre não sejam implementados

Estado atual e download

  • O Citadel está em uma fase de desenvolvimento muito inicial
    • Pode travar
    • Pode não ter funcionalidades básicas
    • Pode danificar sua biblioteca de ebooks
  • Se você usar o Citadel com uma biblioteca do Calibre, é necessário fazer backups regulares
  • Builds semiestáveis podem ser obtidas em Releases
  • Builds de desenvolvimento podem ser obtidas em GitHub Actions
  • A orientação é relatar problemas ou travamentos encontrados ao usar qualquer versão

Observações sobre instalação no macOS

  • As builds para macOS ainda não são assinadas
  • Ao abrir Citadel.app diretamente, será exibido um aviso dizendo que o arquivo está “damaged”
  • Remover o atributo Quarantine do arquivo resolve o problema

Desenvolvimento e build

  • Os pré-requisitos para desenvolvimento são instalar Bun e Rust
  • Instalação de pacotes:
    bun install
    
  • Executar em modo de desenvolvimento:
    bun run dev
    
    # or just bun dev
    
  • Os comandos de lint e formatação são os seguintes
    • Formatar todo o código: bun format
    • Verificar formatação de todo o código: bun format:check
    • Rodar lint em todo o código: bun lint
    • Formatar backend: bun format:backend
    • Rodar lint no backend: bun lint:backend
    • Formatar frontend: bun format:web
    • Rodar lint no frontend: bun lint:web
  • É possível executar uma prévia do app sem o backend
    • Erros serão exibidos porque ele assume que o backend em Rust existe, embora não esteja presente
    bun dev:app
    
  • A build de produção é gerada com os comandos abaixo, após atender aos pré-requisitos de desenvolvimento
    bun install
    bun run build
    

Atualizações e projetos relacionados

  • O Citadel pode verificar atualizações do app e instalá-las quando solicitado
  • A verificação automática de atualizações pode ser desativada em Auto updates: On/Off nas Settings
  • A instalação é sempre feita explicitamente, e o texto da UI é Install and restart
  • As configurações de mantenedores e os detalhes do workflow de releases estão em docs/updater-and-releases.md
  • O Citadel usa o Calibre como referência e foi inspirado pelo protótipo no Figma de redesign do Calibre

1 comentários

 
GN⁺ 2024-01-15
Opiniões no Hacker News
  • Pode surgir a pergunta: “Por que criar um novo app em vez de contribuir para projetos existentes como o Calibre Web?”. A resposta é: porque eu simplesmente quis fazer
    Por enquanto é um projeto de hobby, então estou mais interessado em me divertir criando software, mesmo que seja algo mais bruto, do que em expandir um projeto existente. O Citadel foi projetado para manter compatibilidade retroativa com o Calibre, então também dá para continuar usando o Calibre Web
    No backend, também separei o código que interage com o Calibre em uma biblioteca à parte, e mais adiante pretendo permitir que outros projetos a usem. Uma CLI para a biblioteca do Calibre também parece possível

    • É um pouco lamentável que seja preciso dar esse tipo de explicação até em um fórum de hackers. Isso me lembra uma frase de que gosto do discurso de formatura do John Carmack:
      “Em muitas áreas, a ideia de não reinventar a roda é aceita quase como senso comum. Mas, às vezes, eu recomendaria fazer isso mesmo assim. O simples processo já torna você melhor, e é assim que, no fim, surgem rodas melhores. Porque as pessoas simplesmente tentam.”
      https://www.youtube.com/watch?v=YOZnqjHkULc
    • Liderar uma reescrita da UI do zero também parece ser um trabalho muito maior
      O Calibre é bem sofrido de usar mesmo quando você conhece os recursos, o que torna difícil recomendá-lo tanto para avós quanto para pessoas com mais familiaridade técnica
    • A frase “por enquanto é um projeto de hobby” ainda traz um pouco da vibe inicial de Linus Torvalds: “é só um hobby, não vai ser grande e profissional como o gnu” [0]
      Ainda assim, espero que o projeto dê certo
      [0] https://www.cs.cmu.edu/~awb/linux.history.html
    • O Calibre é forte em termos de gerenciamento de ebooks, mas nunca me satisfez em experiência de uso nem do ponto de vista de desenvolvedor. Ele nunca foi projetado como uma biblioteca hospedada acessível pela web e, pessoalmente, minha experiência com ele é muito ruim
      Se houvesse um concorrente sólido, mais aberto e moderno, pensado como uma biblioteca hospedada, eu provavelmente migraria na hora
    • Bastaria dizer “não atende às minhas necessidades e eu teria que reescrever completamente o backend”. Quando a direção do app desejado é tão diferente do que existe hoje, acho que nem é preciso justificar esse tipo de escolha
  • Às vezes penso que, se o Calibre fosse apenas mais bonito, as pessoas perceberiam o quanto ele é incrível. Sinceramente, ele não é tão ruim assim, e eu pessoalmente gosto, mas parece que as pessoas não conseguem passar da aparência

    • O Calibre é extremamente lento e instável. Colocar uma biblioteca grande, por exemplo de 100 GB, levou literalmente semanas, e tive que adicionar os arquivos em pequenos lotes
      Ele travava o tempo todo, e o processo era tão lento que acabei movendo para uma máquina separada. Ao pesquisar pela interface web, ela também era muito lenta
      Isso sem falar da UI nada intuitiva. Para algo que deveria funcionar como uma biblioteca, ele fica muito aquém até de uma listagem de autores em ordem alfabética no estilo de uma biblioteca real
    • O problema que enfrento é que o Calibre desmorona completamente com mais de 20 mil ebooks
      Entendo que a maioria das pessoas provavelmente tenha algo como 10 a 300 livros, mas tentei usar algumas bibliotecas grandes no Calibre e ele realmente não aguentou
      A decisão de insistir apenas no SQLite também não ajuda. Abri um PR por volta de 2016, mas o mantenedor se opôs com bastante firmeza a mudar a camada de banco de dados ou torná-la substituível
    • Se você está falando não só de estética, mas de toda a UI/UX, concordo. O Calibre é um app muito poderoso e cheio de recursos, mas a UI pouco intuitiva e desajeitada atrapalha bastante
    • Não é que ele não seja ruim; ele é ruim de fato. Se você quer gerenciar algo como uma biblioteca pública e controlar todos os detalhes, talvez seja aceitável, mas, se a ideia é apenas guardar uma biblioteca pessoal, toda hora surge um “como faço X?”
      Além disso, em poucos segundos dá para subir um contêiner do calibre-web e obter uma UI limpa e OPDS; então não vejo por que alguém suportaria aquela “estética”
    • Como leitor casual de ebooks, concordo bastante. Se o Calibre tivesse uma equipe de designers, acho que seria muito mais popular e amplamente usado
      Ele não é intuitivo e a UI/UX é bem ruim. Sofre exatamente da maldição comum de aplicativos poderosos
      Ainda assim, vou testá-lo de novo hoje para ver se consigo me acostumar. Especialmente para usuários avançados, é realmente excelente para um produto gratuito
  • Bom projeto. Gosto dos recursos do Calibre, mas também fico bastante frustrado com a UI, então comecei a desenhar uma interface que parece uma mistura do iTunes pré-Apple Music com o iBooks
    Ainda só fiz uma tela, mas dá para ver aqui: https://www.figma.com/file/m8qaYbPSnxiFPDPbuYtz2w/Calibre-re...
    A pergunta central era como mostrar os principais recursos do Calibre em uma UI que pareça nativa do macOS
    Se eu não mirar em multiplataforma, talvez, quando tiver tempo, eu tente transformar isso em um app SwiftUI com backend em Rust
    Acompanhar e manter compatibilidade com o desenvolvimento do Calibre pode ser difícil, mas parece um projeto de hobby divertido

  • Percebi ontem que, no Ubuntu 22.04, depois de conectar o leitor Kobo, basta copiar os epubs diretamente para o diretório root/ no ponto de montagem /media/oakhaven/koboreader. Aí eles aparecem na lista de livros do dispositivo
    Por algum motivo eu achava que colocar livros no Kobo era complicado, e só usava o Calibre para transferir livros do notebook para o Kobo
    Sei que o Calibre tem muitos outros recursos, mas eu não gostava da interface, e agora é bom não precisar mais usar o Calibre nem apps parecidos

    • Esse foi um dos motivos pelos quais comprei um Kobo em vez de um Kindle alguns anos atrás. Ao conectar, ele é montado como um dispositivo USB de armazenamento em massa comum, e basta copiar os arquivos
      Não precisa de nenhum formato especial, e formatos padrão como ePub funcionam bem
      Por isso eu ficava me perguntando como o Kindle continuava tão popular. Talvez seja efeito de pioneirismo, mas um leitor de e-books que não lê ePub e PDF me parece um player de áudio que não toca MP3 e AAC
    • Recomendo passar o epub pelo kepubify [1] uma vez antes de transferi-lo para o leitor de e-books
      [1]: https://pgaskin.net/kepubify/
    • Faz tempo que configurei, mas também dá para sincronizar via ssh, então é possível sincronizar diretórios recursivamente sem fio
      Acho que eu colocava os livros primeiro via USB e sincronizava notícias diárias e livros adicionais com rsync. Parte do conteúdo era gerada automaticamente e ia para o diretório, como coleta automática ou assinaturas por e-mail, e outras coisas eu colocava manualmente, como copiar livros novos depois da compra
      Na verdade não é um problema muito complexo, mas o Calibre faz muito mais do que simplesmente copiar livros para uma estrutura específica de pastas
    • Fiquei bem surpreso quando descobri que isso era possível. Achei que o Calibre fazia alguma coisa especial. Por isso o Citadel tem uma função de "copiar para pasta". Você pode copiar e-books para um drive externo
      Não sei se é realmente mais fácil do que simplesmente abrir uma pasta e copiar/colar, mas o Citadel atualiza o arquivo de metadados usado pelo Calibre ao detectar quais livros estão no dispositivo, para não precisar ler todos os arquivos da pasta
    • O Kobo exige uma conta para usar? Ou dá para simplesmente comprar, colocar epubs nesse diretório e começar a ler imediatamente?
  • Parece bom. Ainda na semana passada tentei usar o Calibre de novo e caí no buraco negro que é aquela UI. Pensei em contribuir com trabalho de UI/UX, mas pareceu que seria um projeto de vários anos
    Talvez eu possa ajudar na UI/UX deste projeto em vez disso

    • Pelo que observei ao longo dos anos, fiquei com a impressão de que o projeto Calibre, em geral, não recebe melhorias de braços abertos. Kovid Goyal já tem o que quer, e, se você quiser outra coisa, parece que teria de fazer um fork e mantê-lo por conta própria
      Ele fez um trabalho incrível, mas é uma daquelas pessoas com opiniões muito fortes, e pode ficar rápida e arbitrariamente hostil de um jeito estranho em relação a certas coisas, mesmo que outra pessoa se ofereça para trabalhar nelas
    • Eu não uso o Calibre por tempo suficiente para a UI me incomodar. Uso no máximo uns 10 minutos a cada poucos meses. Importo epubs, atualizo metadados e envio para o dispositivo
      Leio livros por alguns meses e depois repito o processo de importação
    • Para dar outro ponto de vista, nunca tive problemas com a UI do Calibre e geralmente consigo fazer o que quero de forma rápida e eficiente
      Fiquei sinceramente curioso: existe algum exemplo de app nativo de smartphone que seja tão rico em recursos quanto o Calibre e os ofereça de uma forma muito melhor e mais fácil?
  • Gosto do fato de um projeto de hobby ter sido lançado de verdade. Também tem uma aparência limpa. E o calibre CLI com certeza deve ser bem-vindo. Odeio ter que clicar por cinco níveis de menus
    Se as áreas de "leitor" e "editor" não forem objetivos explícitos, fico curioso: o que o Citadel realmente faz pelo usuário? É principalmente um portal para ver, ordenar e clicar em livros? Há um roadmap com mais recursos em mente?

    • Meu principal uso do Calibre era reunir epubs em um só lugar e, ocasionalmente, sincronizá-los com um e-reader. Ao adicionar livros, é preciso buscar metadados como título e ISBN
      O Citadel oferece suporte — e já oferece parcialmente — à edição de metadados como título do livro, autor e, futuramente, tags e colunas personalizadas. Isso é certo. A sincronização com dispositivos também deve chegar com o tempo, e a capacidade de baixar metadados de fontes online também será adicionada
      No entanto, não há planos para editar o conteúdo dos livros nem incluir um leitor de e-books integrado. Já existem muitos apps e dispositivos excelentes para e-books, e não acho que edição de epub seja algo tão comum quanto o gerenciamento de coleções
      Não há roadmap, mas feedbacks e ideias são sempre bem-vindos
      Além disso, recursos como conversão de formatos e remoção de DRM provavelmente também devem entrar. Idealmente, gostaria de implementá-los como crates ou plugins para tornar a extensão mais fácil
    • Parece que Calibre CLI se refere ao gerenciamento de coleções de livros, mas, se você só quer converter livros, o Calibre já tem uma CLI chamada ebook-convert. Ela oferece suporte a vários formatos de arquivo, como epub, pdf, azw3, mobi etc.
      Exemplo:
      ebook-convert file.epub file.azw3
  • Parece muito legal e pretendo conferir. Ironicamente, recentemente criei um app desktop para gerenciamento de audiolivros com a mesma stack, ou seja, Rust + Tauri + Svelte
    Fazendo uma divulgação caso alguém tenha interesse: https://gitlab.com/fonner/audiobook-locker#audiobook-locker

    • Legal. Eu também já mexi um pouco com Tauri em alguns projetos no passado
      Fiquei curioso sobre por que você escolheu Svelte e Tauri para este projeto. Já estava familiarizado com eles?
    • Vou dar uma olhada neste projeto para me inspirar
  • Meio tangencial, mas essa forma de executar alegrou meu dia
    bun dev -- -- -- -- --server ...

    • Fiquei curioso para saber o que está acontecendo aí
  • Interessante. Eu também comecei a trabalhar por um tempo em um projeto parecido, com uma ideia semelhante, mas escolhi SvelteKit e o navegador em vez de um app nativo
    https://github.com/project-kiosk/kiosk
    Não estou conseguindo manter a motivação por tempo suficiente para terminar

    • Parece bom. Espero que você continue trabalhando nele; eu gostaria de experimentar
  • Um texto curto sobre o Citadel: https://denhoff.ca/posts/replacing-calibre