This was my third time around the block in the process of creating an eBook; the first two times were not successes but I learned a lot in the process. Mostly that this isn’t a mature technology where you can just use some kind of lovely WYSIWYG editor, press a button and then expect to see nice results across all platforms. There are programs and services out there that do promise this, but if the book has any complexity to it — in our case, code formatting + embedded fonts — they don’t handle it very well, or at all. For our book, I had to (eventually) take an early-adopter stance and just become fairly expert at all the details of eBook production. My best friends were BeautifulSoup (a Python library for manipulating HTML), Calibre, Sigil and Amazon’s Kindlegen. (I’ve sent donations to the first three, which are open-source).
I also had to test on as many devices as possible because every device seems to have its own idiosyncrasies and unless you try each format on at least a few devices you can’t really hope that it’s going to look OK. So I’ve accumulated a Kindle 3 (Keyboard), a Nook, an Android tablet, and an iPad (the ePub version looks fantastic on the iPad!). I also tested with friends’ devices. It’s always risky in the software world to say “it’s done,” but I will say that it’s been reasonably well tested.
We decided against any kind of digital rights management (DRM) — that makes it painful to install and also to put it on multiple devices.
I created the eBook in 4 formats, to try to make sure that everyone has as many choices as possible. The zip file you get when you buy includes all of them:
- PDF with index for easy navigation
- ePub which works on non-Kindle devices and in Apple iBooks
- mobi for all Kindle devices including and after the Kindle 3 (Keyboard); also works on Android and other devices which support the Kindle reader software.
The package includes a README.txt which includes installation instructions.
I’m using Gumroad.com for sales and delivery, and they have an automatic system to push updates to customers, so if we do find errors or need to make changes, you’ll get the updates seamlessly.
I’ve also come up with what I think is a good solution for showing corrections and updates to the book (page numbering is not a fixed quantity with ebooks).