                            MOUNT LINUX OLYMPUS
                    Advanced Graphical Administration System
                    
                    
Mount Linux Olympus is a GPL'd Open Framework for central, remote configuration 
and maintenance of Linux systems. Using encrypted network tunnels for security 
and a software plugin model for flexibility, it's aim is to provide an 
unprecedented level of usability. By lowering the learning curve necessary
to use and configure Linux properly, it will make Linux a very real option for 
the average user. Mount Linux Olympus provides a simple, clear and consistent 
graphical user interface to even the most complex of system configuration tasks, 
from setting up a network connection to maintaining a complex web server to 
installing new end-user software.

Olympus is currently in development. There is only one module, mod_admin, which 
is used to configure and interact with the olympus server. We are welcoming other 
open source hackers to join us in producing this free (as in beer and as in 
speech) system to help further the acceptance of Linux in the mainstream. This 
version is NOT to be used in production. View it as you would a development 
kernel. An early development kernel.

The rest of this page is written with developers and those interested in testing 
in mind. Later releases will have more information for and be targetted towards 
end users.


Software Design

Olympus achieves its goals through a client-server archetcture. All configuration 
commands and information passing happens via the network. The client and its 
plugins interact with the user doing the configuration and then transmits their 
requests to the target machine, where an Olympus server is running (it's very 
small, don't worry). These messages are transmitted over an encrypted tunnel 
(which isn't encrypted at this point in development, but will be shortly) using a 
protocol we call "netmessages". They being their life as a typical C++ object on 
one side of the network, serialize their data, send it across the wire where it 
is deserialized and a netmessage of the same type is instantiated on the receiving 
side. This new netmessage then completes therequest based on the data sent it. 
Netmessages are task specific (e.g. fetch a file), but new netmessages are 
trivial to create.

The networking is based on a non-blocking socket class called Socket. Both the 
client and the server use this class. One socket is opened per client/server pair. 
Each of the plugins on the client side share this connection and use Session IDs 
to differentiate their messages from those from or to other plugins.

On the server side of life, a database is built and kept on disk that connects 
various general purpose "commands" such as "add a user", "start the web server" 
or "change the printer" to the commands specific to the system. This way plugins 
do not need to differentiate between different distributions of Linux and their 
individual quirks (and eventually this will extend to other UNIX OS's as we port 
the server). Therefore, a plugin only needs to be written once to work with any 
Olympus server and the user will only need to learn one way of configuring a 
Linux system, regardless of the distribution in use.

More information on the software design decisions made can be found in HOWTOs, 
READMEs and TODOs scattered appropriately across the source tree.


Getting Involved

If you would like to join us in the development effort to make Olympus an 
outstanding piece of open source software, please don't hesitate! People are
needed as testers, to write documentation, and to code. To see how you can help 
out, download a tarball, take a look at it and either send email to

    hackers@mountlinux.com 

or join the development list by sending an email to: 

    majordomo@mountlinux.com 

with the following message in the body:

    subscribe olympus-dev


What Needs To Get Done?

The core system is in place, with added development being done to make it more 
robust and feature-filled. Plugins are another matter, however. Plugins
enable the client to perform specific tasks, such as configure various aspects 
of the system or install new software. We are writing some plugins currently, 
but many more are needed to round out the capabilities of the system. See the 
TODO list in the olympus/src/client/plugin directory to see some of the plugins 
that need to be started.

This isn't to say that the core system doesn't need work or couldn't be made 
better, merely that it has some people looking after most of the code needs. For 
instance, the encryption library needs to be hooked into the network layer. 
Passwords in the user database also need to be SHA'd and hashed. More netmessage 
classes could probably be used. You get the picture. Throughout the source tree 
at appropriate places you will find TODO files. These are good places to look for 
open jobs, though by no means are they exhaustive lists.
