Python developers had reason to celebrate last week, with the release of IronPython 1.0, a full implementation of the Python language for Microsoft's CLR (Common Language Runtime). With IronPython, Python programs can run as first-class managed code on the .Net platform.
Of course, some open source advocates will scoff at this announcement. Why on Earth would they choose to code in an open source, cross-platform language such as Python, only to run their programs on Microsoft's closed, proprietary framework? But this attitude ignores both the value of the CLR and the breadth of support it has gained from the open source community.
The day after the IronPython announcement, the Gnome Project released Gnome 2.16, bringing a variety of new features and enhancements to the open source GUI desktop. Among these is Tomboy, a new note-taking application that becomes a standard part of Gnome as of the new version. Tomboy is written in C#, which means it needs a CLR implementation in order to run. And that means that, soon, anyone who wants to install Gnome will also need to install the CLR.
This was a difficult decision for the Gnome maintainers, and a controversial one. Open source developers and vendors are often leery of technologies that could leave them vulnerable to intellectual-property lawsuits from proprietary software companies. Just one patent infringement case could be enough to kill an independent open source project outright. To tie a critical platform such as Gnome to technologies developed by Microsoft, some say, is the equivalent of sticking all our necks under the guillotine.
But Miguel de Icaza, founder of Gnome, disagrees. For the past few years, de Icaza and his team of developers at Novell have been working on Mono, a fully open source implementation of the CLR for Linux and Unix systems. When Tomboy runs on a Gnome desktop, it runs on Mono. And development and support of Mono, de Icaza says, are no more controlled by Microsoft than is Gnome or Linux itself.
That's not enough to reassure some naysayers. Microsoft might be leaving Mono alone now, they say, but who knows when the notorious enemy of Linux will start fiddling with the .Net APIs, asserting hidden patent claims, or otherwise trying to pull the rug out?
Somewhere in all this, cooler heads must prevail. My colleague Tom Yager's comments notwithstanding, managed code is the future. Java has become the de facto language for enterprise software development, and .Net is rapidly becoming the preferred way to write software for Windows. These platforms lift some of the burden of hardware control, memory management, and security auditing from programmers' shoulders, allowing them to concentrate on developing increasingly more complex and sophisticated applications. Open source platforms such as Gnome and Linux need these tools if they are to compete with proprietary software.
Before Mono there was no managed-code environment available under an open source license. Sun continues to stall and dance around the issue of open sourcing Java, but Mono is here now, and it works. According to de Icaza, it is no more vulnerable to patent lawsuits than any other open source application. Tellingly, Ubuntu Linux doesn't ship software to decode MP3 audio files because of intellectual-property concerns, but it does ship Mono. Have Mono's critics really assessed the risks fairly, or do they just hate the CLR because of where it came from?
Microsoft still has Visual Basic, but it supports IronPython anyway. In so doing, it has reasserted and demonstrated its willingness to support languages running on the CLR that weren't invented in Redmond -- even ones that were born as open source. Call it an olive branch or call it a publicity stunt; either way, surely there's room for a little transfer of technology in the other direction?