Down with monospace and the TTY layer

Ah-hem. I meant to say Death to monospace and the TTY layer.

—Who radicalised you?
—The 70s, man.

This article primarily serves as an overview, for those who are similarly inclined.

Preface

First, I assert that monospace (fixed-pitch) fonts are hard and unpleasant to read, and that for decades now there has been no good reason to keep inflicting this relic on users. Even if these users are mostly developers. Developers are people and deserve humane treatment.

Further, I assert that terminal emulators—​which use these monospace fonts—​have grown into an absurd joke regardless, and should have largely disappeared a long time ago—​if only we weren’t both completely incompetent as an industry and apathetic as people.

I’m not going to bother supporting these assertions here. If you agree, you agree.[1]

Illustrated

I can push the point across more simply. These are the same thing, only minimally iterated upon:

Teletype Model 33
DEC VT100
macOS Terminal.app

The Teletype Model 33 on the left is from 1963. 60+-year-old technology, in heavy use today, due to getting ossified within UNIX and its derivatives. The fixed character grid is a purely technical limitation carried over.

Meanwhile, here is a research computer from 1973. 50+ years old. Fully graphical. You can reprogram the environment from within itself in real time.[2] Its main problem was cost.

Xerox Alto
Smalltalk GUI

NeXT, Inc. later decided to combine the two concepts—​UNIX and Smalltalk—​into what’s now called macOS. It’s an automobile towing a horse.[3]

And to Hell with ASCII too

We take ASCII for granted, but we’re stuck with some extremely weird basic glyphs and key meanings for the rest of computing history. For example, the underscore (_) is there purely for formatting, the backtick (`) purely for diacritics (it has no stand-alone sense, yet it’s now an important spacing character), and the hyphen-minus (-) doesn’t know what it is. The backslash (\) is a bizarre invention for approximating ∧ ∨ as /\ \/, funnily shown as ¥ or ₩ in Japanese or Korean Windows instead.[4]

Strong typewriter legacy. Admittedly, the diacritics set ("',^`~) is useful for the compose key mechanism, even if you don’t use a teletype. I need neither a German keyboard layout, nor a Unicode selector to add a few umlauts.[5]

Also see: Sir, Please Step Away from the ASR-33!

A sigh

I deeply enjoy good typography. I like graphical user interfaces. Yet I punished myself with years of terminal-heavy Linux usage. At the same time, GNOME kept pulling the rug out from under me and made the GUI parts of the system unbearable.[6]

Enough is enough, and I’m on my way to figuring this out.


Proportional history

Places where variable pitch was used in programming contexts. The general observation is that we gave up on modernity in the 90s.[7]

Editors, environments

It largely points towards Xerox PARC (which strongly influenced 1. Steve Jobs; 2. Niklaus Wirth, who then influenced Rob Pike[8]).

I wish I could find more. Alas.

Intermezzo: Unusual shells

These also qualify, in their own way:

Books


Problems of variable pitch in programming

The primary problem is that we put pre-typeset code and markup in source files, following semi-arbitrary, often locally invented standards. The formatting should instead happen automatically, and tabs vs spaces should not be a question.

Line length limits

The magic number of 80 originated in punched cards, although that’s not important.

Alignment

Fonts

Miscellaneous

Meta-problem: other people

Solutions


Situation as of today

With the assumption that you want to keep on using major operating systems, and popular programming or markup languages.

Editors

Say goodbye to Vim—​gVim doesn’t know what to do with proportional fonts. Luckily, many programming editors and IDEs with decent Vim emulation handle them just fine:

Fonts

Programming language

As an aside, the Go programming language is notably well suited to editing in something like the Acme editor, used by at least Rob Pike and Russ Cox:

It still has gofmt’s space alignment problem but making an appropriate filter program to adjust sources on load is made easy: the go/printer package may only need RawFormat toggled. It’s elastic tabstops from there.

Terminals

If you don’t feel like using Plan 9 or plan9port, you’re basically out of luck if you’re looking for something comprehensive. Too much of our current systems depends on the old ways, in one way or another—​including basic programs like cal, ls, wc, or command line shells. You ideally want a separate REPL.

These are misguided or useless:

If it’s important to be able to run software remotely in a terminal, as well as locally in a way that doesn’t make your eyes bleed, you can use a hybrid model. At least that’s what I did with my terminal/X11/AppKit MPD client and terminal/X11 IRC client frontend. It’s a compromise, mind you—​the terminal will constrain you severely. Also, Wayland is a pain, because it can’t draw for you. A cleaner solution would be to define a new terminal protocol that translates to either version, rather than to special case in the program. It gets harder the higher you aim.

MPD client
IRC client frontend

About terminals and shells


1. It was revealed to me in front of a computer.

2. If you load Smalltalk, which was one of the first applications for the Alto.

3. This was at least to some extent recognised at its inception.

4. Yes, they will show C:₩Users₩Administrator.

5. At least Linux coöperates like that; one would be naïve to think macOS offers it as well. I miss this mainly with proper typographical characters, such as – — ‘ ’ “ ” ° ² ³ €.

6. I had a friendly and pretty system back in 2011. Then I suddenly didn’t.

7. Meanwhile, I personally reject a lot of ‘modernity’ within the realm of GUIs. This hypocrisy doesn’t escape me, though I have my reasons.

8. I asked: ‘Wirth was a friend I met through work and I visited him and ETH a number of times, and spent perhaps two weeks total there actually using their systems.’

9. It stored paragraph formatting after a ^Z character. Compilers skipped it, similarly to trailing comments.

10. Some people argue that making keywords bold, which dates back at least to the ALGOL 60 report from 1960, is stupid as well.

11. The font comes from the Lucida lineage, which was also used in Plan 9. It’s closer to the later Luxi family designed for XFree86. I find it very odd-looking. I can’t quite point out what’s so weird about it.

Comments

Use e-mail, webchat, or the form below. I'll also pick up on new HN, Lobsters, and Reddit posts.