midtalk is a new component system which is designed to be simple to use, independent, efficient and object-oriented.
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.
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.
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.