Software

a woman sitting at a table reading at her smartphone

Thorium Reader

Thorium Reader is the EPUB reader of choice for Windows 10, MacOS and Linux.

This is the only “reader” developed by EDRLab, and there is no mobile version of this application.

More about Thorium Reader

EDRLab also leads the development of the Readium Desktop project. And Thorium Reader is an application based on this toolkit: see below about Readium.

The Readium project

The main goal of this project is to create a modular open-source codebase, with a clean software architecture and documentation, which allows the easy development of reading applications on three types of platforms: mobile, desktop and Web. Different implementations can therefore share the same architecture, model, interfaces; a developer should therefore be able to switch from one implementation to another without feeling lost.

These toolkits enable the processing and display of multiple kinds of publication, including EPUB 2 and EPUB 3, PDF, audiobooks and Divina visual narratives (comics / manga / bandes dessinées).

The different software modules composing these toolkits are intended to be, insofar as possible, independent of each other and can be used outside of the overall architecture.  At the same time, these modules are designed so that they CAN be easily and seamlessly combined to produce complete reading systems.

For rendering content, these toolkits leverage the capabilities of modern browser engines and supplement those capabilities with modules (polyfills, if you will) that provide additional functionalities.

A specific aspect of the mobile toolkits is that instead of a “platform-neutral” C++ core, the codebase is implemented in native code, i.e. Swift for the iOS target and Kotlin for the Android target. This enables the use of the most powerful aspects of each native environment and ends up with a small and efficient codebase. The Swift and Kotlin toolkits can nevertheless be integrated in applications based on cross-platform frameworks like Flutter and ReactNative.

On the other side, desktop applications (on Windows, OSX and Linux) are approached using cross-platform technologies, i.e. Electron.js, node.js, Typescript.

The Readium project is therefore split in different parts:

Readium Architecture, a software architecture common to the different implementations.

More about the Readium Architecture

Readium Mobile, a toolkit for iOS and Android reading apps, with Readium LCP support.

More about Readium Mobile

Readium Desktop, a toolkit for Windows, MacOS and Linux reading apps, with Readium LCP support.

More about Readium Desktop

Readium Web, a toolkit for Web apps.

More about Readium Web

Readium CSS, a reading system stylesheet common to Readium Mobile, Desktop and Web.

More about Readium CSS

Readium LCP, a modern protection technology for ebooks.

More about Readium LCP

Project documentation

The project documentation is active on the Readium Architecture Github repository, as Github issues and Slack exchanges.

Please also look at the Readium Architecture wiki page if you want to participate to the project.

Origin of the Readium project

The Readium project was initiated by the IDPF in 2012 in order to create an open-source implementation of an EPUB 3 parser and reading toolkit. Initially written in Javascript as a Google Chrome extension, it soon evolved with the addition of a C++based native SDK, for use in iOS, Android and desktop applications. A more complete description of the Readium project goals is found on the Readium website.

Open-source projects need to be funded, it was therefore decided to create the Readium Foundation as “an Open Source Foundation collaboratively developing technology to accelerate the adoption of EPUB 3 and the Open Web Platform by the Digital Publishing Industry”. For some time, contributions and membership fees provided the necessary funding for the Readium SDK to evolve.

Thanks to Readium member efforts, the Readium C++ SDK and the Readium JS toolkit became solid open-source projects, a reference implementation for EPUB 3 processing, one of the rare software supporting EPUB 3 media overlays, MathML, right to left reading progression etc.

More about the original Readium C++ SDK and JS toolkit

Transition to the new Readium toolkits

As of 2016, the Readium SDK was mature and the Readium Chrome Extension – initially a test application – had become popular among EPUB users. Several iOS, Android and OSX reading applications had been built using the C++ core, the large Javascript library (“shared JS”) and native wrappers in Objective-C and Java.

However, this C++ code was not as platform-neutral as it was aimed to be, as it was interspersed with directives targeting specific implementations. The rapid evolution of the mobile platform was creating headaches for the developers. Also, given the organic nature of an open-source development with constant turnover of developers, this hybrid codebase had become large and complex, with nobody having complete knowledge of its nitty-gritty details.

At the same time, W3C members from the publishing industry (including EDRLab) had started creating new specifications for Web Publications, which would support digital publications in many forms, i.e. traditional ebooks, audiobooks and visual narratives. Supporting these new formats would soon be needed on the Readium SDK, which would be a new pain knowing the complexity of the codebase.

Meanwhile, the web had continued to mature with JavaScript engines becoming much more full featured (indie and outside browsers), with extensive support for parsing markup, crypto, SVG, WebGL support and more. On the mobile side, new and modern languages had taken the sunlights, Swift on iOS, Kotlin on Android. On the desktop side, it was now possible to develop efficient multi-platform applications using the Electron.js platform and the Typescript language.

This is the time when the Readium community decided to start the work on a brand new codebase, a.k.a Readium “2”. This work started under the leadership of EDRLab and the developments are still very active today.

The Readium SDK was at the time associated with a dual license, GNU and free for open-source projects, Apache and subject to yearly fees for commercial projects. This dual license was very useful for the maintenance of the codebase by senior developers, but was not evenly understood by implementers … was Readium really open-source?

From February 2018, the licensing model of the Readium SDK was changed  for a unique BSD-3 type license, free for any type of project, but with a strong suggestion to participate financially to the maintenance of the different projects by paid developers.

This made the situation unambiguous: yes, Readium is fully open-source.

In 2019, it was acknowledged that the original Readium SDK would not be actively maintained anymore and that the Readium project would focus on the new codebase, i.e. Readium Mobile, Readium Desktop and Readium Web.

Communication about software development

Assises du Livre Numérique 2021 – Evolutions en cours sur les applications de lecture.

More about Thorium Reader

Readium-2

The major evolution of the Readium SDK codebase, the objectives being better performances and stability, clarity of source code and documentation.

Discover Readium-2

Readium SDK & JS

The reference EPUB 3 open-source reading engine for Web, desktop and mobile apps, on active maintenance by the Readium community.

Discover Readium SDK & JS

woman in library reading at a tablet with lock in her hand

Readium LCP

The vendor-neutral and interoperableDigital Rights Management technology, embeddable in any reading application based on the Readium SDK.

Discover Readium LCP

Copyright © 2023 EDRLab. Legal informations

Log in with your credentials

Forgot your details?