Fans of IronPython, IronRuby, and other dynamic languages on Microsoft's .Net platform suffered a blow earlier this month with Jimmy Schementi's announcement that he had left his job at Microsoft. Until recently, Schementi and his team had been the foremost champions of .Net dynamic languages, having been responsible not only for IronPython and IronRuby but also the Dynamic Language Runtime, a set of APIs that make it easier to port dynamic languages to .Net.
Schementi attributes the end of his tenure at Microsoft to "the typical big-company middle-management issues every software developer has." Where once his team enjoyed broad leeway to implement IronRuby and IronPython as it saw fit, more recent management decisions had reduced staff and limited the team's agility. According to Schementi, "roadblocks have cropped up that made my job not enjoyable anymore."
[ InfoWorld's Josh Fruhlinger explains why Microsoft's flirtation with small projects like IronRuby may be over. | Keep your Java skills sharp with our JavaWorld Enterprise Java newsletter. ]
Reading between the lines, however, some developers have wondered whether Microsoft's treatment of Schementi and his team signals not just a lack of support for dynamic languages on .Net, but a general trend toward homogeneity on the platform. With IronPython and IronRuby now reduced to second-class citizens, is the Microsoft developer ecosystem creeping ever closer to becoming a strictly C# world?
Any color you want ...
True language independence on the .Net platform has always been elusive. For example, Visual Basic .Net, which Microsoft first released in 2002 alongside C# and ASP .Net, was significantly different from its predecessors and broke backward compatibility for many applications. Some developers have gone so far as to describe it as C# with a different syntax (albeit a familiar one).
Still, that's somewhat to be expected. Implementing a truly language-independent virtual machine environment is difficult, and other attempts -- such as Parrot, the virtual machine that runs Perl 6 -- have enjoyed only limited success.
Java, the .Net platform's most visible competitor, also supports several languages, including Groovy, Jython, and Scala. Support for these alternatives has been growing; for example, the high-traffic microblogging service Twitter has transitioned much of its code from Ruby to Scala.
But although work continues to make the JVM a more language-neutral runtime, from its inception it has been heavily biased toward Java. By contrast, the notion that the Microsoft's Common Language Runtime (CLR) is language-independent has been a major selling point of .Net from the very beginning. For Microsoft to back away from that aspect of the platform now would be troubling, to say the least.
Languages as tools for lock-in
Still, if Microsoft is leaning ever further away from the concept of a language-neutral development platform, it's only a symptom of a larger trend in the IT industry. Platform vendors, eager to capture the loyalty of developers and end-users alike, have increasingly seen programming languages as differentiating assets, rather than mere tools.