Projects I worked in

 

In all these years, I worked in many interesting projects. I’ll talk here about free software projects that are somehow still available. Not all of them got a wide user base, actually most of them didn’t, for various reasons; but all of them have something interesting to tell.

 

jMax

 

Max is the name used to identify a family of systems and visual languages for MIDI and signal processing; essentially it is an environment used to build musical applications.

It was initially developed in Ircam by Miller Puckette in the middle of the 80s for the Macintosh; then the Mac version was licensed to Opcode, that made the Max project (David Ziccarelli was the guy); when Opcode closed down, David went on with his own company, and the product still exists as MAX/MSP.

 

On the Ircam side, the software evolved in an other way; initially was ported/adapted to the Ircam IspW, a NeXT workstation turbo-powered with Ircam built co-processors cards based on the Intel 860. (The project was managed by Eric Lindeman).

 

Later, when it was clear that developing hardware was not sustainable any more, Ircam decided to start a purely software project, that was called jMax, managed by Francois Dechelle. I worked in this project from the beginning to June 1999.

 

The architecture was split: a user interface written in Java (in 96 !!), for portability, and a computational engine written in portable C, running everywhere, from DSP processors like the TMS32032 to 64 bits DEC Alpha machines. The connection between the two was a TCP/UDP based connection.

 

At the time, the environment was built and configured using a scripting languages (jacl at my time, later scheme), and had a plugin mechanisms to add new graphic and DSP primitives. It was a nice piece of works, expecially considering the challenge of making real time graphics with AWT (and later with Swing) without the latest and greatest JVMs.The system at the time was run on Silicon Graphics Origin machines, often configured with a dedicated processor for DSP in real time, and the other for the UI and the OS.

 

The architecture was conceived to be extensible everywhere, and a lot of hooks where in places for extensions, like other type of connections, graphical extensions, rich script based packaging for delivering reusable modules, and so on.

 

Sadly, these extensions were never written; Ircam had a crazy strategy of making money out of MAX/MSP royalties, and the scientific direction never really understood or believed in the project. In this context also was very difficult to build up a technical strategy that made sense, so the prooject management was some time erratic. Finally, in June 99, I was tired, needed a bigger salary, said good by and went to Mandralesoft. One month later the project was finally published under the LGPL licence.

jMax is dead (is it ?), but Ircam derived other projects from the code base, like FTM. Refer to the Ircam site for more information about these projects.

If instead you are interested in the real jMax, you may find useful to check this site again in a couple of month.

 

Hexagraph

The graphic engine of jMax was quite performing and sophisticated, using an MVC approach where the Controller part was implemented in a modular way, allowing composition of behaviours.

 

I did some contracting work for a company called Hexadev reimplementing the main ideas of the jMax graphic system, and pushing the envelope a little bit more. The company closed down, and the owner gave me the authorisation to publish the code as LGPL. You can find it in sourceforge, look for hexagraph.It include some documentation.

NARDA (later, nadir)

I was initally hired by Mandrakesoft to build a system to manage a medium or large unix deployment, either desktop or servers. The company strategy and its management changed a lot in the initial period; when arrived the company had a plan to got in the corporate market, but then the strategy was changed, and the project frozen. I built a nice prototype.

The idea was simple: the system built an abstract view of a set of machines as a kind of virtual data base, presenting the configuration and the runtime status of all the machines under a simple, unified view. This data base could be queried with a simple SQL like language based on XML. XML was also the language used to describe the data.

 

For example, you could issue a query asking which machines that have the mysql installed had a load bigger than 2; or got the list of all the rpms installed in all the machines; or the result of a ps command launched on all the machines.

 

A simple plug-in system allowed to add new data to the system; plug-in could be written in any language; the plug-in were described in XML, and included pragmas for the query optimizer.

 

This was the state of the prototype, after four month; it was completed by an Java console written in swing, able to execute queries and show the result.

 

Plan for the futures where to add a multi level architecture, with intermediate data collectors partially executing the queries, and adding update-like queries, where the state of the machines could be modified with push commands (for exemple, update a given rpm on all systems at once).

 

Sadly the project was stopped; I still think that something along the lines of narda is still needed in the Linux.

The project is still available in the Mandriva CVS at http://cvs.mandriva.com/cgi-bin/viewvc.cgi/nadir/?sortdir=down.

 

Koinettivity

Koinettivity was a project started in Mandrakesoft to support the development of online activities; it was mostly focused to synchronous collaborative applications with an eye on e-learning.

It included a very sophisticated component model, including many ideas that has been developped later in IOC frameworks and similar.

 

It included logging, tracing, scriptability, fine graded permission, what today would be called a form of dependency injection, a packaing and deployement model, and a cluster model with automatic synchronization and distribution of components.

 

The project is still available in

http://cvs.mandriva.com/cgi-bin/viewvc.cgi/koinettivity

 

I personally consider this the best of my architecture work.

 

As for the previous project, exactly at the time we got the first version ready (including the basic infrastructure, component model, servlet integration and a few example) the project was frozen by a change of management and strategic direction.

 

The whole Koinettivity team started then to look for a job; for a short while, we hoped to continue the project elsewhere, but this is Paris, not the Silicon Valley, and we soon gave up hope, and each of us found a job elsewhere. I think that the koinettivity team, together, summed up more years of experience in development that the rest of the company together, and Mandrakesoft was not able any more to keep people with relatively high salararies.

 

In the last few years there has been an explosion of server side frameworks, I am not sure that the Koinettivity code is very competitive any more; but a number of ideas and concepts are still worth looking at.