Plain Text

I've been interested in computers since I can remember.

Not Long Ago, in Minneapolis…

When I was very young, my family acquired an Apple II that was used, at first, for managing family finances (this was the VisiCalc era). Later, a collection of games filled the remaining space in the plastic box that held all of our 5.25” diskettes. I was fascinated by this machine that seemed to be able to do anything. I played a lot of games on that machine, but I also learned to program in BASIC.

In the 90s, my friends and I were building computers from parts, setting IRQ pin jumpers on ISA cards. A friend introduced me to a local BBS. I remember learning my modem's AT command set so I could dial in, and then the arcane commands used to navigate the Citadel BBS. Though these commands weren't intuitive, I was impressed by the efficiency of the text interface.

When I started developing software professionally, I was working on systems that were accessed through a text terminal or terminal emulator. I appreciated the speed and efficiency of these text-based interfaces. I also learned to love using the keyboard shortcuts within Windows and in my editor. Many of the projects I worked on allowed relatively ancient systems to serve up web pages though a modern web server. Packaging a handful of string values in an HTML page added a lot of overhead to each interaction and string concatenation was one of the most expensive operations in this particular system. I secretly felt bad for all the back-office users that would have to give up their efficient text interface for a much slower web interface – all in the name of progress.

Getting Real

Clearly, I'm a nerd with warm and fuzzy feelings about text-only interfaces, but there are plenty of rational reasons to love plain text.

It's the universal format.
Just about every system includes a text viewer and/or editor. Yes, text encoding conflicts happen (you're using UTF-8, right?), but they won't render a document unreadable. The same can't be said for some proprietary word processing applications that can't open their own files from more than a few versions ago.
It's future-proof.
Formats have come and gone, but text endures. Why commercial software applications don't embed a plain text copy of your content into the file is left as an exercise for the reader.
It's accessible.
Even the most inexpensive setup with a screen and keyboard can be used to create/consume text. Plain text is accessible to those using screen readers or needing large/high-contrast displays.
It's space-efficient.
Like, crazy space-efficient. Compare a plain text file to a Word document or PDF with the same content. Plain text also compresses really well.
It's easy to manage.
With a simple format like plain text, you can use tools like git and diff to track changes to a document over time. That's a lot harder if a file contains a bunch of proprietary formatting. Compare Word's Track Changes feature to the diff-based feature in draftin.com.
DIY it yourself.
Proprietary formats are not friendly to budding programmers or anyone interested in learning how things work. Plain text is easy to manipulate with basic tools, or with more sophisticated suites like GNU.

There is a plethora of tools that do everything from editing, to-do lists, email, typesetting, converting to other formats (see pandoc), journaling and logging, creating diagrams, and organizing information. Doing all of this in a capable shell, like bash, allows you to string tools together to do creative and useful things.

Looking Ahead

At SDF, I see a lot of folks who are dissatisfied with the current state of consumer tech. They want to be in control of their technology and not the other way around. There's a feeling that we need to turn back the clock in order to move forward. To the extent that that's true, I think plain text has a significant part to play. I think it is also true that moving forward means creating new things. New technologies can be used to remake the web as infrastructure for the common good. For a time, the old system and the new system will co-exist. How people choose to use them will determine the role these technologies play in our society. Plain formats work well with available tools, resist lock-in, and play well with a DIY ethic.

Yes, I'm nostalgic for the past, but there are practical applications of these tools for those interested in a creative approach. Many software tools start out as text-only and retaining the flexibility of a text interface is important. Makers, hobbyists, and others who are interested in taking part in creating our digital future need to understand how these tools work, and need the ability to use existing tools in new, creative ways. A sealed, proprietary system doesn't achieve that.

+++ATH