____________
< innovation >
------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Well, that was fun.
Unununium development has been inactive for a long time now. It would be foolish to say development will continue since history indicates working for real money always wins over hobby projects such as this. However, recent (March 2007) events have given rise to a bit of inspiration. Phil Frost summarizes his experiences:
- Food, housing, transportation, and utilities are expensive. OS development isn't very profitable. It is, however, fun.
- A new OS can not be successful without maintaining some compatibility with existing software. Reimplementing enough software to get a system worth using is too much work. History is full of interesting and innovative operating systems developed largely in academia which have grown stale because they lack utility.
- A new OS can not be successful without introducing new features that provide a compelling reason to switch from existing systems. History is full of unremarkable operating systems that have grown stale because they provide little or no advantage over popular systems.
- Compatibility and innovation are to a significant degree mutually exclusive. A successful system will offer enough compatibility to allow a significant amount of existing software to be ported with ease, while providing a path to incrementally migrate to something better.
- Programming languages need more attention. Four gigabytes of RAM and a dual-core CPU are not very useful if a programmer can not write an efficient and useful program in a reasonable amount of time. Lower level languages like C burden the programmer too much with mundane details. Higher level interpreted languages like Python have extremely poor runtime performance. A high-level language with an intelligent, efficient runtime should burden both the computer resources and programmer less.
- Closed source systems suck.
With these experiences in mind, some directions for Unununium have been discussed:
- An efficient runtime for high level languages at the core can provide programmers with a good interface to the computer, and also provide isolation between components without the overhead of context switching for system calls and between processes as usual in popular OSs today.
- While the above runtime can safely execute in a single, fully privileged address space (not unlike "kernel space" in linux), isolated and restricted address spaces are still required to run most existing software without compromising isolation. This is a concession to compatibility.
- Furthermore, at least C-level compatibility should be provided by implementing a POSIX-like interface, again for the sake of compatibility. Ultimately, popular software like Apache, Nethack, Vim, Bash, and such should be portable with minimal modifications.
- Orthogonal persistence will be implemented in such a way that all software, including that using the legacy interfaces, will be persisted.
- Initial goals should be kept to a minimum. Specifically, implementing a new GUI will wait.
