Marco is a long term project within the Architecture Unit at the CRC for Distributed Systems Technology. Its aim is to produce a user environment suitable for a global distributed system.
As an example, a Unix process is an object you might wish to manage, but its interface is via ps/top/kill, via an xterm, via your window manager. Other examples that are particularly gruesome are local files, remote processes, DCE servers, etc.
The WWW attempts to provide a single user interface to a number of object classes. It is admirably successful, provided that you only want to read (not write) and the objects are of a limited set of classes. A major problem is the inability to extend the set of handled classes easily. Another is the inability to customise the way in which objects are presented.
Marco manages objects, their classes and access to them. It overlaps the functionality of a window manager, web browser, file manager, mail reader and many other tools. The aim is to allow users to manage all their objects via a single framework, with personalised presentation.
Previous work has focused on infrastructural requirements, generating a means of accessing previously unknown DCE servers and a simple GUI tool which uses this capability in a DCE service browser.
Current effort is directed towards establishing the "plugin" interface for data presentation and some useful Collection presenters.
Marco will consist of several integrated components
Much more useful though is the ability to specify an alternative means of displaying data of a particular type. This can be as simple as a customised wrapper for integers, to defining a complete forms-style application to front-end a complex binding type.
We are already familiar with this kind of functionality when using WWW browsers. These examine the type tag at the front of the URL and determine how to get and display the information. This can include using your .mailcap file to determine your customised requirements for dislaying that type of information.
Marco will include this ability, but extend it.
In different circumstances, you want to use these references in different ways. Sometimes a graphical file-manager style inteface is appropriate. For scripting, a simple listing of their names is most useful. I frequently access them looking for most recent additions first.
Marco will provide a generic notion of collections - a group of references to objects which may be local or remote and of any type. Since a collection is implemented simply as another local object, collections can be nested.
Multiple presentation methods for collection objects will support displays ranging from a textual listing of the reference names though to complex three dimensional animated icons representing the references.
The major issues here are how to map from the presentation to the browser. If you choose to display a Unix directory object as a graphical tree - each file object is a browse-able object. Similarly if you display it as sorted text names, etc.
Each class has defined actions which may then be filtered by a presentation before being made available to the user. Normally, a right-button click will produce a menu, and a left-click perform the default action. Does this apply to most presentations?
Currently the most likely language for this purpose is Python. Of course we should support multiple languages - but this will not be an immediate priority for us.