Méthodes et Outils pour la Programmation Répartie
Transparente et Sûre
(Methods and Tools for Dependable Transparent Distributed Programming)
Convention 9713540 de la Région Wallonne
Peter Van Roy
Department of Computing Science
Université catholique de Louvain
In collaboration with:
- Associated researchers and members:
- Public release: Jan. 25, 1999 (current version 1.1.0 released Feb. 7, 2000)
- Systems supported: Many Unix platforms, Windows 95/98/NT, planned MacOS X port
- DFKI, UdS, and SFB 378
(German Research Center for Artificial Intelligence
and Universit\144t des Saarlandes)
(Swedish Institute of Computer Science)
(Université catholique de Louvain)
- Mozart 1.0 is an extensive development platform for
open fault-tolerant distributed applications, constraint programming
applications, and logic programming applications. The platform
includes a complete development environment with many tools and
full documentation including tutorials. Applications developed
a collaborative graphic editor
an extended version of ICQ
a corpus browser,
a real-time bus scheduler, a configuration tool,
and much more. The platform is released with a very liberal license
allows both commercial and non-commercial use. Full source code is
- Mozart 1.0 implements the Oz 3 language,
which is almost completely upward-compatible with its predecessor Oz 2
(see DFKI Oz 2.0).
The main extensions are functors,
which provide first-class software components and specifications,
and futures, for secure dataflow behavior.
Oz 2 is itself a successor
to the original Oz 1 language, whose implementation was first released
publicly in 1995.
Vision and current status
Distribution is a major problem in computer science today.
The goal of PIRATES is to provide a platform
for general-purpose application development
that will let us program networks of computers
as easily as single computers.
The major research issues to be resolved are network transparency,
network awareness, fault tolerance, security, and resource management.
Other important issues are openness and network scalability.
First results of PIRATES are the release of
the Mozart Programming System
collaborative graphic editor.
The current Mozart release provides
complete network transparency
and network awareness, first-class software components,
and basic primitives for fault tolerance and open computing.
It implements a conservative extension to Oz 2, a concurrent
object-oriented language that is state-aware and
has dataflow synchronization.
all network operations are invoked implicitly by the system
as an incidental result of using particular language constructs.
Extending the implementation
of these constructs to a distributed setting is practical because Oz 2 has
a simple formal semantics.
In the current release,
writing applications is done in four parts,
more or less according to the following schema.
The first two parts are fully implemented and trivial to use for
the application developer;
the last two are ongoing research and currently require a bit
more thought, although the basic primitives exist.
Future releases will provide
more functionality that is easier to use,
and will include security.
First, write the application's functionality ignoring the network,
the fault tolerant behavior, and the open connectivity.
Network transparency guarantees that the same program
will run on one site or multiple sites, differing only in performance.
Second, to achieve efficient distribution,
specify the distribution structure
and the resource usage
of the application's entities.
This is a key idea to provide
control over network communication patterns in a predictable manner.
For example, stationary servers, mobile objects,
and object caches are identical
from the programmer's perspective except that they have different
(but well-defined) network behaviors.
Third, to achieve the desired robustness,
specify the fault-tolerant behavior of the distributed entities.
We are currently building abstractions to separate this
as much as possible from the application's functionality.
Fourth, add openness to allow dynamic
connections between parts of the application that
belong to different users.
The goal is to concentrate
most of an application's development effort in realizing
just its functionality.
The other characteristics
(geographical distribution, fault tolerance, etc.)
are realized by adding small specifications that are
almost independent of the functionality.
This goal is currently fully realized for distribution and openness,
and is well on its way to be realized for fault tolerance.
Papers and talks
For more Mozart-related papers see
the Mozart publications page.
For more Oz-related papers see
the Programming Systems Lab
publications page at the University of Saarbrucken.
QTk -- A Mixed Declarative/Procedural Approach for Designing
Executable User Interfaces
8th IFIP Working Conference on Engineering
for Human-Computer Interaction (EHCI'01),
Fault-Tolerant Mobile Agents in Mozart (80K),
Zurich, September 2000.
Path Redundancy in a Mobile-State Protocol
as a Primitive for Language-Based Fault Tolerance (100K),
INGI research report RR2000-01,
Logic programming in the context of multiparadigm programming: the
extended version of tutorial given at International Conference on
Logic Programming, November 1999.
More than just a tutorial on logic programming, this article explains
true multiparadigm programming as realized in Oz,
gives the history of Oz,
and summarizes the main lessons learned in the Oz project.
Mozart: A Programming System for Agent Applications (120K)
An introduction to open, robust distributed programming in Mozart.
The article gives many small code examples and the slides give
an overview of the main concepts.
A Lightweight Reliable Object Migration Protocol (290K),
in Springer Lecture Notes on Computer Science, Vol. 1686, October 1999.
Gives an intuitive yet precise presentation and justification of
Mozart's mobile state protocol.
A New Mobile State Protocol for Distributed Oz (360K)
(slides of talk),
PDCS 99, Ft. Lauderdale, Florida, August 1999.
Gives an extension of the mobile state protocol to
improve behavior on hierarchical networks.
On the separation of concerns in distributed programming:
Application to distribution structure
and fault tolerance in Mozart (180K),
International Workshop on Parallel and Distributed Computing for
Symbolic and Irregular Applications (PDSIA 99),
Sendai, Japan, July 1999.
Explains the Mozart design principles and applies them
to distribution and fault tolerance of mutable pointers.
Logic Variables for Distributed Computing (600K),
ACM Transactions on Programming Languages and Systems, May 1999.
Explains how to use and implement dataflow execution
in a distributed system.
Defines a practical distributed unification algorithm
and proves its correctness.
Le Protocole Réparti de Distributed Oz (190K) (in French),
Colloque Francophone sur l'Ingénierie des Protocoles (CFIP99),
Nancy, France, April 1999.
Explains how Mozart's different distributed
algorithms are integrated together.
A Collaborative Graphic Editor Based on Transactions (140K).
Overview of the design of the
TransDraw graphic editor.
Talk given at Oz/Mozart workshop, SICS, Sweden, June 1998.
Languages for Distributed Applications (400K)
Journal of New Generation Computing, May 1998.
Second published overview of the Mozart approach.
Much more complete than the first published overview.
Objects in Distributed Oz (900K), ACM
Transactions on Programming Languages and Systems, September 1997.
Explains the mobile state protocol, proves it correct, and
shows its use for network-transparent distribution.
distributed programming easy, extended version of article
that appeared in FSA Research, Université
catholique de Louvain, 1997.
Very brief summary of the problems that
are addressed by Mozart.
- An Overview of the Design of Distributed Oz, PASCO '97, July 1997
First published overview of the Mozart approach.
Networks from the programming language point of view, or using and
implementing mobile objects (slides),
talk given at Alcatel-Bell Symposium
In search of a Perfect Marriage between IP and ATM,
May 23, 1997.
Disparition de l'Ordinateur (in French)
Faculté des Sciences Appliquées,
UCL, 21 octobre 1996.
A chronological and open-ended list of working documents
on various aspects of Distributed Oz.
- PERDIO project
proposal, Programming Systems Lab, Universität des Saarlandes.
The original project proposal with which the distribution part
of the Mozart project started.
- Distribution at SICS.
- Security Models, by John McLean,
in the Encyclopedia of Software Engineering, ed. J. Marciniak, Wiley, 1994,
Very tightly written, with a good balance of formal and intuitive reasoning.
- Concurrent Programming in Java, by Doug Lea, Addison-Wesley, 1997.
Somewhat verbose and rambling, but still a good read.
- Extensible Security Architectures for Java,
by Dan Wallach, Dirk Balfanz, Drew Dean, Edward Felten,
16th Symposium on Operating Systems Principles, October 1997.
Cryptography is Harder than it Looks
essay by Bruce Schneier, 1996.
Can be summarized as ``Why Security is not Cryptography''.
- Mobile Ambient
Synchronization, by Luca Cardelli,
DEC Systems Research Center, July 1997.
Combinators for Web Computing, by Luca Cardelli and Rowan Davies,
DEC Systems Research Center, July 1997.
Copyright 1997-9 Peter Van Roy. All rights reserved.