User:Sortie/Yes Another Unix Clone

From OSDev Wiki
Jump to navigation Jump to search

I occasionally encounter the statement

Really, another Unix clone?

in the replies to announcements of hobbyist operating systems. This always rubbed me the wrong way, and I'd like to examine why.

You are being rude

Developers that went through the effort to make and publish their work deserve recognition. They did the work for their own reasons. If you post a comment like that, you implicitly carry the connotation that their effort is wasted and rudely dismiss it. Surely you don't comment on other projects "Meh, should have used Lisp instead of PHP". Do you submit such remarks to the Linux kernel mailing list? Hobbyist operating systems development is seriously under-appreciated whenever someone publishes their work.


You are also entirely offtopic. You are advancing your own agenda and the only thing your comment has to do with the operating system is the useless fact that it has at least some Unix compatibility. Have you even tried it out? Read the code? Cared to comment on anything unique?

Personal Utility Function

Hobbyist operating systems developers do the work for their own personal reasons. If they want to clone MS-DOS, that's up to them. Likewise if they want to make an xkcd 528 compliant operating system or even be POSIX compatible. Some people are in it for the fun, or perhaps to learn, or even challenge themselves. You don't get to tell them what to do. Try instead help them achieve what they really want rather than being helpfully unhelpful.


There's also the common variant

Another Unix clone, where is the innovation?

as if being compatible implies an inability to innovate. That's definitely not the case. If you provide a C interface, modern POSIX is a very reasonable and minimal system interface. The odd awful parts are generally optionally for this reason, and it's even possible to be compatible with the subset of POSIX that you happen to like. The system interface is actually a rather limited part of the operating system, the rest of the system is generally unconstrained.

You can still be a microkernel or a distributed networked system. You can add address layout randomization and remote procedure calls. You can still add a new interpreted/compiled language or multiple operating system personalities. If you want to be of higher quality and security than Linux that's entirely feasible.

But who actually needs innovation at the operating system interface level? By design it's boring primitives that can be used to do interesting stuff. If you create your own system interface, your result will likely be equivalent but different. A custom design should at least be an order magnitude better than POSIX to be worthwhile.

But perhaps there actually is an actual issue of lacking innovation. Somehow, there are things that must be innovated at the operating system level, which all the application level software has failed to do. It turns out to be a major problem for society. Why are you discussing this in a topic about a hobbyist operating system? Go gather evidence, find out what things needs to be innovated, and make your own serious debate separately.

Custom Designs

Let us assume that the developer takes your suggetion and attempts to make a wholly new operating system design. Surely the POSIX API has to go. A lot of concepts probably needs to be rethought. The C programming language is probably unsuitable, why not create a new programming language that better fits the new operating system? Then we need to create a new compiler or interpreter. We need to write a lot of core software from scratch. Design mistakes have to be identified and revised. When you are finally done, you are an expert in a custom operating system, and all that knowledge is useless unless you managed to gain market share.

But that's a wholly different project than the developer set out to do and it is a couple of magnitudes more work. This kind of operating systems work is impressive, no doubt, but it's also some of the very hardest. The developer has a different utility function than you.


Implementing POSIX has a lot of advantages for hobbyist developers. It gives them a concrete interface they have to implement, a framework to work within. That's useful and lets them know whether they have reached some level of completeness.

Secondly, API compatibility allows porting a lot of third party software. Porting a libc or compiler is a serious short cut if you want to achieve self-hosting status in a modest timeframe. It's really an accomplishment to do this even if straightforward in principle. Implementing a known API makes the system more familiar to users and potential contributors. You get a lot of system documentation for free. If you build a POSIX system, that shows you really do know POSIX. That's a big plus and knowledge that's actually useful in the real world. So: Yes. Another Unix Clone.