Open Source

I have been involved in many open source projects but the below is a good snapshot of some the developments I am proud to have been involved with. For a more personal and detailed account of my journey, please see

PubSweet 2

A publishing framework enabling knowledge management, creation, processing and dissemination, PubSweet includes a robust back end and a set of interoperable components that together comprise a flexible, configurable network capable of managing many content types. The initial use cases are in scholarly journal and book publishing. The components include tools for authoring and collaboration, editing and production, flexible and configurable workflow management and user dashboards, and administration interfaces.


Over the last year, Coko has worked with the University of California Press and the Californian Digital Library to build Editoria – a scholarly monograph production platform. I facilitated the Collaborative Product Design process (see Facilitated Methodologies) and have been part of the development team. I’m very proud of this platform (built on top of PubSweet).


The INK framework: ingestion, conversion and syndication environment that converts content and data from one format to another, tags with identifiers and normalises metadata. Typical use cases include converting Word and other proprietary formats into highly structured formats such as HTML5, XML, and ePub, and outputting to syndicated services, the web and PDF. INK will add common identifiers such as DOIs and geolocation IDs and ensure compliance with standards for content and metadata.

Substance Consortium

Helped found the Substance Consortium.

PubSweet 1

2012 – present
PubSweet is a platform designed to assist the rapid production of books in Book Sprints. The platform is very simple to use, with very little overhead for new users. The system provides dashboards, publishing consoles, card-based workflow management (task manager), discussions, data visualisations of contributions, a dynamic table of content management, and support for multiple chapter types. PubSweet can produce EPUB and leverages book.js (see below) to produce print-ready PDF (paginated in the browser). PubSweet is written in PHP, using Node on the backend, and CKEditor as the content editor.



Lexicon is a platform produced for the United Nations Development Project to collaboratively produce a tri-lingual (Arabic, French, English) lexicon of electoral terms for distribution in Arabic regions. Lexicon provided concurrent editing for chapters with multiple terms, sorting by language, discussion forums and voting. Lexicon was written quickly in php with Node.

"The Lexicon was created with the aid of an innovative collaborative writing tool customized to suit the needs of this project. This web-based software allowed the authors, reviewers, translators and editors to simultaneously input their contributions to successive drafts from their various countries."



Headless webkit renderer for embedding BookJS for server side rendering of HTML to PDF.


A basic experiment for applying live CSS updates to HTML in the browser. It never made it to production.


book.js is a Javascript library that you can use to turn a web page into a PDF formatted for printing as a book. Take a web page, add the JavaScript, and you will see the page transformed into a paginated book complete with page breaks, margins, page numbers, table of contents, front matter, headers etc. When you print that page you have a book-formatted PDF ready to print.

book.js has given inspiration to a number of other JS pagination engines. See Vivliostyle, bookJS Polyfil, Pagination.js, simplePagination.js, and CaSSiuS.


Booktype Designer

This was an in-browser design environment for applying CSS styles to both EPUB and PDF outputs. It was an experiment and never made it to production.


2010 / 2012
Booktype is a book production platform. I brought this platform to Sourcefabric (Berlin) as ‘Booki’ in 2012. Booki was started in 2010. Booktype is written in Python (Django).

“Booktype resolves challenging issues in collaborative knowledge production resulting in high quality print and ebooks.” – Erik Möller, deputy director, Wikimedia Foundation


Objavi is an API-software service originally written for Twiki Book (see below) but which also serviced Booki and later Booktype.  Objavi converts books from their native HTML into PDF for printing. It also handled other file conversions (eg HTML to ODT, HTML to EPUB etc). I later produced a similar API-based conversion software for PLOS known as iHat. Objavi is written in Python.

‘TWiki Book’

TWiki Book didn’t have a real project name at the time. The project was the first publishing system I built. TWiki Books was created solely to meet the needs of FLOSS Manuals (see below) and it was built on top of TWiki, an open-source Perl-based wiki that had good PDF-generation support and a good plugin and template system. I came to think of it as a rapid prototyping application.

TWiki Book included book remixing features, side-by-side translation, table of contents building, publishing interfaces (I actually wrote a separate php-based system to manage this), edit notifications, versioning, diffs, live chats and many other features. It was a good system but reasonably difficult to extend and maintain since it re-purposed an existing wiki software (hence my approach to building purpose-built book production systems after this point).

FLOSS Manuals

The first open source publishing system I designed and built never had a name. It was developed so the global FLOSS Manuals community could collaboratively build free manuals about free software, and though the original development was in English, it soon became multilingual, and even produced right-to-left manuals in Farsi.

The FLOSS Manuals system was based on Twiki, using the Twiki account creation and permission systems, some clever JavaScripting by Alexander Erkalovic to allow multiple versions, an HTML WYSIWYG editor, a separate mechanism for creating an ordered table of contents, and you could compare different versions of the same chapter, view overall progress and  dynamically change the chapter order. A remix system enabled import of content from other manuals; a side-by-side editor was used for translation, supported by federated content to enable the translation workflow; and output was in many formats, primarily PDF and zipped HTML, and later EPUB.

The system produced loads of manuals and printed books about free software. All free content.