Page 1 of 1

UX/RT and the Open XIOS Specification

Posted: Fri Jun 18, 2010 1:16 am
by andrew_w
I am planning to write a POSIX-compatible operating system, which will be called UX/RT (standing for Universally eXtensible Real Time operating system). I already have most of the general architecture planned out. It will be primarily targeted at desktop and some types of embedded use (especially handhelds). For the most part, it will be an evolutionary improvement on existing mainstream operating systems, incorporating the best features from several different systems. Wherever appropriate, existing code and interfaces will be incorporated, rather than "reinventing the wheel".

The initial target architecture will be standard PCs (with support for both 64-bit and 32-bit systems in one distribution); certain ARM-based systems will probably also be supported once the PC port is stable. UX/RT will be smaller than most other modern desktop-oriented operating systems but will have pretty much the same amount of functionality (largely due to better layering and better integration than typical Unices).

UX/RT will be microkernel-based with a multi-server core. Much of the system will be written in Objective-C, with a significant amount of plain C as well. The kernel will be a fork of an existing real-time L4 kernel. The multi-server core will resemble QNX and Plan 9, with all non-kernel services implemented as servers providing file interfaces. A form of capabilities-based security will be essentially the only security mechanism implemented. The POSIX API and command-line environment will resemble those of Linux, and Linux binary compatibility will be available. The standard window system will be original, and wil be sort of like a cross between Rio and X (X will also be available, but it won't be the primary window system because it is too bloated and its socket-based interface won't fit into UX/RT's device-file-centric architecture). The desktop environment will somewhat resemble that of OS X, and will be based on GNUstep. It will implement compound document and application embedding support sort of like that of BTRON or OpenDoc (I want to bring the some of the modularity and flexibility of the Unix command-line environment to graphical applications).

Along with UX/RT, I will also create a new firmware standard called the Open XIOS Specification (XIOS stands for eXtensible Input/Output System; it is also a reference to MP/M's XIOS, which was an I/O layer for a more advanced OS, as opposed to the CP/M BIOS that was an I/O layer intended for a very simple OS), which will be based on paravirtualization. Firmware based on this specification will include a low-level driver for each device. There will be a standard interface for each class of device that all drivers for a class will implement (these interfaces will be functionally equivalent to real hardware interfaces but will be vendor- and implementation-neutral), and compatible operating systems will be written for these abstract interfaces rather than real hardware (therefore XIOS-compatible operating systems will only have one driver for each class of device, and all XIOS drivers will be compatible with all XIOS-compatible operating systems). UX/RT will run exclusively on top of XIOS-compatible firmware, and the PC version will include a disk-based implementation (which will also be available separately for use with other XIOS-compatible operating systems).

I am planning to start a SourceForge project for UX/RT and its XIOS implementation soon, but I am not quite sure when I will start coding (I am still in the process of researching certain things).

Re: UX/RT and the Open XIOS Specification

Posted: Fri Jun 18, 2010 4:27 am
by gerryg400
Careful how closely you 'resemble' QNX. They have a patent that covers a good deal of their "Distributed kernel operating system".

Re: UX/RT and the Open XIOS Specification

Posted: Fri Jun 18, 2010 10:16 pm
by Brynet-Inc
gerryg400 wrote:Careful how closely you 'resemble' QNX. They have a patent that covers a good deal of their "Distributed kernel operating system".
It's a good thing that Software Patents aren't legal.

Re: UX/RT and the Open XIOS Specification

Posted: Fri Jun 18, 2010 10:46 pm
by gerryg400
It's a good thing that Software Patents aren't legal.
Not sure what you mean by that. There are patents in many countries that attempt to protect an invention that is wholly or partly implemented in software. The fact that infringing one of these patents can land you to court is a problem.

However if you were suggesting that the patent system is flawed, stupid, unhelpful and should be dismantled, then I agree.

Re: UX/RT and the Open XIOS Specification

Posted: Sat Jun 19, 2010 7:45 am
by Owen
gerryg400 wrote:
It's a good thing that Software Patents aren't legal.
Not sure what you mean by that. There are patents in many countries that attempt to protect an invention that is wholly or partly implemented in software. The fact that infringing one of these patents can land you to court is a problem.

However if you were suggesting that the patent system is flawed, stupid, unhelpful and should be dismantled, then I agree.
There are patents in many countries, sure, but thy don't hold up in court. Except for in Germany, software patents are unenforcible in the EU.

Re: UX/RT and the Open XIOS Specification

Posted: Sat Jun 19, 2010 9:13 am
by gerryg400
There are patents in many countries, sure, but thy don't hold up in court. Except for in Germany, software patents are unenforcible in the EU.
So, are you advising the OP to ignore the QNX patent ?

Re: UX/RT and the Open XIOS Specification

Posted: Sat Jun 19, 2010 12:06 pm
by Owen
gerryg400 wrote:
There are patents in many countries, sure, but thy don't hold up in court. Except for in Germany, software patents are unenforcible in the EU.
So, are you advising the OP to ignore the QNX patent ?
That depends. We don't know where he is, where he intends to sell to, etc...

Re: UX/RT and the Open XIOS Specification

Posted: Sat Jun 19, 2010 2:20 pm
by andrew_w
UX/RT isn't going to be a QNX clone at all. The general architecture will be somewhat similar to that of QNX in places, but the specifics of the VFS and message passing interfaces will be rather different. I think that the "Distributed kernel operating system" patent just covers the Qnet protocol, which UX/RT's distributed networking will not resemble at all (the standard UX/RT network filesystem protocol will be 9P2000.u, and much of the local VFS interface will be 9P-like as well).
Owen wrote:
gerryg400 wrote:
There are patents in many countries, sure, but thy don't hold up in court. Except for in Germany, software patents are unenforcible in the EU.
So, are you advising the OP to ignore the QNX patent ?
That depends. We don't know where he is, where he intends to sell to, etc...
I am in Canada. QNX is a Canadian company, but I am not sure if they have an equivalent patent here or not.

Re: UX/RT and the Open XIOS Specification

Posted: Mon Nov 12, 2018 8:28 pm
by andrew_w
I'm still working on UX/RT, and am now progressing slightly faster than before. I've changed my mind on several things. I've decided that Rust will be the preferred language rather than Objective-C, since Rust is memory-safe and is cleaner than Objective-C. For the desktop environment I'm not sure what I'm doing. I may still use GNUstep but I haven't decided for sure. I may just end up writing my own from scratch. Whatever I do, the desktop will still be similar to a mix of NeXTStep and BTRON. I am still going to write my own window server eventually (still with the same architecture I'd planned), but I will use X11 as an interim window system. I've put writing my own hypervisor on hold, and will be using LKL, which turns the Linux kernel into a library, to provide device, disk filesystem, and network protocol drivers. I am using the seL4 microkernel (with a patch to allow for QNX-like booting from a single filesystem image containing everything, rather than loading the kernel and root server separately and requiring everything else to be linked into the root server) and the feL4 tools/libraries to build the root server. Currently I've got a working in-memory bootloader, a skeleton root server, and the infrastructure to build an ISO image that boots the kernel and starts the root server (which doesn't really do anything at the moment). I am planning to borrow some code from Robigalia and possibly Redox to reduce the amount of work I have to do to get something that works (although I will still have to write a fair bit of original code, the biggest being the IPC transport layer and the VFS (which will both will be rather different from anything in any other FOSS OS).

Here's the Gitlab project I've set up for UX/RT. If anyone else wants to contribute they are definitely welcome. In the top-level repository there is a rather disorganized file of notes on my plans for UX/RT. I really should get around to making a more organized description of UX/RT's architecture one of these days.