To quote from Jon’s post:
There have been heated discussions on this list about
kernel API bloat. In my
opinion, these discussions have mainly been people grumbling about what they
don't like. I'd like to flip the discussion around to what we would like.
Ken and Dennis did a great job with initial
abstractions. Some on this list
have claimed that these abstractions weren't sufficient for modern times.
Now that we have new information from modern use cases, how would we rethink
the basic abstractions?
I’d like to add the constraint of things that would have been implementable
on the hardware of the late 1970’s, let’s say a PDP11/70 with Datakit or
3Mbps Ethernet or Arpanet; maybe also Apple 2 class bitmap graphics.
And quote some other posts:
Because it's easy pickings, I would claim that
the socket system call is out
of line with the UNIX abstractions; it exists because of practical political
considerations, not because it's needed. I think that it would have fit
better folded into the open system call.
Somebody once suggested a filesystem interface (it certainly fits the Unix
philosophy); I don't recall the exact details.
And it was done, over 30 years ago; see Plan 9 from Bell Labs....
I would argue that quite a bit of that was implementable as early as 6th
Edition. I was researching that very topic last Spring [1] and back ported
Peter Weinberger’s File System Switch (FSS) from 8th to 6th Edition; the
switch itself bloats the kernel by about half a kilobyte. I think it may be
one of the few imaginable extensions that do not dilute the incredible
bang/buck ratio of the V6 kernel.
With that change in place a lot of other things become possible:
- a Kilian style procfs
- a Weinberger style network FS
- a text/file based ioctl
- a clean approach to named pipes
- a different starting point to sockets
Each of these would add to kernel size of course, hence I’m thinking about
a split I/D kernel.
To some extent it is surprising that the FSS did not happen around 1975, as
many ideas around it were 'in the air' at the time (Heinz Lycklama’s peripheral
Unix, the Spider network Filestore, Rand ports, Arpanet Unix, etc). With the
benefit of hindsight, it isn’t a great code leap from the cdev switch to the
FSS - but probably the ex ante conceptual leap was just too big at the time.
Paul
[1] Code diffs here:
https://1587660.websites.xs4all.nl/cgi-bin/9995/vdiff?from=fab15b88a6a0f36b…