[TUHS] tabs vs spaces - entab, detab

Norman Wilson norman at oclsc.org
Sat Mar 6 08:50:47 AEST 2021

I could chip in with my own strong opinions about code formatting,
but I think others have already posted plenty of such boring off-topic

A straight answer to Will's original question might be interesting,

The oldest extant UNIX code samples I know are those the TUHS archive,
in Distributions/Research/Dennis_v3/nsys.tar.gz; they're a very old
kernel source tree.  There are plenty of tabs there.

This matches my memories of the V7-era source code, and of what I saw
people like ken and dmr and rob and bwk and pjw typing in the not-
so-early days of the 1980s when I worked with them.

Tabs were generally eight spaces apart.  In code, nobody worried about
the effects on long lines, because the coding style was spare and
didn't run to many deeply-nested constructs, so lines didn't get that
long.  (Maybe it was considered a feature rather than a bug that
deep nesting and deep indentation looked messy, because it wasn't
usually a good idea anyway.)

I can't speak to original motivations, but I suspect my own reasons
for using tabs aren't too different:
-- It's quicker and faster to type than multiple spaces
-- When not at the start of the line, tabs more often preserve
alignment when earlier part of the line are edited
-- Back when terminals were connected at speeds like 110 or 300 bps
(I am old enough to have experienced that, especially when working
from home), letting the system send a tab and the local terminal
expand it was a lot faster, especially when reading code (more likely
to have lots of indentation than prose).  Not every device supported
tabs, but enough did that it made a real difference.

UNIX didn't originate any of this.  I used tabs when writing in FORTRAN
and ALGOL/SIMULA and MACRO-10 on the TOPS-10 system I used before I
encountered UNIX.  So did all the other hackers I knew in the terminal
room where we all hung out.

I don't know the history of entab/detab.  Neither appears to have
been around in the Research systems; they're not in V7 and they're
not in V10.  V7 does.

As an aside, the V10 manual has a single manual page for col, [23456],
mc, fold, and expand.  It's a wonderful example of how gracefully
Doug assembled collections of related small programs onto a single
page to keep the manual size down.  Also of his gift for concise
prose: the first sentence is

These programs rearrange files for appearance's sake.

which is a spot-on but non-stodgy summary.  I wish I could write
half as well as Doug can.

And as an almost-joke, it's a wonder those programs haven't all been
made into options to cat in modern systems.

Norman Wilson
Toronto ON

More information about the TUHS mailing list