Copyright © 2004 Simon Ruoss
The Genesis Project attempts to define (and later implement) a
modern and powerful application environment for all types of applications
(server applications, desktop applications or mobile applications).
- Multi platform applications
By using Genesis, you can write multi platform
applications. Your applications will run on every platform that
runs Genesis (e.g. IA32, AMD64, IA64, MIPS, PPC, ...). ...of
course, you can also write platform-dependant
applications.
- Write reusable code
Write reusable code you can reuse with every
programming-language. E.g. Write an SMTP-engine in Java and use
it in i386-assembler.
- Write network-transparent applications
Your applications will be automatically
network-transparent. Genesis doesn't make a difference between a
local machine and a remote machine. A user can login everywhere
in the world and use the same applications with the same
settings and open the his/her documents as at home.
- Write secure applications
Genesis provides built-in security mechanisms. Genesis
supports file-signing and is secure by design (at least more
secure than today's operating systems). Of course this doesn't
mean basic Genesis system-files are signed, since this wouldn't
allow someone to recode these files. However, third-party
commercial applications and documents can be signed - this
prevents viruses to put themselves into
signed-executables.
- Use a free and well-defined environment
Genesis is open and will remain open (free software, see
FSF for more
information). Genesis has a well-documented and static API
(Unlike other projects, I first define an API and then write the
implementation).
End-user/home user benefits
End-users also benefit from everything developers benefit from
and more:
- End-user ready
Unlike other operating systems (Unix), Genesis is designed
to be used by end-users. (At the same time, Genesis is also an
ideal server system). Genesis will be easy to use, since we can
design it without historical ballast and
backward-compatibility.
- Database-like file system
The file system is the most important part of Genesis.
Users will like it, because this file system prevents
version-conflicts. (You can install every application and every
version of this application; you can even run several versions
of the same application if you wish to). This file system also
allows signing, has built-in security and it's
network-transparent.
The core component of Genesis is Buran. Buran is a QNX4-like (® by
QSSL) micro kernel. It supports synchronous interprocess messaging and
semaphores (I call them signals). Every process (here called "object")
communicates through Buran with other objects.
Beside Buran, Genesis needs also some simple objects:
- A file system-object
...called Bern
- A machine-object
This object represents the machine (e.g. the native ia32
machine) that executes native code. This object should at least
provide memory-management (memory allication/freeing routines) and
object (process) priority manipulation routines.
- An executor
An object that executes other objects. The executor is
needed to look for the appropriate virtual machine (if the object
to execute isn't native code). Genesis will support several
virtual machines like Java VM (® by Sun Microsystems) and MSIL-VM
(® by Microsoft).
- Input/output objects
Some input/output objects to support mouse, keyboard, sound
and video input and to support text-console, video and sound
output.