I told him that POSIX has been essential in the success of Linux and continues to be important for portable software. He doesn't accept this and stands by his statement. I don't know enough about POSIX to continue refuting him. I wonder what you guys say about this? Is he completely full of it(I think so) or does he have a point? And what are these "dark ages" he speaks of I wonder? Does anyone consider the late 80's/early 90's to be "dark ages" in computing?
Pretty much all software (and laws) designed before we knew how computers would be used could be described that way. Sadly, short of writing a new modern operating system from scratch, the current operating systems we have are as good as it is going to get. Improvement will happen gradually, at least.
Does anyone consider the late 80's/early 90's to be "dark ages" in computing?
POSIX today is http://pubs.opengroup.org/onlinepubs/9699919799/ . the 2013 edition. Granted it's a little behind the times since it includes a C99 compiler and specifies and extends the C99 standard library, rather than C11.
I think it is true in a way that by choosing compatibility with the rest of the world, Linux prevented itself from delivering major innovations in operating systems design. If anything, it was seen as regressive already when it was created (the new fad of that decade was microkernels). Had it chosen to focus on innovations, it would've been just another Plan9 or BeOS, and *BSDs would've retaken the world after the SCO lawsuits.
Linux isn't a POSIX compliant kernel. It implements all (?) of the POSIX interfaces (because it can, but doesn't pay to be compliant) but it suggests use of epoll over things like select or poll. Just because it does implement POSIX doesn't restrict Linux from implementing nothing but POSIX interfaces.
In particular though, some POSIX interfaces can be bothersome. For instance, some people argue over the basic fact that there is no integral id for a POSIX thread, despite every modern OS using an integer-based id for threads . I personally have had nightmares over signalling and threading. The AIO interface has been a flop with no one really caring to address why it's a flop.
There's also very weird interfaces like "alphasort". This is used for alphabetically sorting directory entries. Why does this belong in a system interface? It doesn't. The POSIX consists of the entire C programming library. If you didn't realize, POSIX isn't meant to make programming easier, it's supposed to be a simple standard interface to the system, something an application wouldn't be able to do on its own like native threading, signals, or networking. Not parsing a string and printing variables into a console. printf should sit on top of something POSIX exposes. POSIX itself shouldn't encompass printf. That's how I feel anyways... We have an entire math library in POSIX because it decided to swallow C99 up, as if that would somehow make things easier or simple.
Just because it's what people have used for years and most people call it good, doesn't make it so. I don't like when people treat things with unreasonable respect because it doesn't leave room for improvement or even for criticism. Regardless of a software's history, sentimental value doesn't make anything better in the world of logic. POSIX isn't bad and is still very relevant today. It's adapting but where POSIX lacks, you'll often see the *BSDs and Linux making their own interfaces (like epoll).