Publishing with the Penguin – How to use Free and Open Source software to write and publish a book

I am fortunate that my publishers, Wolf Press, are as passionate about Free and Open Source software as I am. That must be a pretty rare thing, despite the fact that there are lots of people using Free and Open Source software, and there are lots of good reasons to do so.

This is a list and quick review of some of the Free Software we tried out/used  to write and/or publish a book.

NB This post assumes you are running Linux (or similar), rather than Windows or MacOS – although pretty much all of these programmes are  available for those platforms too.

NB2 This post isn’t about why you should use Free and Open Source Software (but if you’re not familiar with why software such as Linux, LibreOffice and Firefox are called Free Software then you may want to have a quick look at the Wikipedia article on it).

TL;DR - what software I (and my publishers) use

If you don’t want to read the pros and cons of each bit of software below then here’s a quick list of the software I used to create Stealing the Future. (Other suggestions below.)

  • Ideas on rolls of wallpaper and post-its on walls.
  • Drafts were done in Zim Desktop Wiki.
  • Final Editing: for line-editing and proofing we used LibreOffice.
  • Layouting was done by my publishers in LibreOffice (surprising but true!). For more complex books (with images and graphics) they use Scribus.
  • Cover design for my first book was outsourced, but later books were done in-house using Krita and Scribus.
  • Print preparation – professional printers want to receive the job in PDF/X format. PDF/A documents were produced from LibreOffice and then checked and changed into PDF/X using command line tools.
  • Ebook layouting – Writer2xhtml (EPUB) plugin for Libreoffice with further editing in Calibre.

Have you got any tips? Let me know and I’ll add them to the links section below.

Ideastorming and Plot Sequence

Personally I prefer the ultimate open-source technology for this step – pen and paper.

If you have a big wall to spare then you can’t beat a roll of wallpaper, colourful pens or pencils and post-its (or bits of scrap paper with blu-tak).

I generate ideas on the back of rolls of wallpaper, then distill them onto post-its (one plot idea/scene to each post-it). These then adorn the walls of my workspace for months, being reorganised, edited, changed and falling off the whole time. They are arranged (and re-arranged) to show the timeline of all the different plots.

But if you want a more portable way of organising your ideas, or you simply work better sitting in front of a screen then the following may be of interest:


I tried using mindmapping software, but quickly found that the map became to large, unwieldy and complex to be contained on a computer screen. Nevertheless, I found it useful to do a mindmap as an overview of all the sub-plots, with each point positioned so that it showed the timescale of the plot development.

Some mindmapping software I tried: Vym, Freeplane, Freemind, braindump.

Writing, editing and proofing

Zim Desktop Wiki

For those first messy drafts I used Zim Desktop Wiki.

Zim is deceptively powerful, including way more features than I know how to use, but is still really easy to use. Pages are organised hierarchically (just like the folders on your computer), and, like any other wiki, it’s easy to link between different pages and files. I made each chapter a page (including any notes on plot etc), and each scene a subpage.

I made sure to have a number (chapter.scene, eg 3.2) as the first part of the name of each page and subpage so that they appeared in the correct order in the tree-view of pages on my screen. Scenes could be moved around by renaming (ie renumbering) the pages, eg: “2.3 – prison” is the third scene in the second chapter, and is about the prison… In addition to making it easy to keep an overview, numbering scenes in this way meant they were all in the right order when I exported them (export to HTML, open in Libreoffice).

Notes, pics and docs as part of my Research were also kept in Zim Desktop Wiki – I can find my notes on a subject easily and quickly, and even link to them from any relevant scenes.

Zim has basic rich text functions (bold, italic, bullets etc), but the best features of Zim are the tasklist and checkboxes. You can type a comment such as TODO: or insert a checkbox (including deadline if you want!) to keep track of all those things you meant to get around to checking or doing. You can view a complete list of all unclosed queries, uncompleted tasks etc any time you want. (See a screenshot of the amazing Tasklist function.)

Another cool function of Zim is its versioning control – think you’ve messed up your scene? You can go back in time.

A downside to using a basic editor like Zim is that you need to check quotation marks, m-dashes etc after you import to LibreOffice or Scribus.


Another desktop wiki which looks interesting is Kabikaboo. This functions in pretty much the same way as Zim, except that it is pre-populated with pages that a writer is likely to need. Unlike Zim it does allow you to see you whole novel on one page, which makes it easier to paste it into another programme if you want. On the downside it doesn’t allow any rich text formatting, and it doesn’t have that very useful tasklist function that Zim has.


This is one I didn’t find in my Linux distribution’s software repository, but it’s a stand-alone java application with no dependencies, so you can just download and use it: Bibisco download (current version is 235mb – so it’s not light!).

