[TUHS] Charles Forsyth on putting Unix on a diet.

Bakul Shah bakul at bitblocks.com
Sat Oct 28 12:00:44 AEST 2017

On Fri, 27 Oct 2017 23:51:12 +0200 Andy Kosela <akosela at andykosela.com> wrote:
> We don't even have to look at M$.  We can look at our own backyard and find
> the same pattern.  UNIX in the 70s was small and simple, the same way Linux
> kernel was small and simple in the early 90s.  Now it is a bloated,
> fat monster.
> It seems that it is very hard to avoid bloat in the software world in the
> long run.  Most people don't care, but the original UNIX and C, Plan 9 and
> Go projects could be one of the few I can think of that really cared about
> minimalism.  It is interesting to note that they were built by the
> very same group of people.
> Minimalism is the main word here.  If you read personal website of Charles
> Forsyth then you will notice he mentions it explicitly as his "overarching
> theme".  That is the secret key to beauty and elegance in the software
> world.

Minimalism as a goal has been long lost in the Unix world.
(Well, everywhere but at least Unix started out lean). Even
the generic FreeBSD kernel is 20MB or so (txtsize).  When you
add in all the loadable kernel modules, it is about 52MB[1].
Linux is of course more bloated. Plan9 is quite lean but other
than a few diehard fans no one uses it. Worse, its leanness
lessons have not been learned by any other OS.

I wish there was a way to evolve plan9 into a modern Unix.
Making an existing modern Unix diet into a lean OS is close to

A unix kernel boils down to a few subsystems: device drivers +
device switch, scheduling, VM, networking and network switch,
filesystems + filesystem switch, interrupt handling, process
management. Some graphics support. A bunch of this can be
pushed out of the kernel without much loss of efficiency.  And
may be the original design decisions of Unix need to be
revisited for 21st century hardware.

A comment on Charles Forsyth's paper. I saw most of his work
as essentially re-engineering (or perhaps just engineering).
This is actually pretty important and something we don't seem
to pay a lot of attention to. It is improving the fit and
finish of parts so that they fit well together. It is making
it easy to take things apart or put them together well.  It is
making diagnosis and repair easy.  Make reproducibiliy easy
etc. But we don't have a clear idea of what metrics to focus
on that will help this engineering.  Performance? Number of
lines of code?  Latency?  Energy used?  Maintainability?
Extensibility?  Curiously, what is most tangible to me not
what can be measured but a sense of aesthetics.


[1] FreeBSD has some strange things: if_bxe.ko (for the Qlogic
10GBe card) is 2+ MB (larger than zfs.ko)! May be due to
proprietary binary blobs? The next after zfs is a driver for
another Qlogic card.

More information about the TUHS mailing list