::midtalk

What is midtalk ?

midtalk is a new component system which is designed to be simple to use, independent, efficient and object-oriented.

What is a component system ?

A component system is something you should think to use if you want to give your application a safe, stable, modular and well specified design, if you want to make parts of your applications or libraries available in languages in which they are not developed without writing some complex bindings for each one, if you want to make your application extensible, to have your application split between multiple separate processes without having to handle too much coding complexity, or if you want to give your application's users the ability to write scripts.

A component system solve these problems by providing an Interface Definition Language (IDL) which is a programming language-independent format in which you specify interfaces for your software components.

As opposed to basic header files, these file only describe interfaces and declare them in an uniform way, so they are easy to parse and to read. They are also kept apart from the source code, which gives them more stability by separating them from the implementation. The fact that this interfaces are defined in a programming language-independent form allows IDL compilers to generate bindings between your program and other languages ; and the fact that your program's interfaces are well-specified in machine-readable form means you can generate other stuff like Remote Procedure Call (RPC) stubs.

Why midtalk ?

Simple : midtalk is designed with simplicity in mind. It doesn't use a complex language-independant type system or heavy runtime information, but prefers to rely on existing language features and to provide only a few necessary primitives to link components together.

Easy : midtalk doesn't require you to learn specific ways of designing your APIs because it is designed to map to existing types and interfaces of the languages it supports. It should even be easy to integrate to existing applications by making your previously-defined objects implement IDL-specified interfaces.

Efficient : contrary to other existing component systems built on CORBA or COM, you are not obliged to use specific type systems or marshalled calls when you use midtalk in a single process and with a single language, so the overhead is very low and the performances should be quite as good as if you didn't use it.

Independent : midtalk doesn't require you to use a specific plateform, such as an operating system, a language, a desktop or even a web browser. The library is kept to the essential and does not provide complete abstractions or non-component-related programming tools and the whole project is designed to be made natively available to any language someone wants to be supported. Thus, it can be used in virtually every existing project.

Object-oriented : because object orientation adds interesting features to components systems and because it makes the object-oriented languages support typing features that are required by our design, the OO path is followed by midtalk, and object-oriented languages are its primary target.

Current status

It is currently still in early alpha stage : a previous release will be made available soon with a version of the IDL compiler for the C++ language, base libraries and a working demonstration component.

This first attempt of an implementation is currently written in C++ and using parts of GLIBmm ; but it does not restrict further attempts.

Special thanks to Dodji Seketeli for his support and advice that given this project life and the important pieces of software he wrote that are actively used in midtalk.