It’s a very nice looking bit of software, full of helpful tips and hints. It’s easy to set your book up, and it keeps tracks of various statistics, such as who appears in which scenes, and where the scenes are located, which narrative strands are used in which scenes, and how many words each chapter has. All very useful stuff that I could be persuaded to use, but the deal breaker for me is that there  is no tree view of chapters and scenes (as of 2017), and there’s no way to move scenes to a different chapter. Bibisco’s maintainer has this down on her to do list, so I’ll be checking on progress.

Update 2018: New version of Bibisco deals with the problem of not being able to move scenes to other chapters – but only in paid for version (pay what you can, from €1).


Perhaps the most obvious software to write a book with would be LibreOffice (or OpenOffice) – it supports rich text, comments can help you keep notes of your plot and track those parts which require further attention. If you use headings and styles properly then they can really help you find your place easily and quickly, not to mention re-organise your whole work (using the Navigator function). Finally, large (ie book sized) files can be kept manageable using the Master Document function.

It’s possible to write a whole novel using LibreOffice (the first two books I was involved in were written in LibreOffice – in those days it was relatively slow with larger documents, but this is no longer the case). Restructuring the plot (ie shifting scenes around) can be annoyingly clunky (update 2020: this is no longer the case – easy to shift scenes around using the Navigator), and – my main gripe – there’s not much scope for linking to your notes, or organising your research – the only thing that really fits into your document is the text itself, along with comments.

Nowadays I use LibreOffice after the messy first few drafts are completed in Zim desktop wiki. Once the novel has settled down and the main changes are going to be in line-editing and proofing (rather than wholesale restructuring and deletions) I found LibreOffice perfectly fine to work with, and it was fun to have an idea of what my book would look like on a paperback-sized page.

Plume Creator

Update 2020 Development on Plume seems to have ground to a halt – last stable release was 2016!

I really, really want to recommend Plume, and I wrote the first draft of Thoughts Are Free in Plume, instead of Zim (although I kept my research notes organised in Zim). This is another piece of software that has been specifically designed for writers, and includes the usual stuff like a timer and a word-counter. It also has separate windows (which can be docked or minimised) to show notes, synopsis, characters and props etc. This is great since it means you’re not having to scroll back and forth in your document, or clicking on other docs in order to remind yourself what you’re meant to be describing next. It also has something called a “workbench” which provides a synopsis of your notes, the scenes and their status (1st draft, 2nd draft etc).

It has the necessary export function – you can choose which parts of your book to export to, for example, LibreOffice format, PDF or HTML.

Basically it does everything I want it to do but (at least in the version shipped with Debian) it’s really, really buggy. A bug that cropped up on several computers was that the screen would jump around when editing text, and in two cases I lost my work (fortunately I back up regularly!).


Booktype is an editing and production suite for writers – it supports collaboration and exports to XHTML, epub, mobi and PDF. It uses a database and can be installed locally on Linux and MacOSX or on a server in the net. As with Bibisco the show stopper for me is that you can only see and move chapters around but not shift one scene to a different chapter.


This is very young software (v. 0.3.0), and still rather buggy (it doesn’t resize vertically on any of my computers – so I have to drag the window if I want to see what’s at the bottom) – but it has absolutely everything I need. Keep an eye on it!
Update 2020: latest version (v. 0.11.0) is far more stable. Haven’t had a good look at it yet, but from a quick test drive I can say I’m very impressed.



Layouting was actually done by my publishers in LibreOffice. Word processors have become so sophisticated (dealing with technicalities like registry, kerning, hyphenation and ligatures) that they can now do a really good job of layouting, certainly well enough for a novel which is made up of words and few images! Usual caveat: this doesn’t mean that anyone can produce a good looking document with LibreOffice – you still need to know your design basics!


Scribus is probably the most obvious choice for laying out in Linux, and although it looks (and can feel!) very clunky and old-skool, it generally gets the job done. Make sure you have all your editing done before you start laying out in Scribus – editing large documents can be painful!

TeX/LaTeX etc

TeX and friends need no introduction: if you know them then the chances are you’ll already love them (and be boring your friends about how great they are), and if you don’t know them then you will probably not really want to invest the time and effort into learning the markup that makes it all happen. It’s like Marmite – love it or hate it. But they produce very good results.

Cover Design


Update 2019: Colour Management support built in from Gimp 2.10 – but not PDF/X export.

Probably the most popular Free Software image manipulation programme – extremely capable, but frustratingly it doesn’t come with built-in CMYK support. It can be easily added though: the plugins Separate+ and ICC-profiles give you the functionality you need to generate a CMYK tiff which you can then make into a cover using Scribus or convert to a PDF (requires the plugin gimp-plugin-registry).

Alternatively, use Gimp to produce/edit your image, then use Scribus for layouting the title, blurb etc so that you can export it as a print-ready CMYK PDF (but obviously double check your colours have transitioned well from RGB to CMYK colourspace!).


