On 1/29/20, Martin Decky martin.decky@huawei.com wrote:
Neither. The OS is NOT a Unix clone, but the Linux compatibility tries to be as tightly integrated as possible. Unfortunately, I cannot go into details. Windows Subsystem for Linux version 1 (not version 2) has had a similar goal, but we target even tighter integration. Of course, it is a delicate balancing act, as I try to explain below.
Even if it's more tightly integrated, it's still a penalty box IMO if it's a second-class citizen within an incompatible native environment (which few people are going to port anything to no matter how good it is because any new OS is going to have limited market share, leaving pretty much everyone to just write Linux programs, much as with OS/2 and Windows back in the 90s).
Unfortunately, a bitter truth is that there will never be a better Linux than Linux.
From my experience, designing an inherently better (i.e. more robust, more safe, more secure, etc.) OS with a microkernel design and at the same time having an almost complete compatibility with a legacy OS of a completely different design (e.g. Linux, Unix) is inevitably corrupting both goals.
What about QNX? It's one of the most practical and successful microkernel OSes in the world and it's natively Unix-like. It's not perfect, but none of those imperfections are really inherent to the Unix-like architecture. Pretty much every other OS developer seems to ignore it though. I really don't get why that is.
UX/RT will more or less just take QNX's general architecture and enhance/fix a lot of things. Assuming it is successful, it will only be the second working QNX-like OS other than QNX itself of which I am aware (VSTa was the first QNX-like OS besides QNX itself that I am aware of, but it is now abandoned).
What do I mean by this? Having some kind of compatibility layer for running unmodified legacy programs is certainly a nice feature, but it should be a last resort option, not a first-class option for a microkernel-based system. We simply need to draw the line somewhere and cut ourselves from the legacy ideas that are no longer useful [1]. There are viable ways (i.e. virtualization) for running 100% genuine Linux on top of a microkernel-based OS without compromising the microkernel design.
UX/RT won't just be a legacy-misfeature-for-legacy-misfeature compatible reimplementation of conventional Unix on a microkernel. There will be a lot of longtime Unix features that it will either throw out completely (e.g. setuid executables, binding of device nodes by major/minor numbers, utmp) or reimplement on top of new APIs (e.g. fork, which will be be built on top of an API that allows creating a "blank" process and manipulating its state, and BSD sockets, which will be reimplemented on top of a filesystem-based API sort of like that of Plan 9). Even though it will be superficially familiar-looking in a lot of ways, it will still be quite different from conventional Unix.