I really appreciate all the work the dev puts into it, but it’s a slow app that just isn’t very usable. It’s not just that it’s ugly, it’s that it’s poorly designed. And yet, nothing else even comes close to doing what it does.
I even wrote out a spec for a similar app that was built using a more modern framework/usable interface, that some friends and I could potentially build, but the task was so monumental and the return on investment (and I’m not even talking about money) seemed so small, we shelved it.
That said, I would be remiss if I didn’t mention that DeDRM is the reason a lot of us use the app — I know it’s a key for me — and that does have an excellent CLI tool.
There are also some good iOS apps that work with the book server, for accessing lots of ebooks. Even then tho, those apps are labors of love where the core audience is both critical and shockingly cheap (I say shockingly b/c many pay thousands on ebooks and ereaders a year — it’s an enthusiast market). One look at the MobileReads forums (a fantastic resource) for any specific app, and I kind of understand why we don’t have a “good” Calibre that is OSS for paid for that matter.
I think what's going on here is that Calibre is implemented for free in spare time in Python with an eye toward being accessible to all audiences and feature complete. So, it's neither super fast, nor super pretty, nor super elegant. But everyone can build up a library of ebooks without much effort and then browse around and read them, highlight them, and sort them in various ways.
You're welcome to submit patches that hide everything behind a hamburger menu and make the scrollbars vanish and crap like that.
As I said, I’m super grateful Calibre exists and I think software is better for it existing. I also fully understand why there haven’t been other attempts to do what Calibre does — because it’s a shitload of work and the userbase is niche.
Plenty of people don't have good design taste but can still be useful software, so I hope it doesn't deter them.
Although there may be a correlation between poor interface design being reflected in the backend. From naming schemes, to modelling the data, to managing complexity, saying no to certain features, etc are all things that cross over into the design world.
My solution was to use a different Mac app to “force” Calibre to ignore the systemwide setting and use its light mode instead.
I do think it’s a shame the codebase is such that seems to prevent meaningful contributions/collaboration that might improve things — but Kovid has done something amazing, make no mistake.
And more to the point — we all complain about Calibre, yet no other app exists that even does a fraction of what it does.
"I WANT it to be better."
It's sad that the response to that is often "Stop bitching or stop using it", "Make it yourself", or "If you don't like it why don't you go somewhere else?" (and it's often from other users who try to speak on behalf on the developers.)
The only reason we are here talking about it is because its free software. Its not even about price, its about how Calibre evolved thanks to a community that grew around it. Maybe someone could start a proprietary ebook library program, charge for it, and make a living that way. But it would get orders of magnitude less usage and have done that much less good for the whole of mankind as a result. And the work of one person, or even a small team, is unlikely to accomplish all the features Calibre has because few people will recognize the collective needs of all book readers the way an open bug tracker and merge requests can.
The problem is that, even if true, this chestnut doesn't say anything about whether the criticism is justified or whether the degree and correctness of criticism is commensurate what one would expect of a quality product given the language/software's usage.
Nobody cares about the myriads of ugly, bad designed apps that are not useful.
Well it was Python. The number of C extensions means they can't go back without many hours of work and hundreds of thousands (or millions) of LOC cleaned and tested.
For instance, I recall a LZMA decompression C/Python script in the Calibre source. Python 3.3 added LZMA in the stdlib, but they're stuck maintaining their handrolled one.
I'm missing details. I learned quite a bit from that codebase awhile back.
I remember trying Calibre years ago and figure out how to use it was enough trouble that I just shelved it. Your post reads as though UX doesn't matter much, but that's far from reality.
Perhaps it just clicked with me easier than with others, but other than the "bare bones" interface, I think it's a reasonably intuitive program.
Removes the top bar and shows the favicon as the application icon. You can create a shortcut/.desktop and it'll act pretty much like an electron app would.
/usr/bin/calibre-server --daemonize --enable-auth --url-prefix=/calibre --port 8000 --enable-local-write --log /home/user/calibre_log /home/user/user_library
But it certainly has some performance and UX issues. For me personally, I'd prefer to focus on getting the UX right, then I wouldn't care so much about the performance
For me Thunderbird is one of those - there's no better open source mail client to be found and you use it because it works (most of the time).
The problem with this is that creating GUIs is very complicated as there's just too many different frameworks and specific stuff to know to achieve this. In my opinion interface design on computers is kind of broken just because there's no standard that works for every system. I don't want to implement things 4 or 5 times to get the same result.
If I could I would contribute to those apps because I have good ideas for UX/UI but I'm nowhere near learning all the stuff I need to know to do so I'm afraid. Maybe when I'm really old and retire it's still as crappy as it is and I'll find the time.
In the meanwhile at least we have tools like Calibre and Thunderbird and I'm very thankful for the work the Dev's put into them! :)
Let me guess, some Electron monstrosity that looks like a web site but runs on a desktop?
My initial design doc was going to be Swift-based and in my “pie-in-the-sky” goal, it would be a native macOS app.
But part of the value of Calibre is that it is cross-platform and so yes, Electron was a strong option because for cross-platform development, I definitely don’t think it is worse than QT or Java. There are a lot of bad Electron applications, but apps like Visual Studio Code* prove that as with anything, you can make a really fantastic experience if you put the right work into it.
But it doesn’t matter anyway. The amount of work that would be required would be monumental and the payoff wouldn’t be worth it. Which is why I have tremendous respect for the Calibre developer. I don’t agree with his design decisions and I wish the app was more usable, but I fully acknowledge that nothing else exists and that no one else is willing to do the work to make a better version.
* Disclosure: I work at Microsoft but not on VS Code. I have huge respect for the VS Code and the Electron team, however.
If you want something pretty but basic, you can use bookworm. It's also an electron app, so you can try how it can perform.
> But it's cool, cause electron is slow, amirite guise!!?!?!?!
Sorry, but electron is literally slow and bloated. In case of Atom (the flagship app using Electron), using 600MB of RAM at the startup without the ability to load large files, or being not on par with BBEdit feature-wise, which uses 60MB at the start, is blatant waste of resources.
My Eclipse installation is using 600 MB of RAM (like Atom) out of the box with quadruple amount of features and orders of magnitude higher speed.
> Le me guess, you're the type of person that doesn't understand ROI?
I'd rather write an Atom-like application with Python, Java or similar and have much better ROI while not requiring small portable servers from my users to just edit some little scripts and push them to git(hub/lab).
Using Electron is a wrong type of investment for future of your application due to its power and space requirements, but it's cool, cause hardware is cheap, amirite guise!!?!?!?!
And yes, electron sucks and it ruined desktop software because a bunch of business brats have to cut costs on software craftsmanship. This "modern UI" crap is a lie. Software using native widgets (or even JVM) is fine, but hey take it to extremes
Electron isn’t perfect and plenty of people who build apps with it make bad design and architectural decisions. But the same could be said for any other cross-platform framework or language. There are trade-offs, period.
It's all trade-offs.
For me it's definitely not a problem that I'm missing software X which is only available as an Electron app. The Electron apps I use are required to interact with some piece of hardware (syncing, etc) and have completely custom UIs, which work most of the time, but have super-weird limitations or UX bugs, because you can't reinvent decades of UX on all platforms without forgetting or messing up several things.
And then there's MS Teams, which proves either that Microsoft can't write working software, or that Electron isn't able to offer a way of building working software. Probably both.
Has Ph.D in quantum computing. Works on ebooks.
He really is a hero.
That's an absolutely terrible name.
Edit: I was referring to the alert() upon loading the site:
W A R N I N G! Your browser is not supported by this site.
I cannot guarantee that things will work as they should.
Consider downloading either Mozilla >=1.4 or Internet Explorer >= 6
this.correctBrowser = (this.nav || this.ie);
this.correctVersion = (this.nav5up || this.ie5up);
this.correctOS = (this.linux || this.win32);
this.supported = (this.correctBrowser && this.correctVersion && this.correctOS);
A case of platform detection, instead of feature detection, and an illustration of how platform detection fails in future-proofing your code.
correctOS = (this.linux || this.win32)
Lot of simplicity just works. ( lot of work would have gone in 1990's to get this site up and running "
Something that I would like to see in a future version of Calibre (or a fork) is news-download recipes changed to a plugin system that can be updated separately of Calibre itself. It is not ideal that if a news recipe becomes obsolete due to changes on the respective news website, one has to upgrade Calibre to a new version. For users whose distros package only a certain version of Calibre, it would be nice to continue running that distro-supported version but simply be able to update the news recipes from within the Calibre settings.
Frankly, the software is just fine for most needs, and the person in charge is still active, so the desire to replace it just hasn't materialized.
EDIT: Looks like somebody actually took the initiative to port it to Python 3.
Needless to say I gave up.
An article title such as "Popular open source software Calibre has a codebase that isn't just bad, it's outright dangerous" would definitely make me click.
If you feel strongly, please do this. It adds value. The creator might really benefit from it.
Sure you might benefit, but there are much more constructive, kinder ways to do it. Even if he and his code aren't great, Goyal's done a lot of free public service here. Let's not be dicks.
If you want to learn about the codebase, here it is https://github.com/kovidgoyal/calibre
They should be praised for their contributions, not torn down. That would be a dick move.
Forgive me, I have the flu and I'm grumpy today.
However, I would gladly read a post that reviews Calibre codebase in a helpful, friendly way.
There is an awful lot of self-deception packed into this paragraph.
> We would actually love to read that.
That part is probably true for many.
Shouldn't be all that surprising. Things are harder than people think, and only a few people are willing to stake actual skin in the game instead of just complain.
Also, Calibre is already a niche tool. All of my friends/family have a Kindle, they all use Amazon's default send-the-kindle feature, and none of them probably even know how to get the physical ebook file out of the Amazon system nor care.
And ebook file management just isn't a very sexy problem to solve beyond a proof of concept weekendware effort. Surely most people aren't spending much time in Calibre anyways. I know I just use it intermittently to load the next 10 books onto my ereader. It's not a part of my life I'm very passionate about changing.
For reference, here's the ongoing python 3 port pull request: https://github.com/kovidgoyal/calibre/pull/870
It opens with a list of books, you double click on the book you want to read and it opens that book in a new window.
What could be simpler than that?
(mind, I find Calibre pretty usable)
I haven't used the news feature in almost a decade, but in those days, you could clone a news site's recipe and modify it - no need to upgrade Calibre.
Other people have different use-cases than I do, and Calibre satisfies us all. Excellent, amazing, wonderful work, Mr. Goyal!
UPDATE: just found out there is now a checkbox in the viewer preferences: "Keep a copy of annotations/bookmarks in the e-book file, for easy sharing". If unchecked, the viewed files are kept intact. Nice!
I also checked that the destructive edit happens upon viewer close, not open or page turn.
Also the version 4 ebook viewer is step back from the old one, as it stands now. It is slower, more resource hungry and buggier. The only arguable improvement is it now uses a 'flat' theme that doesn't look dated. I'm even considering reverting back to Calibre 3 because of the ebook viewer randomly freezing on large epubs with equations and so on.
What I really hate about it is the directory structure, it forces upon you. I have my books sorted in topical directories and Calibre sorts them by author. That sucks. If this single issue would be addressed, I couldn't be happier with Calibre, especially, since Kovid is a very helpful person.
You could also consider libraries by topic.
However, I am mostly on Windows, these days, so no chance for filesystem tags, even worse now, that I have all my eBooks on a home server.
I run a headless version of Calibre in the cloud, so I can read in the browser and do other stuff.
Yes, the UI is a bit quirky, but who cares? I spend my time actually reading the books, and for managing my library and converting between formats Calibre is ace.
That useful software like this exists makes me very happy.
Here's what's under calibre/bin
It's funny, if they released a version of Calibre that had only the bins you mentioned and omitted the GUI entirely, it would probably be held in much higher esteem among the HN community.
Also, systemd is not one binary. It's like 50 different binaries.
Years ago, I enjoyed stripping my own purchased Kindle books to ePub with Calibre, so I could read them on my non-Kindle device, but it wasn't so easy as the patches became harder to find, and Amazon would constantly change their DRM.
It's still a bit of a pain, you may need to intentionally downgrade your version of the Amazon for Kindle app to an older version where the tools can break the encryption. But it can be done.
Works on Ubuntu too, which is really a PITA otherwise.
1. unavailable in my country at a reasonable price
2. Something I’d rather read while travelling.
And often, Kindle e-books are the only ones that are priced by region. I try to buy from DRM free stores wherever possible, but it isn’t always doable.
Physical books are much less convenient in that I can't carry 50 of them around in my pocket like I can with books on my phone.
There's even a school of thought that the existence of things like Patreon for funding open source development is actively harmful insofar as it can create the illusion that it's a viable funding mechanism for sustainable open source development when it really isn't.
This article makes a good argument to the same:
The author has zero care for security and the product had plenty of vulnerabilities. This harms users and also other people.
Furthermore, poor behaviors attracts blame on the whole open source community.
By what chain of reasoning do you derive the existence of the moral obligation to users who have paid exactly nothing let alone the obligation to consider what the broader world thinks of open source developers. It's pretty clear Kovid is a bit of an asshole and sometimes outspokenly incorrect but what right do we have to demand different? Usually such an obligation is transactional. Even if unspoken and devoid of monetary context there is some broader context SOMETHING of value is gained or lost.
So far as I can see the only thing we give Kovid is attention which is cheap and he gives us work which is dear. If you don't agree that the present transaction of putting up with the existence of opinionated posts which you don't have to read for a useful piece of software you don't actually have to use it.
It would even be useful for you to expand on why you think its insecure because that may inform users who can then see to their own interests better for having the benefit of your counsel but don't bore us with talk of his moral obligation unless you can't substantiate such.
The spoiler alert is that you cannot because you have confused the right to control the mores of a particular community with the right to impose those on non-members.
I once made the mistake of accepting donations for a forum I run and learned how people will expect the world from you, like 1:1 customer support whenever they need it, just because they once gave me $5.
Eventually all the "this is outrageous, I am a paying customer!" made me refund everyone and I never accepted donations again.
But if you really need to see transactions everywhere, here's one:
When I give software away for free (which I do) or food (which I do) people give me something in exchange: their trust.
I also give my trust to other software developers.
Not caring of security is a breach of such trust. Same as giving someone some spoiled food.
> Something answering posts from fools like you over the years should have taught me a long time ago.
And submitter is correct - he does this often. I recall a security bug that he refused to fix as fixing it would break some convenient feature. That one got really heated, and only when distributions declared they will stop carrying calibre in their package management system did he cave in and fix it.
Nevertheless, I don't see these as obvious reasons not to support him in Patreon.
Did you need Calibre in the first place? If so, what did you end up using instead?
Here's Kovid responding to reports of security vulnerabilities: https://bugs.launchpad.net/calibre/+bug/885027
You use open source software that is made by one guy and offered to the world for free, you kind of have to deal with the possibility that that guy has better things to do than fuss over every bug report.
Also, I think a vulnerability that allows unprivileged users to gain root on a system on which Calibre is installed is worth fussing over.
Not quite the same, I'm currently using calibre with a library on a remote server (albeit samba share over VPN) and it doesn't download the books to my local device, unless i choose to save them from my library to it.
I run Calibre with a network share that sits on my home NAS since years w/o issues.
A corrupted database in Calibre is a non issue if all you use it for is to move books between your e-reader devices and the library. You just recreate it.
P.S.: Just for example -- the other day my MacBook's SSD filled up as Adobe InDesign was mid write on a huge document. It crashed and the file was corrupted and not recoverable.
While (mid write) 'not enough space' is not the same as 'network mount went missing' or 'SSD kicked the bucket' it's close enough. And this is commercial software that has been around for 25 years.
Best of all would be in Calibre's library handling weren't so finicky, but in the absence of that, I use Calibre with a remote share and I'm just very careful about library backups, how long I leave it running, and am patient with the slowness.
I run Calibre with the library mounted from a NAS. Works fine for my ~2000 book collection. Not as speedy as local SSD, but it is ok.
> A single charge lasts up to six (6) weeks, based on a half hour of reading per day with wireless off and the light setting at 13. 
We were still pretty pissed at the blatant false advertising (a hardcore book reader reads for only a half hour a day!?!), but moving forward, she keeps the device in airplane mode 95% of the time, only turning it off to download whatever new book she just bought. It increased to at least 2-3 weeks after that, instead of a single week.
Comparing new WiFi model to new 3G model, out of airplane mode, the 3G drains about 2x to 3x faster than WiFi model.
You can keep the display of the kindle on for hours at a time with minimal drain
Of course, modern e-readers have a backlight. Though you can never fully turn it off, at least on my first-gen Paperwhite, which is unfortunate.
As I said, functionally, it is marvellous. But using it interactively is painful.
The Kobo integrates Pocket natively, so it works seamlessly. It's one of the reasons I bought a Kobo. Native Overdrive integration was a huge plus, too.
Once that's done you get a "My Articles" option in the hamburger menu, and that's your Pocket content.
I then go to a cafe next door and read them. They don't look like an ebook on a Kindle, more like a Kindle magazine. I adore that feature.
> The server has gained all the major capabilities of the main calibre interface. You can now edit metadata, convert books, and add/remove books and formats just as is possible with calibre itself.
It not only replaced Calibre's server for me, but also those few functionalities for which I've previously used Goodreads: organizing books into shelves, marking them as read, keeping track of how many books I read in a year.
If I were designing a "competitor," for a start:
- have a "File" menu that collects the commands relating to, you know, files: open, delete, rename, add, edit metadata (akin to the "Get Info" command in most other file menus), etc. Converting between file types could be in a submenu here.
- have an "Edit" menu that does Edit Menu Things (tm), most notably copy, cut, and paste
- let me drag and drop files to add them to the library.
- when I connect a Kindle or other device, show me a second pane with its content side-by-side with my library, rather than making me switch between "here is your library with flags to indicate what's on your device" and "here is your device with flags to indicate what's in your library."
- since I have two panes like the gods intended, let me copy files from my library to my device with drag and drop.
Calibre has all of that functionality, but it ignores three decades of UX convention to no particular benefit.
But, at the same time, I wonder how many HNers have even built a UI for a product with so many features. It's incredibly hard to find a good place for everything. And experimentation is expensive and time consuming.
from screenshots it looks like itunes+pdf reader to me
I get that tiny icons are in these days, but my icons are less than 40x40 pixels. Is that considered large? They look the same size as the icons in Firefox.
I think it helps avoid distraction and resource usage.
You have a search box with a big list box underneath and a preview frame on the side. I guess it's 'dated' in the sense it doesn't use a browser engine, layout everything with CSS, and have icons that match 201XQY's design fad.
At this point, I've got a pretty good sample of apps that were native and have now become Electron, and the Electron versions use 8-10x more memory across the board.
This is not ok. At this point, Outlook is the least resource-hungry productivity application that I need to use on a daily basis. Outlook!
I am curious.
These days, electron seems like a popular base for any desktop app! See a whole list here: https://electronjs.org/apps
But the sheer number of features & formats makes it worth the downsides. Indeed it's probably a good reminder to me as a developer, I can get too focused on making things snappy, efficient and pretty where perhaps I could have delivered twice the features if I took a little more of an 80/20 approach.
It's a shame there's no good hardware ereader to use it with. Every e-ink device is closed hardware, runs only closed software, and is trying to lock you into some DRM-rich ecosystem.
https://onyxboox.com/ - this is Android so I guess it's bit more hackable
None of this is a replacement to a properly open ebook reading device which does not exist.
On the software side, openinkpot existed at some point, but the project died.
I'd love a properly made piece of very low power open hardware running e.g. nuttx rather than boring Linux/Android.
I realize that you are griping about dedicated e-readers, but I want to make clear that its not strictly an Android problem. The more open Android devices work just fine as e-readers.
My flow is basically Calibre -> managed library -> android phone -> offline reading anywhere.
1. Calibre Companion
Even the 'special offers' dissipate after being in airplane mode for a certain length of time. I see no value in using any online feature—I've never taken my kindle off of airplane mode, and use Calibre to load all content.
Back when I first bought my kindle and made this decision, I was thinking the ads would be something like a "checkout these deals on Bose speakers!" interstitials every three page turns.
At least on Windows, I've been pretty underwhelmed with other ebook viewer apps I have tried. The various Kindle apps tend to blow for anything you don't obtain through Amazon, and often don't work great for syncing even Kindle ebooks. I still have a bunch of Microsoft Reader .lit files kicking around, and Calibre is one of the only things that will open them. The Calibre PDF reader is pretty terrible, but setting is up to pop open to Adobe or whatever instead doesn't take much ceremony.
One thing I can remember is that if you start a conversion or a download, often it silently starts in the background with apparently no indication anything is going on, unless you know to look for "Jobs" in the lower right corner. But I think I had a bunch more complaints which have apparently become invisible to me now.
It's like OpenSSL in that respect alone. Everyone wants something like it but it's too hard to build so they'll just use what they think is an inferior solution (when really it's superiority as a solution is that it exists).
Another comment here exemplifies this by reminiscing how they worked up a design draft for their Calibre competitor yet never even started it because it's just too hard and unrewarding.
I also think people are too hard on the author's personality quirks. Yes, they can be grating, but this quirky person is presumably the sort of person who can build it and continue shepherding and maintaining it for over a decade. None of us with our infinite patience and epic social skillz apparently are doing it.
How many here have even maintained a popular, complex product for any real duration? Or had to be your own product's customer service agent? It's not easy. I've seen people break down just fielding customer demands at Target during one summer job.
Imagine writing a useful (free!) tool and the best thing people can say is "well, the code is a nightmare and the UI is ugly". Shameful - remember that there's a real, hard-working person on the other side of your comments.
No idea how to browse my Kindle library, how to browse books on my Kindle, or do anything else. It's a totally non-intuitive GUI.
But, you can integrate Amazon's email-to-Kindle feature with Calibre  so new books are automatically added to your Calibre library as well.
After it prompts me for my Amazon password I sure expect those books to show up.
As I said, the UI/UX is very confusing.