Archive for September, 2006

Building a Common Infrustructure

I recently participated in a study on open source software conducted by Oliver Alexy at Technical University of Munich. I just received the final report – not yet public but I’ll post the file or a link if/when I can. It got me thinking about the problems corporations face with open source, the protectionist attitude which is so prevalent in the software industry, and the challenge of building a common infrastructure.

When Alex Stepanov created what is now the “C++ Standard Template Library,”:” his intention was that the library would be an example of how to write such libraries which can be heavily reused and are minimally intrusive. Although STL is a success, and there have been many libraries built using ideas from STL, for the most part Alex’s vision of having a very rich environment of many algorithms just hasn’t happened. If you’ve been following Alex’s “notes on programming”: then you get an idea of how much STL itself could be improved.

What I’d like to create is a environment where computer scientists could collaborate on a library of algorithms, the concepts upon which the algorithms are defined, and data structures to support these concepts. I’d like this to be language neutral, with documentation for various languages describing how ideas such as refinement, models, and type functions are implemented along with quality libraries for many languages. One of the largest hurdles in making such a library a success is getting past the protectionist policies of companies such as Microsoft and Apple so they can use, and contribute to, such an effort. My hope was that releasing ASL under the MIT license would encourage Apple and Microsoft to borrow and contribute to the effort – so far that hasn’t happened.

Just today I was trying to hunt down what Apple recommends as the replacement for the deprecated Carbon API, SetCursor() – after much searching I found “example code”: of how to use the Cocoa NSCursor to replace it. The sad state of affairs is that all the cursor libraries I’ve ever seen are remarkably similar with only superficial differences – yet to the best of my knowledge no one has tried to get to the minimal requirements for a cursor and write this API for the last time.

With ASL we’re trying hard to define “concepts”: as we discover them. Currently our notation is C++ centric and as such even our definition of “regular type”: is only an approximation. I have some ideas about how to get such a library started and I’m sure I could quickly round up some university involvement – but I’m at a loss as to how to penetrate the protectionist commercial environment and ultimately I believe that will be necessary for success.