Readium SDK Overview

Readium SDK description

Readium SDK is an open source project developing a productized, high-performance, cross-platform rendering engine for EPUB 3 content, optimized for use in native applications (mobile/tablet and secondarily desktop systems). Simplistic test applications for Android, iOS, OS/X and Windows are part of the SDK, along with test frameworks. Readium SDK is extensible in various areas including DRM support. Readium SDK will be dual-licensed under both GPL and a commercial-friendly (non-copyleft) license. Note that the default license currently in the open source code on github is GPL.

A separate sub-project intends to in parallel develop an interoperable implementation of a lightweight content protection technology (DRM) that can be implemented into the modular framework of Readium SDK. This DRM will be available under a separate license, terms and conditions TBD.

Readium SDK architecture

The core of Readium SDK is cross-platform C++ and JavaScript code designed to be combined with platform-specific glue code and a modern browser rendering engine to instantiate an EPUB 3 compliant (including EPUB 2 support) rendering engine within a platform-native reading system application. Readium SDK is developing a capable, high-performance EPUB 3 engine, not an overall application (other than per platform test applications).

The general architecture is that the browser engine (headlessly) handles content rendering with some features like pagination being implemented in Readium SDK JavaScript code that has been “injected” into the browser context. The C++ code handles tasks/features that can’t be efficiently performed in JS, such as incrementally fetching, and as necessary decrypting/deobfuscating, resources from an .epub ZIP package. Certain UX affordances are supported within the browser context (e.g. text highlighting) but application-level UX affordances would generally be done in the reading system application via platform-specific code (e.g. Java on Android, Objective-C on iOS). Integration glue is provided in Readium SDK to facilitate this, and usage illustrated by the test applications (which however are not product-level reading systems). Handling of XML Encryption and Digital Signature files is provided to simplify implementation and modular integration of DRM(s) compatible with the EPUB 3 specification.

Readium SDK is designed to potentially work with multiple browser engines but the #1 priority for initial development is WebKit, including platform-bundled instantiations (e.g. via UIWebView on iOS). The Readium SDK project may support a custom WebKit but will not unilaterally depend on the ability to carry such custom WebKit along with a given implementation of Readium SDK. #2 priority browser engine wil llikely be Trident/IE10 (needed for apps to be able to support screen readers on Windows).

Readium SDK Implementation Status and Plans

Readium SDK will leverage common C++ code contributed by Kobo as well as JavaScript code developed in the original Readium project

The original Readium project, now “Readium Web”, will continue to evolve as a fully browser-based implementation.

Readium SDK is being developed using github in an agile manner using a lightweight version of Scrum. Sprint 0 was completed February 7, 2013. For information on Sprint 0, including how to access and build the code and generate API documentation, see here

It is a goal that a substantially complete SDK be embeddable into reading applications by August 2013.

Readium Governance

The IDPF will continue to facilitate Readium-Web and Readium-SDK during a transition during 2013 to governance by project contributors. A separate Readium Foundation has been established to facilitate this transition and to support necessary licensing infrastructure. For information about Readium Foundation and the associated membership structure and licensing see here