What makes an operating system "Unix-like"?

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
madanra
Member
Member
Posts: 149
Joined: Mon Sep 07, 2009 12:01 pm

Re: What makes an operating system "Unix-like"?

Post by madanra »

RharryR wrote:Really! Thanks for letting me know. I thought ELF was found in all Unix-Like operating systems :)
ELF didn't exist for the first ~20 years of UNIX :)
User avatar
max
Member
Member
Posts: 616
Joined: Mon Mar 05, 2012 11:23 am
Libera.chat IRC: maxdev
Location: Germany
Contact:

Re: What makes an operating system "Unix-like"?

Post by max »

physecfed wrote:First off, apologies if this leans more towards the OS Design & Theory forum; I hemmed and hawed over this for a few minutes but figured it'd be better posted here as it feels like it is much more macroscopic of a question.

I've heard many operating systems being referred to as "Unix-like" in that they descend from the original Bell source at least to an extent ("genetic UNIX") or that they take inspiration from the internal workings of Unix systems ("functional UNIX"); however, I'm at the planning phase of things where I'm trying to structure my (third) attempt at an operating system, so I would like a clear definition on what makes a Unix-like operating system able to carry that title. The Wikipedia article on the subject is of no help, simply stating:
Wikipedia wrote:There is no standard for defining the term, and some difference of opinion is possible as to the degree to which a given operating system or application is "Unix-like".
I'm no stranger to the notion of the POSIX/Single UNIX Specification standards, but this feels like a technicality more than a rule; having an operating system otherwise independent that simply adheres by means of POSIX compatibility feels like calling a cow that quacks a duck. It also doesn't seem like it depends on the kernel classification; GNU Hurd and MINIX are microkernels, whereas Linux, also "Unix-like", is monolithic in nature.

So, in a broader sense, what are the key, cornerstone philosophies that my OS/kernel should adhere to in order to properly be considered an operating system of the Unix tradition? Again, I'm at the planning stage of my new project, so there isn't anything yet in the way of an actual implementation, but this also means I have almost-infinite leeway with how I devise things.
When a cow quacks, then it's obviously not a duck but a very duck-like cow. ;)

I think there are two things that can make an operating system Unix-like. For one it's the internal workings as you said, but for that part, a lot of concepts are shared between a lot of systems and it doesn't matter that much how it is actually done in the background. The more important part for me is the "facade" that the OS gives to the user space. What standard libraries and interfaces are available, what concepts like everything-is-a-file are there, how are the syscalls structured, and how in general stuff is done in the system. If you develop an OS and focus on having a high compatibility to existing Linux/Unix software, then you will very likely build something that is Unix-like. Unix-Software often expects specific things, and if an OS mostly focuses on making that software run without probs, than it is Unix-like in my eyes.
Post Reply