What really is a UNIX-like OS?
Ok, i think the answer for this question is uncertain and doubtful. There is something in GNU/Linux, FreeBSD, Solaris/OpenSolaris, MacOSX, AIX, that i really like, but i don’t know what it is. Sad, but true. All that OS have a deep, really deep relation with each other, but wich is? Unix was the “magic word” sometime ago, but is more marketing than anything, costs a lot of money, and is just a trademark right now. So, many of the OS that i like are not UNIX ’03 certified. First problem, i can’t say i like UNIX OS, is not wrong, but not totaly right. Microsoft(MS) Windows is not UNIX, but GNU/Linux, OpenSolaris, and FreeBSD are not either.
POSIX (IEEE 1003) was born like a government requirement for make business, so needless to say that Microsoft Windows is POSIX compliant. Here you can see another side of the problem: POSIX compliant OS is not something i can say that defines the characteristics that technicaly makes me choose Solaris or *BSD, because besides Microsoft Windows be POSIX compliant, there are a lot of concepts in MS windows that i don’t like and are totaly different from the other OS that i do. And seems like POSIX is going in the same direction as UNIX, that is why i think many OS are choosing the Single UNIX Specification, as a OPEN and FREE standard, and maybe that is the UNIX-like definition. But that is the formal answer? Why MS Windows is not a UNIX-like OS?
So, i ask for your help to solve this question, i know you are out there, leave a comment and explain me: What is the definition that separates MS windows from the others, and what is the common and exclusive features of the other OS’s? Unix-like is the answer?
Windows is POSIX-Compliant in so far, as that it provides a personality with all POSIX semantics. You’re not usually exposed to it, and it’s not generally used, unless you’re using SFU (Services for Unix), which is a separate package (though Vista seems to have integrated it for some editions).
I don’t think that UNIX should be defined by its APIs (POSIX, SUS, whatever), and here’s why: the common set of APIs of all unix-like systems basically boil down to some reasonable subset of the C standard library. Everything else might or might not be present in any unix-like system.
So what’s the similarity between the Operating Systems you listed above? Except for Mac OS X, it is (at least):
1. A stacked approach (kernel, libc, X11, Desktop Framework/Libraries, Applications) where some parts can be replaced (“Desktop Framework” and up), and where the lower layers are exposed as is.
2. The “one tool for a job” and “few axioms” concepts. You get lots of small tools which you can combine with a limited set of operators (eg. pipes) to do powerful stuff. It got somewhat compromised over the years (eg. “Everything is a file” doesn’t apply entirely to BSD sockets)
Windows (and the ObjC stuff in OSX) try to give you powerful tools that do many (related) things, but aren’t so easy to combine by yourself. They also tend to hide lower-level stuff when used within higher-level environments (which I actually consider a good thing. I have no need for managing zero terminated strings in desktop coding)
Mac OS provides these “Unix-like” properties, but also a mostly separate Desktop Environment and API, but I don’t know if that affects you, as that depends on how you interact with the desktop stuff, so if you’re just a GUI user (vs. developing native GUI stuff on OSX), it would fit in the description above too, due to the BSD subsystem it exposes.
With SFU (or cygwin, if you prefer a more GNUish than POSIXish system) you’d get pretty much the same experience on Windows, too (Unix-alike environment within an alien GUI system).
For me it’s the filesystem heirarchy that makes an OS Unix-like…
A “UNIX-like” OS is an OS that IS NOT UNIX, but reminds of UNIX in that it behaves similarly to it.
A GNU/Linux based distribution forms a “UNIX-like” operating system, yet is not a UNIX system.
Some of the things that an OS must satisfy to qualify for being a UNIX system:
– POSIX compliance: XPG4 / XPG6, POSIX.1003
– SUS or UNIX93 or UNIX95 or UNIX98 compliance
– System V or BSD compliance (although there is no formal BSD specification, that I know of)
A system would have to satisfy at least one of each criteria on the list to qualify for being a UNIX system; in addition, it would have to be tested and certified for such compliance.
Finally, under such criteria, there can not even be a remote possibility to label UNIX systems as being “UNIX-like”. They are certified to comply, which means they satisfy the requirements to be a UNIX system. That excludes them being “UNIX-like”, because they ARE UNIX.
Nice BLOG!