Inspirel banner

Programming Distributed Systems with YAMI4

1.1 A Bit Of History

The YAMI project, which is an acronym for Yet Another Messaging Infrastructure, was started in 2001 as a small research and open-source project intended to be a learning platform in the area of the design and construction of simple communication systems. The main deliverable of the project was a set of libraries for several programming languages that allowed programs to communicate over TCP/IP connections and targeted mainly those users who needed a small and portable communication library and who perceived standard solutions like CORBA as too heavy for their needs.

From the very beginning the project was multilingual and provided implementations of common communication protocol in C, C++, Python, Tcl and COM-aware languages like VB Script. As the project followed the expectations of its growing user base the focus shifted a bit and the last version of that original development line offered implementations for C, C++, Java, Python and Tcl with independent PHP plugin.

During several years from its first release the YAMI project proved to be useful in a variety of distributed systems, including among others a system for remote control of astronomic telescopes, a system for data exchange in hospitals, a diagnostic and monitoring layer in a large-scale distributed control system in a nuclear research laboratory and a number of small deployments developed for academic purpose or just for fun.

This wide variety of use-cases could be used as a proof for the success of the project, but on the other hand the growing demand and constantly evolving user expectations revealed that the initial implementation of YAMI had its inherent limitations in flexibility of the data model and in the scalability. These limitations have led to the decision to freeze the further evolution of the original development line and to come back to the drawing board.

Many of the initial YAMI ideas proved to be very good and these were the natural candidates for inclusion in the YAMI successor - at the same time, some others were replaced with conclusions that came from more fresh experiences. This is how the YAMI4 project was started.

The YAMI4 name indicates that even though the development work was basically started from scratch, there is some logic and design continuation with respect to the original development and since the last YAMI version number was 3.3.2, the nice-sounding ``4'' was added to the name.

The YAMI4 project is hosted and managed by Inspirel.

The web-page of the YAMI4 project is:

http://www.inspirel.com/yami4