Tuesday, December 27, 2005

The CsIL project provides a language-neutral communication layer to JBossMQ, the JMS implementation in JBoss4. The newest offering from CsIL offers improved performance (both in speed and memory), optional SSL, and superb documentation. The CsIL project is a contribution to the opensource community from Tamale Software. Tamale extended JBossMQ to enable C# access to the messaging server. JBossMQ is covered under the LGPL, so modifications must be opensourced also. At Tamale, we chose to extend JBossMQ rather than use an off the shelf, proprietary JMS provider, because of the extra control available with open source alternatives. Over the past few years, we have used many opensource infrastructure components, and many proprietary components as well. The consistent empirical results over the past few years is that a mature opensource component is always better than a similar proprietary component. The reason reminds me of a scene from the movie moonstruck, where Cosmo the plumber is explaining the available kinds of pipe to a prospective client: "There are three kinds of pipe. There's aluminum, which is garbage. There's bronze, which is pretty good, unless something goes wrong. And something always goes wrong. Then, there's copper, which is the only pipe I use. It costs money. It costs money because it saves money." - from the IMDB Proprietary software components are just like bronze pipe. They usually do what you need, but the moment you run into a problem, you are in real trouble. Working with a blackbox component significantly complicates debugging, refactoring, and extending a solution. Often there are problems that you simply can not fix. You have to wait for the vendor to fix them, and often the fix you want is not important to many other customers. Opensource components are like copper pipe -- these components usually need some up front investment in the codebase, which costs a bit of time and money. However, for an independent software vendor, opensource gives you transparency and therefore control over the complete solution. Not only can you specialize components to your own needs, but when the inevitable problems arise, you can actually do something about them. In my experience, problem resolution with opensource components is consistently faster, because you don't have to depend on any vendor. You can prioritize changes on your own scale, and make whatever improvements you need. Now that we have invested in the construction of CsIL, we are driving for the second big benefit to opensource development. We want as many people as possible to use CsIL, and start finding issues, fixing problems, and extending further. For example, CsIL provides a C# client to JBossMQ, but the protocol is entirely language neutral. So someone could write clients in ruby, python, perl, or javascript. A javascript library is my personal pet favorite right now -- it would be extremely interesting to bring complete asynch messaging to AJAX.