Over 35 years ago, these problems with software portability led to the emergence of the first POSIX standard in 1988. The acronym was coined by Richard Stallman, who added “X” to the end of Portable Operating System Interface. It’s meant to provide a specification of the interface that different Unix operating systems should have in common, including programming languages and tools. It’s important to note that the interface is portable, and not the implementation.
↫ vorakl
While POSIX certainly isn’t perfect, and support for it in various operating systems claiming to support POSIX even less so, there’s no denying its success. Even if the dream of 100% source code portability isn’t possible under POSIX for applications that are a little more complex than basic CLI tools, there’s enough portability that platforms like Linux, the various BSDs, macOS, and others, can share quite a bit of code.
One of my favourite things about POSIX is that it shows up in the most unexpected of places. Windows, for instance, has had various options for POSIX compatibility, some of which straight from Microsoft itself, like the currently well-known Windows Subsystem for Linux, but also mostly forgotten options like the Microsoft POSIX subsystem that shipped with Windows NT until Windows 2000, or the very rudimentary POSIX compatibility in the Windows C Runtime Library and Windows Sockets API.
OS/2 had POSIX compatibility as well, through EMX (Eberhard Mattes eXtender). It gave OS/2 – and MS-DOS – a POSIX API, and even provided access to native OS/2 APIs as well, and could run 32bit applications. You’d be surprised by how many more operating systems offered forms of POSIX compatibility, either out of the box or through first or third party add-ons.
Good old BeOS was one of them.
https://birdhouse.org/beos/byte/29-10000ft/
AmigaOS (and so MorphOS) with ixemul.library was/is another.
Posix was so successful that it is almost unquestionable.
I mostly love POSIX and it has indeed been a massive success. I mean, Linux is essentially a POSIX implementation and that is largely how it was possible to implement it to begin with. Certainly it is why Linus was able to concentrate mostly on the kernel and just inherit a tonne of software that would run on it ( like GNU ).
POSIX is basically the reason that niche operating systems like Haiku or even SerenityOS can have such large application catalogs. You can run more stuff on Haiku than you can on OS/2 ( today ) and certainly way more useful software than was available for OS/2 when it was trying to compete with Windows.
Many people say that OS/2 failed because it ran DOS and Windows software too well. Few OS/2 specific applications were ever written. If you are just running Windows software anyway, why not just run the real thing?
The same is still true. It is amazing that Haiku can run GIMP, LibreOffice, and the Falkon web browser. It makes it much more credible as a daily driver if you are a hardcore Haiku fan and want to do that. But how many people are going to switch to Haiku to use LibreOffice? Why not just use Linux?
And that is the thing. Every “standard” seems to attract a dominant player. On the web, it is Chrome. For POSIX, it is Linux. These days, you do not so much run POSIX applications as you do Linux ones. Look at Haiku, they implemented Wayland. FreeBSD is doing the same. Why does FreeBSD need a Linux compatibility layer? Don’t FreeBSD and Linux both run POSIX?
> If you are just running Windows software anyway, why not just run the real thing?
Basically that’s how I got back to having Linux as my daily driver. I spent almost all time in wsl or in software that is also running on Linux