DeforaOS Project Reference
PierrePronchery
pierre@defora.org
2004
Pierre Pronchery
Introduction
Nowadays mainly two conceptions of computing compete: open source and proprietary software. I believe that most software should be available with its source code, as a proof of quality, interoperability, and security, to only quote the most obvious reasons.
However, most open source operating systems are based on UNIX. While this can be considered as a mature, stable and portable operating system, its use can be cryptic, and users are often facing technical inner workings of this system. Moreover, most human-computer interfaces, either in text or graphical mode, and even configuration files, are incoherent between each other, and particularly in community open source systems.
It is also certainly worth thinking about a technical re-design of the UNIX system. It has been originally designed along with C, with a monokernel approach, on computers where every single characted handling avoided counted. Now the power of even 10 years old computers is far beyond this, and researchers are working on micro-kernels, and safe programming languages for instance.
Today I think my ideal operating system should be open source, micro-kernel based, usable on pentium-class computers, coherent, connected, and distributed. This paper explains in detail how I would design and implement it.
Project orientations
Open source
Usability
Technical choices
Micro kernel
Programming languages
Applications
Every application runs inside what's called a "session". They are split in two parts: the application "engine", and the "interface". The end-user interaction should be presented the same way in text mode or graphical mode, possibly via the same API, and using only one binary for both.
Sessions
Applications engines
Applications interfaces
The applications interfaces may detect the requested toolkit to use accord
Interface toolkits
Graphical server
The graphics library would be fully OpenGL compliant. It is not yet known how the clients will communicate with the graphical server. In case of a socket based communication (maybe implemented anyway to run on other OSes), instead of the current kernel based one, the network transparency will be straight-forward. It may not be efficient though... This will be decided later.
About the graphical toolkit for applications, I insist that only one library will be supported, and binary compatible with the text mode toolkit. It may be more efficient to implement the toolkit on the server side, this will be decided later too.
Detailed design
Implementation process
It seems reasonable, if not obvious, to determine independant tasks within the huge work described before in this document. There follows a proposal.
Development tasks
Global tasks
Programming interfaces
Cooperation tasks
Documentations
Low-level applications
Assembler
C compiler
Micro-kernel
C library
System applications
General purpose services
These applications only require their application engines. For an easy and safe configuration, or monitoring, they may provide user interfaces though.
Text mode toolkit
End-user applications
Every application that fits on a desktop: file browser, web browser, mail and news reader, messaging application, images viewer, audio and video viewer, and optionnaly games, etc.
Graphics
Graphical server
Graphical mode toolkit
Services
General purpose daemons
Networking daemons
Applications interfaces
The only essential part of these services is their application engines.
POSIX environment
At the moment it is not yet known if the system will be based on, or provide a native POSIX development environment.
It may be possible to write an application engine providing the POSIX system and library calls, on which the POSIX utilities would connect as usual application interfaces. We could even imagine them with a graphical interface, which would fallback as the regular UNIX commands if the graphical toolkit is denied (using stdin, stdout and stderr as usual).