So, first, I'm not here to argue about the merits or lack thereof of the
Unix model as I described it. I am just trying to explain my view of what
the Unix model was. Since this is the TUHS, I'm trying hard to avoid things
related to LUHS, or 9UHS :-)
So, nope, I'm not responding to the comments that I see as out of scope of
TUHS. Lack of response does not indicate agreement :-)
But it got me to thinking: what aspects of the Unix model did not age well?
It's certainly aged remarkably well for 50 years. But what would we do
differently? I'm glad that at least one subsequent effort -- by the guys
who invented these things as it happens -- fixed most of the list that
follows.
Without further ado, and based on the v6 system call set, which is where I
came in (I'm biased) ...
Device special files. These gave us the situation we have today with major
and minor numbers. I deal with it daily. I wish I did not have to. And we
don't need them.
ptrace -- there's much better ways to do what ptrace does.
Open which combines walk and open. Linux at some point added O_PATH, which
is very nice, as it lets you get an fd for a file but not actually open it,
and 9p has walk and open, but sadly plan 9 never exposed them; it just has
open which does both. There's two kernels I'm involved in which will be
breaking open out into walk and open. But who knew 50 years ago you'd want
two ops, not one?
ioctl.
unidirectional pipes. Bidirectional pipes are so much nicer.
errno. Once you get used to getting an error string from the kernel, with
detailed information, errno just drives you crazy.
integer user ids. Totally reasonable approach pre-networking on 16-bit
machines, but think of the amount of trouble that integer user ids give us.
There was a time when a file name was just an integer, and we'd never
accept that now; why do we still accept an integer for a user name?
root user.
and the big one ....
fork.The amount of abuse I've seen heaped on fork over the years is pretty
amazing. I always found it convenient, but at the same time, how much
effort have we expended as we move from processes with 16 or 128 4k pages
to processes with, in some cases, millions of fds and pages? How many gray
hairs has fork caused you over the years? Would you pick something else?
What do you see that you think could be done differently, given 50 years to
look back?