On Mon, Feb 08, 2021 at 10:58:08PM -0500, M Douglas
McIlroy wrote:
Do they
*really* want something which is just V7 Unix, with nothing
else?
No TCP/IP, no hot-plug USB support? No web browsing?
Oh, you wanted more than that? Feature bloat!
Feature bloat!
Feature bloat! Shame! Shame! Shame!
% ls /usr/share/man/man2|wc
495 495 7230
% ls /bin|wc
2809 2809 30468
How many of roughly 500 system calls (to say nothing of uncounted
ioctl's) do you think are necessary for writing those few crucial
capabilities that distinguish Linux from v7? There is
undeniably bloat, but only a sliver of it contributes to the
distinctive utility of today's systems.
Well, let's take a look at those system calls. They fall into a
number of major categories:
*) BSD innovations
*) BSD socket interfaces (so if you want TCP/IP... is it bloat?)
*) BSD job control
*) BSD effective id and its extensions
*) BSD groups
*) New versions to maintain stable ABI's, e.g., (dup vs dup2 vs dup3,
wait vs wait3 vs wait4 vs waitpid, stat vs stat64, lstat vs lstat64,
chown vs chown32, etc.)
*) System V IPC support (is support for enterprise databases like
Oracle "bloat"?)
*) Posix real-time extensions
*) Posix extended attributes
*) Windows file streams support (the original reason for the *at(2)
system calls -- openat, linkat, renameat, and a dozen more)
Ok, that last I'd agree was *pure* bloat, and an amazingly bad idea.
But there are plenty of people who have bugged/begged me to add
windows file streams because they were *convinced* it was a critical
feature. And I dare say bug-for-bugs Windows compatibility was worth
millions of $$$ of potential sales, which is why they agreed to add it
--- and why I kept on getting nagged to add that feature to ext4 (and
I pushed back where the Solaris developers caved, so there. :-)
As for things like System V IPC support, that was only added to Linux
because it was worth $$$, because enterprise databases like DB2 and
Oracle demanded it. Is that evidence of "cancer"? You might not want
it, but that's a great example of "one person's bloat is another
person's critical feature".
Or consider the dozen plus BSD sockets interface, which if removed
would mean no TCP/IP support, and no graphical windowing systems.
Critical feature, or bloat?
But hey, if you only want V7 Unix, why are you complaining? Just go
and use it, and give up on all of this cancerous new features. And I
promise to get off of your lawn. :-)
There's no reason any of that has to be implemented with primitives
though. All of that could be implemented on top of normal file APIs
fairly easily.
Also, sockets are not the ideal interface for a window server IMO. The
only reason they are used is because conventional Unix didn't provide
user-mode file server support until fairly recently (and the support
that's been added to more recent conventional Unices is a hack that
has poor performance and isn't used all that much).