The web site of Vas — 2020-12-09

Why I don’t recommend writing in a word processor

In 2020 I decided to experiment with my tools, so I tried to stop doing everything in Emacs. I used LibreOffice Writer for writing. I must say the experience was more pleasant than I initially expected and I ended up liking some things. However, if you are serious about writing and your writing tools, as in you are willing to invest a few hours into optimising your workflow, here is why I recommend writing in a text editor instead of a word processor. This is basically my review of LibreOffice Writer.

The Good

Writer is very easy to pick up and exposes more advanced features gradually. You can open it and simply start writing and incorporate more features into your workflow as you need them. It provides graphical feedback and 100% of its behaviour is exposed to you through a GUI. The keyboard shortcuts are sane by default but also customisable.

The autocorrect feature is almost as good as possible. If you are a fan of abusing it to make writing faster and more comfortable, as I am, you are going to have a great time with it. I can’t remember the last time I typed « I » through shift+i or « you » through y+o+u and Writer made it incredibly easy to configure and adjust.

Being able to lay out multiple pages horizontally is a killer feature. Most screens are longer than they are tall, but text is best written taller than it is long. By having multiple pages per screen you waste less space and you can fit a thousand words or more per screen, which is simply amazing.

Since Writer is a graphical editor, you don’t see markup. As a writer you are mostly interested in simple formatting, like italics and a heading, and there is no reason to pollute your text with markup. Symbols are a distraction and Writer helps with that.

It is possible to customise the interface to be very clean and ergonomic.

There exist features such as versioning and automation within Writer.

You can perform manual microtypography to make your text God-tier in print.

The Bad and the Ugly

Simply put, most or all of your publishing is going to be in a digital format, on the web, likely in HTML. Sadly, Writer lives in the print world, and not much effort has been put into its HTML output. ODT of course is an XML format and you can parse it to produce XHTML, and I have done it, but by no means would I call this as simple as writing markdown or even HTML by hand.

Writer pollutes your seemingly organised document with inline styles that translate poorly (or not at all) to HTML. This is partially why its HTML output is garbage. If you prettify its XML and scroll through it, you will immediately notice no sane person would ever serialise a document like that. It is so extreme that you will spend more time cleaning up its garbage than you spent writing the document in the first place.

This gets even worse if there is anything you wish to embed in HTML, like an image or video. Again, you can use a script to automate the task, and I have done it, but it was hours wasted and I had to clean up Writer’s garbage anyway even after conversion.

You have to jump through insane hoops to ensure Writer produces semantically correct documents. For example, by default ctrl+i and ctrl+b set the text as italics and bold through inline styles not as HTML’s emphasis and strong emphasis elements. Of course there exist styles to do that in Writer, but you have to rebind your shortcuts to do it, and I have done it, but honestly it’s simpler just teaching people to type an asterisk in markdown at that point.

Macros are written in a Visual Basic clone with poor documentation and I needn’t say any more. I’ve written a find+replace script with it which I copy-pasted from an obscure stack overflow answer and it was way more effort than doing the same thing with literally any other tool.

Same goes for its user interface. Most of the toolbars are bullshit you will never need. It’s useless for the novice user, since they don’t know what it does. It’s useless for the advanced user, since they live in the keyboard. It’s only good for intermediate users who are only now learning that shortcuts exist.

You need to invest a lot of time learning gotchas in the style system in order to produce the best possible output. Although ultimately, the style system is extremely useful, it is significantly less time just typing markup yourself and relying on a stylesheet to do the heavy lifting for you. Even if you don’t like CSS there are several premade stylesheets available that do an infinitely better job than Writer can.

The diff utilities are buggy as all hell. Nothing beats diffing plain text, as you have decades of expertise backing the tools. I recently had to diff between an old text file and its more recent Writer version. I converted the ODT file to HTML and then to markdown, and then I was able to compare the two and produce a diff file. This is simply impossible within Writer.

Since ODT is zipped by default, it is not friendly with version control software and you have to rely on Writer’s built-in features which are worse and buggy.

I had to dive way too much into Writer’s guts to customise keyboard shortcuts, looks, and autocorrect to my exact liking. Doing the same in any tool is going to involve some plumbing, but Writer involved some of the worst plumbing I’ve seen to date.

Since Writer’s configuration files are also zipped XML, they also play poorly with version control, so you can’t maintain them in a dotfiles repository so that you can have a reproducible mirror of your setup. You are basically tied to your computer installation as it, and if you do something to mess up your configuration, you can’t know what you changed that fucked it up and how to revert just that. It’s the Windows userland of writing.

The longer the document gets, the slower Writer gets. While all programs get slow when you load a huge file, most of the time, the file has to be truly huge. In Writer I was able to notice problems with documents of only a few tens of thousands of words, which is peanuts for Emacs.

The fact that markdown exists counteracts the necessity for most word processors. There is even commonmark now, which is markdown with a well-defined spec and a super fast parser.

Conclusion

You don’t have to use Emacs to do your writing. It’s understandably not very user friendly and its defaults aren’t great. You can use Sublime or Atom or VS Code if you prefer. They have good markdown support and tons of extensions. There are also many markdown editors specifically for writers, especially if you use macOS and have lots of money. Of course you can duplicate or improve upon their workflow with Emacs, or an Emacs distribution like prelude or doom Emacs.

For the love of God, just use markdown and track your writing with git. The amount of time you will save just with markdown and git per novel is enough to write another novel. It cannot be overstated how amazing.

Unfortunately you cannot do manual typesetting for print through a text editor, although LaTeX has the best automatic microtypography you can find for free. That is the only major shortcoming I’ve found for text editors. However you can overcome that by writing your text in a text editor, then importing it in Writer or whatever you use for your layout, and doing the layout adjustments there. Writer is pretty good if it’s limited to layout so I recommend you keep it to its niche.