Hacking Free Software for Creative Writing
Free Writing Tools
BySome tools designed for programming can also be very helpful for writing fiction. A few to look at include personal wikis, random word generators, and version control tools.
One of the most important lessons I have learned from using free software is the ability to improvise. Although I am not a developer, I long ago learned to hunt for useful scripts and adapt them for my own purposes. However, it is only recently that I realized that, with a little improvisation, tools designed for programming can be made useful for writing fiction.
Some free software, of course, is already designed for use by writers. Although a sadly high number of users have yet to learn that The PC is Not A Typewriter, as Robin Williams said in the title of her book, LibreOffice is designed for writers of long documents. Similarly, Calc, like any spreadsheet, is ideal for outlining scenes and for keeping track of more abstract elements of storytelling, such as the phases of the moon or the course of a character’s illness. However, the repositories of free software also contain some less obvious tools that are useful for writers, including those detailed below.
Personal Wikis
Wikis are popular for free software projects. However, individuals also find them useful for many other purposes, which is why the personal wiki has become common. For writers, personal wiki files are useful because they can be linked and lightly formatted, which is a more reliable way to organize background information like the biography of characters than relying on directory and sub-directory structures. Countless personal wikis are available, but Vimwiki is a command-line option that is easy to learn, while Zim offers the same advantage on the desktop (Figure 1).
Coining Fantasy Names
Invented names are an important part of fantasy and science fiction. Gamers often use online databases, but a writer needs something more original. But how to generate names that can be easily pronounced? One useful tool is a random word generator like xkcdpass.
Xkcdpass is a password generator named for the famous xkcd comic that suggests that a string of random words can be used for strong passwords. By default, xkcdpass generates five random words that can also be used for name coining. For example, say xkcdpass generates:
limelight diary deepen recovery collected
From these five words, I could generate names like Diardeep, Deeplim, Colvery, and Rylight, adding more until inspiration fails and I generate a new set of random words.
Using xkcdpass’s options, I could vary the number and length of the generated words. If I wanted to use a particular string – for instance, “skul” to suggest something sinister – I could choose to generate only words that contained that string. And if the words sound too English? Then with the option --wordfile=WORDFILE, I could use the dictionary for another language. Xkcdpass currently supports Finnish, French, German, Italian, Norwegian, Portuguese, and Spanish, and it would be relatively easy to create a new dictionary by copying and pasting other dictionary systems.
Version Control Tools
For most writers, version control is haphazard. A common joke is that a writer’s files will be a collection of names like “final.odt,” “2nd-final.odt,” and “absolutely final.odt.” Version control systems like Git and Mercurial have never been widely used by writers because of the difficulty of using them with office suite files.
However, with a little searching and the recent release of diffoscope, version control is now possible (more on diffoscope below). Admittedly, merging files remains mostly manual, but I find that is what I prefer anyway. The most useful feature of version control is the existence of multiple branches, so that the relation of one draft to another is easily detectable. Despite the fact that a command like git has dozens of options, a writer’s needs are relatively simply, which allows the basic workflow to be learnable in less than an hour.
Binary Diffs
I covered diffoscope in depth in the November 2020 issue of Linux Pro Magazine. Here, I will only say that diffoscope is a new command that brings the time-honored diff command to the desktop and works with over 60 binary formats, including LibreOffice’s ODT format. Although originally written by Debian’s Reproducible Builds project, diffoscope is an important building block for writers who choose to work more like developers.
At its simplest, diffoscope requires no more than the command and two file names to compare versions (Figure 3). However, if you choose, you can specify options such as the length of each excerpt from the two files and regular expressions to include or omit. You can also experiment with fuzzy logic.
Merging Files
One of the barriers to using git or diff commands for writing is that they usually work with text files, while most writers work in binary formats or at least have to submit their work in one. In addition, as I write, diffoscope is too new to have automated merge capacity. Consequently, most merges have to be manual, although there are several ways to go about it.
If you only want to append files, ooo_cat will do the job. From the desktop, you can connect files to each other in LibreOffice using File | Send | Create Master Documents (Figure 4). This feature not only appends documents but also allows files to be rearranged and new text entered. The files in a master document remain separate but can be printed or saved as a single document.
More complicated file merges can be done with LibreOffice’s Edit | Track Changes | Compare Documents (Figure 5). You can open a second file so that you can approve all the changes, one at a time. Alternatively, you can use Merge Documents to combine both documents all at once. The Compare Document option in particular has an interface complicated enough to take some getting used to, although it is a powerful solution.
You also have the option of working in plain text so you can use Git’s own merge features. In order to do so, you need to convert ODT files to plain text, using a solution like odt2text for LibreOffice files or PDFMiner for PDF files. Unfortunately, while you can convert text back to ODT format by opening a file in LibreOffice and then saving it, much of the formatting to prepare a manuscript for submission still needs to be added – a task eased by styles, but still a tedious one. A more practical solution would be to write in LaTeX or HTML, markup languages that work with plain text and therefore allow you to work directly with Git’s merge command. When you are finished editing, you can compile a LaTeX file or run a script to convert text to ODT or HTML to ODT.
The New Workflow
None of the tools mentioned here is promoted as being specifically for writers. However, with a little ingenuity, writers can benefit from them almost as much as developers. They require a change in workflow that takes a while to learn, but the effort is worth the struggle. In the last few months, I have found that thanks to these tools I am getting organized in my habits. I no longer have to hunt for background notes, or figure out where my drafts are, or scroll up and down as much as I once did. These development tools have helped me to organize my workflow and increase my efficiency – improvements that, like most writers, I have badly needed.
next page » 1 2 3
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Support Our Work
Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.
News
-
Valve and Arch Linux Announce Collaboration
Valve and Arch have come together for two projects that will have a serious impact on the Linux distribution.
-
Hacker Successfully Runs Linux on a CPU from the Early ‘70s
From the office of "Look what I can do," Dmitry Grinberg was able to get Linux running on a processor that was created in 1971.
-
OSI and LPI Form Strategic Alliance
With a goal of strengthening Linux and open source communities, this new alliance aims to nurture the growth of more highly skilled professionals.
-
Fedora 41 Beta Available with Some Interesting Additions
If you're a Fedora fan, you'll be excited to hear the beta version of the latest release is now available for testing and includes plenty of updates.
-
AlmaLinux Unveils New Hardware Certification Process
The AlmaLinux Hardware Certification Program run by the Certification Special Interest Group (SIG) aims to ensure seamless compatibility between AlmaLinux and a wide range of hardware configurations.
-
Wind River Introduces eLxr Pro Linux Solution
eLxr Pro offers an end-to-end Linux solution backed by expert commercial support.
-
Juno Tab 3 Launches with Ubuntu 24.04
Anyone looking for a full-blown Linux tablet need look no further. Juno has released the Tab 3.
-
New KDE Slimbook Plasma Available for Preorder
Powered by an AMD Ryzen CPU, the latest KDE Slimbook laptop is powerful enough for local AI tasks.
-
Rhino Linux Announces Latest "Quick Update"
If you prefer your Linux distribution to be of the rolling type, Rhino Linux delivers a beautiful and reliable experience.
-
Plasma Desktop Will Soon Ask for Donations
The next iteration of Plasma has reached the soft feature freeze for the 6.2 version and includes a feature that could be divisive.