Genesis Project
This document is part of the genesis project. See the project homepage at genesisae.sf.net for more information. This document is (or was) hosted by SourceForge.

Genesis Project

Simon Ruoss


Introduction

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).

Figure 1. Genesis Logo

Genesis Logo

Benefits

Developer benefits

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.

More Technical...

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.

Figure 2. Genesis (example application view)

Genesis (example application view)

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.

Documents

Documentation (downloadable DocBook documents)

Here you can download all documents as DocBook documents.

Buran (online documentation)

Buran is a micro kernel. It supports synchronous interprocess messaging and synchronization (something like semaphores).

OIDL (online documentation)

OIDL is the object interface definition language.