ebooks, version control & software

Yesterday, I was trying to migrate a decade old VSS (Microsoft Visual Source Safe) version controlled project to a git repository.  Yes, this particular decade old project is still being actively maintained and in use – several customers depend on this software working:-)    So, I thought it is time to move away from VSS and migrate it to git.  Since the project was making use of all esoteric features of VSS such as shared folders, pinning etc, it is not a straight-forward migration to git.  I am using vss2git for the migration, but even this needed few fixes before I could attempt to create a git repo out of VSS project. As I was trying to re-organize the vss2git migrated repositories to better fit into git model, I realized I needed better understanding of  git subtrees, indexes etc. I got hold of the ebook Git Magicand was trying to read through. This statement by the author Ben Lynn in the preface made me stop and think about what version control could offer to ebooks:

…My gratitude goes to many others for your support and praise. I’m tempted to quote you here, but it might raise expectations to ridiculous heights. If I’ve left you out by mistake, please tell me or just send me a patch!

This ebook is open sourced under the GPL license and is maintained on the GitHub. These days, it is nothing new for authors to add errata, additional examples, diagrams or other commentary on a website associated with the book (ebook or print version). But there is simply no automated way for you to know about any of these updates. Most of my ebooks I read either on Kindle or other Android ebook software (particularly, if these are pdfs). Imagine, if version control tool is explicit part of the ebook publishing process, there are plenty of exciting things that can happen:

  • As authors make early versions of the book available (Rough Cuts as Safari calls it), readers could comment by submitting patches.
  • Multiple book authors can easily collaborate, esp with distributed version control systems such as git.
  • If ebooks are explicitly associated with their, say git repositories & rss feeds, and assume kindle like readers are aware of this fact (either by a convention or a standard). Now, every time I open the book, ebook reader can notify me that there are updates to the book, additional chapters, errata etc and update it in-place.  Better yet, give me a view of what is changed in a chapter, if I have already read that chapter.
  • Several popular books undergo revisions for various reasons. For example, If these books are about a programming language or a computer science concept, the book revision may be about new language features added in a recent version or recent advancements in a given CS area.  Most of the time, 60% the content is same. So, it doesn’t make sense for me to buy a new (e)book. Imagine, if Amazon could offer the new revision in the form of update to an existing ebook for a much lower price than that of a new book.  I should then be able to see two versions of a book in my kindle bookshelf and read any one of them.  Book writing is an extremely time consuming process – who knows, this  process may even motivate more authors to make revisions to their books or in most cases just add new additional chapters.

This doesn’t necessarily mean that authors and readers need to (know and ) work with git like version control systems. There can always be more layers abstracting the nitty gritty details of a version control system from authors and readers. But an ebook publishing process with such an infrastructure underneath and a deep integration with ebook readers has a potential to make us look at ebooks very differently

To put it simply, books just become software !!


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s