Novelang

The electronic document generator

Rationale

There are plenty of means to produce electronic documents and Novelang comes at the end of a long way across through various solutions.

WYSIWIG word processors

Their main problem is also their primary feature: they mix presentation with content. While this makes multi-format rendering horribly difficult, this also cripples the act of writing, making people focus on how the text appears instead of what it means.

WYSIWIG publishing tools

Those tools, like XPress and InDesign, are fine for high-end publishing with ultimate control of every aspect of how the document looks like. But they’re definitely not content-oriented.

LaTeX

LaTeX got it right. It is based on plain text with simple markup and a powerful macro system. It exists from 20 years and is incredibly mature now.

Why not using LaTex? The markup is too verbose, it accepts macro language inside the content, and it’s uneasy to setup. But if you have complex typography to automate (like for a book about mathematics) and skilled writers, it’s definitely the right tool.

DocBook

DocBook is a semantic XML-based markup for technical documentation. It has many great ideas (Novelang borrows some of them) but fails to cover every case and is really too verbose. And it lacks an off-the-shelf solution.

Wiki

Wikis are a family Content Management Systems aiming at creating Web sites quickly. They rely on a simplified markup which can get incredibly productive. There is a lot to say about their syntax.

(See an overview of various wiki systems. See some interesting discussion about wiki syntaxes on Markdown and Wiki Creole and Coding Horror.)

Alas, wiki solutions don’t care a lot about supporting accurate typography and most of them don’t generate decent PDF.

Finally…

Novelang came after a pair of prototypes.

The Forrest-based solution supported document preview through a Web browser, which is incredibly productive. It also supported document fragment inclusion. The Textile-based one had a much more pleasant markup. So it seemed a good idea to start a project mixing the best of both worlds, with a tighter and cleaner syntax.