Krita is another Free Software image manipulation programme, its big advantage is that it handles CMYK natively. It works a bit differently from Gimp, but isn’t too hard to get the hang of.


If you don’t want to do the text and elements layouting for your cover in Gimp or Krita (and you probably shouldn’t!) then Scribus is the obvious choice for this.

Scribus can deal with CMYK and PDF/X (see below) natively, and has much finer support for kerning and positioning than do Krita or Gimp.

Print Preparation

Many professional printers require you to deliver your copy as a PDF/X – which is a type of PDF that has fonts embedded, transparencies removed and a bit of extra information in its headers. This all sounds fine until you realise that LibreOffice (or any other word processor for that matter) doesn’t let you export to PDF/X, so what to do if you have a printer saying they won’t do the job unless you can give them your copy as a PDF/X …


Scribus can output PDF/X – so no worries there.

What to do if you’re using a programme that can’t output PDF/X

The first thing to do is check with your printer – they are understandably keen to have a graphics heavy cover in PDF/X format, but will they accept the text of your book in PDF/A? If they will, then your problems are practically solved, since then you only need to produce a PDF/X cover using Scribus, Gimp or Krita and for text use e.g. LibreOffice to output to PDF/A.

If however they insist on having the contents as PDF/X too then all is still not lost (despite all the stuff on the internet telling you that only InDesign or Adobe Distiller can do the job!)

LibreOffice lets you export to PDF/A – which is almost the same thing as a PDF/X – so that’s a good start.  Double check that all the fonts are properly embedded into your PDF (happens automatically if you export to PDF/A).

Now you can use ghostscript (ps2pdf) to convert your PDF or PDF/A to PDF/X. Instructions are here: sure to read the section on PDF/X.

Other alternatives include fop and PStill, but I have read reports that PStill sometimes does funny things with your fonts – does anyone have any experience of this?

Ebook layouting

Ebooks, such as epub and Kindle (mobi, azw) aren’t very hard to create, but you have to be prepared to spend a fair bit of time fiddling and editing HTML and CSS if you want to iron out all the minor layouting glitches that usually creep in. The main thing is to get your epub right, since if you want to make an ebook for Kindle then you’ll be going through Amazon, and the best way to do that is to start with an epub anyway.

Online services

I haven’t used any online ebook rendering services, or that is to say, the free ones I found weren’t of very good quality. Others I looked at were tied to a paid service.

LibreOffice with Writer2xhtml plugin

The native HTML export function in LibreOffice (and produces code which is ridiculously messy, mainly because it attempts to exactly recreate the WYSIWYG layouting that you expect from a word processor. The HTML output is full of redundant styles and span elements which can be a nightmare to clean up.

The Writer2xhtml plugin for LibreOffice outputs an Epub file with relatively clean code. In longer and more complex texts you may end up with some redundant elements, but on the whole it’s not too bad. Better still, the plugin can also output directly to Epub format.

If you’ve done your layouting in LibreOffice then my recommendation is to use this plugin to output to Epub, then tidy up and fine tune and edit the Metadata (including adding a cover) either in the Calibre or Sigil editor, or any html editor.

Update 2018: LibreOffice will now natively export to epub – it makes as much of a mess as export to HTML, best avoided.
Update 2020: The LibreOffice native export to epub function has improved, but it still introduces a ridiculous number of styles, and you end up having to pick out all the redundant spans and clean out your duplicate styles – best to stick with the Writer2xhtml plugin.


Calibre is currently the de facto standard programme for converting pretty much any text into any ebook format (although its main purpose is to help you manage your library of ebooks.) It can read various standard formats such as odt (LibreOffice), doc, docx, rtf, txt, pdf and html.

It’s best not to use Calibre for the conversion from doc or odt to epub – you’ll end up with loads of crud (insane numbers of paragraph styles!) in your code. Best to use the Writer2xhtml Libreoffice plugin (see above), then use Calibre’s editor, which is very easy to use if you are familiar with HTML and CSS. It’s worth spending a bit of time looking at the epub structure so that you understand how to change the metadata and how/whether to change things like the table of contents.

In contrast to the usual advice that the programmes should (in Linux) be downloaded using your software package manager – Calibre is currently being developed so fast that it’s really worth making an exception and getting that programme directly from Calibre’s website.


I haven’t used Sigil, but it is well known as a powerful epub editor.


As well as being a collaborative editing suite for writers Booktype also supports export to epub and mobi.

Uses a database and can be installed locally on Linux and MacOSX or on a server in the net. I haven’t used this, but the interface looks nice, and it would be particularly useful where there is more than one person working on content.

Let us know if you have other suggestions for Free and Open Source software that can be used to produce a book!


  • How to self-publish a book has instructions on converting from Markup or Libreoffice to various ebook formats, mostly using Pandoc, but with other information, such as doing basic covers.
  • BBeBOOKS have great tutorials on all things epub and mobi.