Frans de Jonge tells us about KOReader in this AGPLv3 interview
This interview with Frans de Jonge of KOReader continues our interview series, which highlights work by developers who choose GNU licenses. We hope you enjoy!
If you have an idea of a project that may be good to feature in an upcoming interview, please consider adding it to the LibrePlanet wiki page for possible interview candidates.
What inspired you to create KOReader?
Just to be clear, KOReader wasn't created by me, but by Hans-Werner (aka HW). I first started contributing to the project in 2014 when I decided to acquire a Kobo Aura H2O. I purchased the device because I was impressed by the display hardware. However, I found Kobo's stock software worse than I expected at displaying PDFs. But, by this time, I'd done my research and knew about KOReader, which I predicted, after some modifications, could function on Kobo devices. Consequently, my first contribution to the project was to make it work on the H2O.
Once I got it to work, I was quite pleased with how it handled PDFs, with its simple interface to crop out margins, for example. In most other programs at the time, you would instead have to manually zoom and drag. Also, it was very fast at loading pages (which is thanks to the MuPDF library.) Indeed, I was quite happy about the DjVu support. And long story short, thanks to the new functionality gained through KOReader, I didn't return my H2O device.
KOReader originally began in the days of the Kindle 2 and 3, mainly as an effort to make PDF display and modification better on those devices. Similar to Apple, Kindle's software has always been proprietary, and its hardware is designed to be difficult to repair and modify. This has only gotten worse over the years. For example, if you buy a Kindle today, you have very little hope of actually being able to customize it without resorting to "breaking in" through hardware modification, which certainly cannot be qualified as "easy" to do. That wasn't the case at the time for Kindle devices, so we were developing KOReader for that hardware with the hope that it would reach the largest possible audience.
How are people using it?
I think most people use the program as they would a more traditional PDF reader, simply because in many ways an e-book reader is more convenient than paper books and KOReader offers high-quality typography built on the shoulders of projects like FreeType, Harfbuzz, and FriBiDi. In books with a better layout, for example, you get nice footnotes at the bottom of the page. And, combined with CSS-based user-style tweaks, you have a lot of freedom to view e-books, even those made with sub-optimal markup practices, in a way that makes them visually palatable as well.
For me, besides enjoying the tinkering itself, the primary motivation has always been the ability to access PDF and DjVu facsimiles of older books, many of which are not easily available today in printed form. There are great riches to be found on various websites, most notable of which are DBNL, Gallica, and the Internet Archive. Since acquiring the Kobo device, I've also installed a few hundred DRM-free PDFs and EPUBs from Humble Bundle, many of which I've read or at least skimmed.
What features do you think really sets KOReader apart from similar software?
There are so many features that have been added over the years that I'd hardly know where to begin to answer such a question. My favorite is probably the in-page footnotes, which avoids the typical digital dance of tapping on links to go to another page or to open a popup. I'm also very fond of what I've dubbed multi-swipes: just a quick flick of the finger in a few directions suffices to do just about anything you want, without having to open any menus.
Why did you choose the AGPLv3 as KOReader's license?
HW, the original creator, started the program as a community project right from the very beginning and chose GPLv3 for that purpose. The fact that we're still going today, while HW has effectively retired from KOReader years ago, is proof he made a good choice. If KOReader had been proprietary, it may have been unnecessarily abandoned -- a fate that is all too common for similar projects.
I believe the project was switched from GPLv3 to AGPLv3 because, in 2013, it was split up into a document rendering base project that anyone could use to quickly build a basic document viewer as well as the KOReader UI frontend code. That base could be run on a server, and, with AGPLv3, it's clear that its use as a network service would also count as distribution, thus benefiting all those who use it.
How can users (technical or otherwise) help contribute to KOReader?
KOReader is translated into many languages, but not all are equally active or complete. Assisting with translations is a low-barrier means for anybody to contribute. Besides that, we provide nightly builds, so if you're not afraid of things sometimes breaking, then you can help by testing the program and reporting bugs. Last but not least, simply being active on the forum to help other users is greatly appreciated.
What's the next big thing for KOReader?
It's hard to predict what will capture a contributor's interest -- even my own -- and such interest very much guides the direction of KOReader development. The most recent big improvement is partial re-rendering. Traditionally, when you open a book, the book is rendered in its entirety. That's nice, because, once loaded, it enables extremely fast, responsive page turns. But the downside is that it takes one to five seconds to open a typical book. Unfortunately, making a change to font display settings therefore also takes those same few seconds. This process can't be changed without an extremely involved rewrite. Second openings are faster because much of the data can be cached, but the first load of a book or a new font is always a little slow right now.
What turns out to be achievable, however, is to more selectively re-render a chapter after the DOM has already been parsed. This would make changes, such as a new font, appear to be almost instantaneous, depending on the length of a given chapter. A first version of this has recently debuted, and there are doubtless many further improvements expected in the near future.
Another recently added feature is external keyboard support. Right now, however, this only works on select devices like a Kobo Libra 2, mainly due to kernel settings. I expect various other improvements to keyboard support in the future as well.
Overall, we have a lot of fun developing KOReader, and are glad to be doing it as free software.