Project

Matrix Infrastructure Project

Note: This page is still being written

Introduction

The Matrix Infrastructure Project (MIP) is the rather grand sounding name to my effort to create a system to allow the navigation of computers and networks via a 3D representation of the systems. A user will be able to move around the enviroment and interact with the systems and other users in a homogenious way.

The project at present consists of three things:

Several other projects are involved in creating similar interfaces, either as window-managers or as completely new interfaces, however I feel there is still a place for this project. This project can be used for both of these purposes but at a fundamental level the MIP protocol does not mandate a representation of the information in it. This means that the client can have many different frontends (and indeed it does; most major parts of the client are modular) to show the matrix in different ways. The first frontend that will be developed will be a matrix interface, similar to the way it is represented in "Neuromancer", but it is flexible enough to allow a 'Meta-verse' frontend, a traditional 2D WIMP interface, or even a command line frontend, can be made.

One thing that all '3D world' type projects must remember though is that it is a competition. Most of them require a server for a client to connect to and for the internet at large, sysadmins are only going to install 1 server for this type of thing. This may not be the first project completed, nor the best implemented project, so it is advisable that these projects start to work together to combat interoperability otherwise it could end up like the GNOME vs KDE situation but worse - some parts of the internet using one project and some parts using others, each unable to navigated using the others clients.

Protocol

The main target in designing the protocol was not to place any implementation restrictions on how it is used. The protocol itself is XML (so buzzword complient) which may or may not be compressed (undecided yet but trivial to give the option) and is then encrypted before transmission. Various forms of encryption will be offered.

Another important point is that the protocol allows the user (ie, client) to be in control. The period after which the encryption key is change is specified by the user and they may also choose which cypher to use out of the ones given by the server.

Server

Since the matrix is suppose to represent the network topology, it is intended that a server is run for each object in the network. Note that this even included things like hubs which have any/enough CPU power to run a server itself. This can occur because the server does not have to be on the machine it is meant to represent. Each server`s configuration file indicates which machines are directly connected to it, what type they are, and the address/port number of the server representing it.

Also specified in the configuration file is basic information about the machine the server is to represent and the storage in the machine (it`s HD drives, CD-ROM`s, etc) so that users can navigate inside machines as well as over the network at large.

The server is different to an httpd in that it will communicate with other servers within a certain number of hops of it (a small number ~3-5, maybe 3-10, maybe configurable but probably better if it is the same on all servers) to transmit chat text and movement information for users in the zone of other servers.

Client

The client is designed to be extremely modular.

Images

Screenshots and concept images that show what we want to do, and pictures that have inspired us.

Development

Status at the moment is I don`t have a lot of time to work on this as I`m in my 3rd year doing Software Engineering at the University of Glasgow. After doing an initial prototype to test how a stand-alone client would work on just one computer I started to implement the full program on top of that. I stopped very quickly and decided to actually design it properly though and that is what I am doing at the moment. As a result the client and server don`t compile at the moment and even if they did they speak different versions of the protocol so they`re not much use to non-developers.

Download

References