Readium Project Goals
The Readium project adopts its core values from the WebKit Project on which Readium is based; we “value real-world web compatibility, standards compliance, stability, performance, security, portability, usability, and relative ease of understanding and modifying the code (hackability).”
EPUB Reference System and Rendering Engine
The project’s primary focus is a reference system for rendering EPUB 3 publications. We also want to make it possible to embed Readium or components thereof in other applications that support the EPUB format. As a reference system, the user experience will optimize for use by developers testing EPUB 3 content, not for use by consumers.
Readium should strive for alignment with WebKit development norms and procedures. The Readium Project has been initiated by the International Digital Publishing Forum (IDPF) and sponsoring member organizations. But, some or all of Readium may ultimately move “upstream” into WebKit, and we expect more and more EPUB content to be deployed on the Web. Therefore unless there is a very strong reason otherwise, the default presumption will be “do as WebKit Project does”, to facilitate potential future convergence.
However, at the present time Readium will be developed and governed by a separate group of committers and reviewers.
In the below, goals adopted verbatim from WebKit Project are denoted in italics
Readium should remain freely usable for both open source and proprietary applications”. We use BSD-style licenses by preference. Specifically, we aim for licensing compatible with LGPL 2.1+. In addition, we strive to create a courteous, welcoming environment that feels approachable to newcomers. We maintain a public IRC chat room and a public mailing list where the ideas of contributors both new and old are heard and discussed with equal weight. Readium SDK has a special dual-licensing structure (GPL and a commercial-friendly license based on Apache) to help ensure the level of development and management support necessary for its ongoing development.
Readium aims for compliance with the latest EPUB specification, and to be a testbed for support of emerging EPUB modules. EPUB Publications are expected to be able to be long-lived and interoperable across multiple, indirect distribution channels, and reliably manipulated by intermediate workflows. Therefore compatibility with the EPUB 3 specifications, and being a comprehensive reference system, is a high priority for Readium.
Readium Project provides feedback to the IDPF EPUB standards community and as well to the broader W3C “and web standards community to bring new technologies into standards, and to make sure new standards are practical to implement in our engine. We use regression testing to maintain our standards compliance gains.”
We strive for compatibility with real-world commercial EPUB Reading Systems, but not at the expense of standards compliance. In particular we seek to be a reference system that promotes digital publications for the Open Web, and thus does not depend on or proliferate proprietary technologies, and discourages “embrace and extend” tactics that aim to create closed silos, by the positive step of showcasing and delivering leading-edge functionality that is fully specified, free and open, and interoperable. “We use regression testing to maintain standards compliance and interoperability.”
The main Readium code base should always maintain a high degree of stability. This means that crashes, hangs and regressions should be dealt with promptly, rather than letting them pile up.
“Maintaining and improving speed and memory use is an important goal”, however being a complete reference system for EPUB is more important than speed or memory efficiency. We never consider performance “good enough”, but strive to constantly improve.
“Protecting users from security violations is critical. We fix security issues promptly to protect users and maintain their trust.”
“The Readium project seeks to address a variety of needs. We want to make it reasonable to port Readium to a variety of desktop, mobile, embedded and other platforms. We will provide the infrastructure to do this with tight platform integration, reusing native platform services where appropriate and providing friendly embedding APIs.”
To the extent that Readium features affect the user experience, we want them to work in accordance with good human interface design principles, and to mesh well with platform-native HI conventions. Furthermore, we strive to integrate with platform accessibility features to allow access for all users, including those with disabilities.
To make rapid progress possible, we try to keep the code relatively easy to understand, even though web technologies are often complex. We try to use straightforward algorithms and data structures when possible, we try to write clear, maintainable code, and we continue to improve names and code structure to aid understanding. When tricky “rocket science” code is truly needed to solve some problem, we try to keep it bottled up behind clean interfaces. In addition, we make heavy use of automated regression tests as a safety net, to allow aggressive changes with less risk of regressions.
While IDPF is the sponsoring organization for Readium Project, governance of the project will be per open source norms rather than the policies and procedures IDPF utilizes for standards-development working groups. Like WebKit Project, Readium will be governed by its committers and reviewers, whose composition will evolve meritocratically over time as reviewers nominate new committers and reviewers. It is a project goal that governance not be dominated by one or a few organizations.
The above goals are a lot to bite off, so we consider the below consider out of scope for the project.
Readium is an reference system and engine, not a commercial Reading System.
We do not plan to develop or host a full-featured commercial-quality application based on Readium. Others are welcome to do so, of course.
Readium is an engineering project not a science project.
For new features to be adopted into Readium, we strongly prefer for the technology or at least the use case for it to be proven. Since Readium has created to promote EPUB format support under the sponsorship of IDPF, we will in general give the benefit of the doubt that features standardized for EPUB by IDPF meet this bar. Support for non-standard extensions to EPUB will be discouraged unless widely supported in real world content.
Readium is not a bundle of maximally general and reusable code.
We build some general-purpose parts, but only to the degree needed to be a good EPUB Reading System engine and reference system.
Readium is not the solution to every problem.
We focus on handling EPUB publications, not complete solutions to every imaginable technology need.
Readium does not subordinate EPUB support to deference to WebKit Project.
Readium strives for a highly collaborative relationship with the base WebKit project on which Readium depends. Since we view EPUB as the portable document format for the Open Web, we specifically aim to retain the potential for full convergence of EPUB support into WebKit itself, in contrast to some other WebKit-based projects that do not necessarily contemplate such future convergence.
For these reasons and for general good citizenship we aim to avoid actions that would be negatively viewed by WebKit stakeholders. However, EPUB support, which is critical to the vertical ecosystem of digital publishing that we serve, is presently not a priority for WebKit Project and its broader Web content ecosystem. Until such time as this changes and convergence has been achieved, there may be times when the path forward for Readium dictates development paths of which some, even most, WebKit Project members may disapprove. This includes, but is not limited to, forking WebKit.