Skip to content

brianhaferkamp/ubook-project

Repository files navigation

The uBook Project

The official Universal Book (uBook) project

We are moving through the proprietary eBook era and entering a new era of digital publishing free from the constraints of proprietary eBook devices, file formats, and marketplaces. The new era of digital publishing is open, web-based, standards compliant, and accessible across platforms and devices. In other words, our books will now be universal.

The uBook Project is a first-of-its-kind project to envision, create, and distribute a new kind of digital book. At the beginning we will focus our energy on recreating some of the classic pieces of literature as we begin to structure and map out some standard features for uBooks.

The first uBook is the classic, Moby Dick. Read it online.

Developer Quick Start: Create a uBook

Requirements

This build systems has some requirements not covered in the video. First, you need NodeJS in order to run Javascript on the console. Go to the NodeJS website and complete the installation process. After you get the Node command on the console, you need to install Gulp and Bower globally in the console with the following command.

node install -g gulp bower

Gulp is the one that will run all the compilation, watchers, and others tasks. Bower will get the dependencies for the client side, like jQuery. Those are the only requeriments to run this project. Feel free to adapt this to Grunt, if that's part of your workflow.

Video Tutorial

Click the image below to go to a video tutorial teaching you how to download the files in this repo and get started creating uBooks. This starter template is a full build system that uses the following technologies:

  • SASS
  • Pug (Jade)
  • Browsersync
  • jQuery

Link to a tutorial video that teaches you how to create a uBook

uBook Development Roadmap

  • Create a starter template for developers and authors to use
  • Create a video showing developers how to make their own uBooks
  • Create the next uBook: Pride and Prejudice Read Pride and Prejudice, by Jane Austen.
  • Create a central marketplace for users to access uBooks

Learn More

What is a uBook?

A universal book (uBook) is a book that can be read on any device with a web browser. Created only with HTML, CSS, and Javascript, these books are as open and universal as the Web. They can even be read on a dedicated eReader, such as the Kindle.

In its essence, a uBook is a relatively basic Web app. It can be single page or multi-page app. The underlying coding languages are basic to both lower the barriers to uBook creation and to ensure accessibility and universality. We should strive to make uBooks as universal and open as possible; not punishing readers but freeing them to read their books anywhere, anytime. Creating Web-based, standards compliant digital books is a step in that direction.

Why uBooks?

Many assumed that digital books would consume printed books, making them obsolete. However, that just hasn't been the case. People who read love the books themselves. However, it's really nice to have a digital copy of a book when you're on the go and mobile. That's why publishers created paperback books that are more portable than hardbacks. But there's just something about a hardback book on your shelf. Readers love them. So they've turned to eBooks as a portable alternative.

The problems are many with the current state of eBooks on both the production and consumption end. Consumers must choose which proprietary universe they are going to join into. It starts with buying a dedicated eReader that reads only those files that are formatted in the company's proprietary file type. This means that each book must be developed across multiple platforms just to be read. And this is only at the doing of individual companies. It's understandable, from a business perspective, why this happened, and it helped to normalize digital books and create a market for them. But going forward there's a better way.

Using only the base technologies of the Web we can create universal books that are cross-platform, cross-browser, accessible, cheap, and easy to make and maintain. They do not require any special third-party software to create or consume. Most people use a browser every day to access their email, write documents, read the news, or talk with friends and family. Consuming eBooks should be as easy. That's why we're pioneering uBooks.

What are the advantages?

Here are some of the major advantages of uBooks over current digital books:

  • Can be visually robust
  • Cheap to produce and maintain
  • Offline capable
  • No reliance on proprietary marketplaces
  • No downloads required
  • SEO-friendly
  • Responsive/Mobile-friendly
  • Small
  • Fast
  • Simple codebase for developers
  • Unique UI/UX
  • Rich media is easy to implement
  • Searchable
  • Compatible with any CMS (e.g., WordPress, Drupal)
  • Can be printed
  • Capable of being divided into 1-page or multi-page formats
  • Create one UI for multiple books
  • Books can be internationalized (translated) into multiple languages with only one codebase

What are the challenges?

Here are some of the initial challenges:

  • Requires central marketplaces to collect and distribute links to books
  • Requires a change of process for many publishers and authors
  • A lot of uBooks are required to change the market
  • Must create a mind-shift for consumers and publishers
  • New payment and access models are required
  • Publishers need vision to see an actual market for these books
  • User adoption
  • Developer adoption
  • Author adoption

Get Involved

If you would like to get invovled with this project as a publisher, fork this project and begin creating books and a marketplace for your books.

Please join into this project as a contributor, as well. Make it better. Some of the things I'd like to see are:

  • Only relying on vanilla Javascript (no libraries) for the UI
  • Creating an optimized reading experience on large screens
  • More and more finished uBooks

Get more info or talk about the project:

Brian Haferkamp (Twitter: @brianhaferkamp)