OpenXM is a free, or Open Source, infrastructure for mathematical
softwares.
It provides methods and protocols
for interactive distributed computation and
for integrating mathematical softwares.
OpenXM package is a set of softwares that supports OpenXM protocols.
It is currently a collection of softwares
`Risa/Asir` [3], `Kan/sm1` [7], `PHC` pack [8]
, `GNUPLOT`,
`Mathematica` interface, and
`OpenMath`/XML [4] translator.

We have been profited from increasing number of mathematical softwares. These are usually ``expert'' systems in one area of mathematics such as ideals, groups, numbers, polytopes, and so on. They have their own interfaces and data formats, which are fine for intensive users of these systems. However, a unified system will be more convenient for users who want to explore a new area of mathematics with these softwares or users who need these systems only occasionally. OpenXM provides not only data representation and communication protocols but also programming guidelines to develop cooperative applications. One will be able to concentrate on developing mathematical algorithms with such guidelines. Our design goals are (1) simpleness, (2) extensibility, (3) easiness of implementation, (4) practicality, and (5) robustness.

We believe that an open integrated system is a future of mathematical softwares. However, it might be just a dream without realizability. We want to build a prototype of such an open system by using existing standards, technologies and several mathematical softwares. We want to see how far we can go with this approach.

It is not an obvious problem to consider how mathematical objects
are represented and communicated.
It may be similar to trying to create new mathematical symbols.
We have the decimal notation to represent numbers, the symbol *dx*to represent a differential, and
to represent
a mapping. One should imagine how we are benefited from these notations.

In OpenXM, communication is an exchange of messages.
The messages are classified
into three types: DATA, COMMAND, and SPECIAL. They are called OX
(OpenXM) messages. Among the three types, *OX data messages* wrap
mathematical data. We use standards of mathematical data formats such
as OpenMath and MP as well as our own data format *CMO* (*Common Mathematical Object format*). Servers, which provide services
to other processes, are stack machines. The stack machine is called
the *OX stack machine*. Existing mathematical softwares are
wrapped with this stack machine. OX stack machines work in the
asynchronous mode which is similar to X servers. That is, OpenXM
server won't send messages to the client unless it is requested
to send them. It is also possible to emulate RPC and a web server for MCP
[9] on our asynchronous OX stack machines.

A system xxx conforming to OpenXM is called open xxx. For example Asir conforming to OpenXM is called open Asir, and kan/sm1 conforming to OpenXM is called open sm1.