Microsoft's Rotor project, recently refreshed on June 25, 2002, includes source code for the Common Language Infrastructure (CLI) execution engine and frameworks, as well as compilers and other developer tools. The Rotor code can be used, modified, and re-distributed, for non-commercial experimentation, as a basis for courseware or lab projects, or as a guide to those who are developing their own CLI implementations under a simple shared-source license. The specifications on which it is based, ratified last year as ECMA-334 and ECMA-335, are currently undergoing ISO fast-track processing.
Each member of the Rotor team at Microsoft spends time monitoring technical mailing lists and newsgroups that are relevant to the project, in order to answer questions and to be aware of feedback. This gives us a great opportunity to observe the wonderful variability of online behavior, since being associated with Microsoft in any way automatically qualifies one as a flame-attractant, a target for trolls, and a potential investor in outlandish "business" ideas. Here is a paraphrase of one of the trolls that we see on a regular basis:
R0+0R is not free software. r0ToR wants to own yer soul. Beware of Bill Gates mind-snares hidden in source code!!
I'm sorry to disappoint, but the Rotor team has a much more straight-forward agenda than the world domination implied in this kind of post (and we specifically want nothing to do with soul trapping). Rotor is an unapologetically free and non-commercial source code distribution that benefits a broad range of people, despite its non-commercial restrictions.
The reasons we have made this code available are easy to understand: Microsoft's success is tied to the success of the CLI.
Rotor exists for teaching and learning about the CLI, in any venue. The CLI standard and its component model will be important for years to come, and there is no better way to understand it fully than by browsing and building the source code to one or more of the CLI distributions that are currently under development. The licensing terms for Rotor allow for easy modification and redistribution of its source code, and our team hopes that this foundation will make it easy and attractive for researchers, teachers, and hackers of all stripes to do interesting and innovative things.
Rotor has a number of implementation features that distinguish it from other CLI distributions and make it worth examining: it is replete with tools, libraries, a growing amount of documentation, and samples that augment its high-quality and feature-complete execution engine.
The great majority of the downloads to this point have been by developers who are intent on understanding Microsoft's .NET Framework components and their underlying component model, either because they use the commercial .NET Framework or because they are implementing their own version of the CLI. Rotor, because of its completeness, can be used to learn in great depth about strategies for JIT compilation, automatic memory management, code access security, component isolation and loading, type systems, remoting infrastructure, and the other arcane but fascinating topics that typify virtualized execution.
Adoption by .NET developers is an unsurprising thing to report, since they may be naturally inclined towards Rotor-tropism, but there is another, more significant group of hands-on coders that is beginning to roll up their sleeves with the Rotor code: teachers, students, and researchers who are engaged in research, prototyping, and curriculum development. From July 23-26, while some of us will be busy soaking up the love at the O'Reilly Open Source Convention, the first Rotor-specific "Project Workshop" will be occurring at Microsoft Research's Cambridge lab. The project Web site outlines the conference, but let me call your attention to the summary of projects currently underway.
This list was culled from a large number of proposed projects, and it represents a good cross-section of the kinds of experimentation that we expect to see done with Rotor. This may be a non-commercial sector, but there are clearly many interesting things going on within it.
In the same vein, a Microsoft-staffed research project that is currently underway (and will be presented at the Rotor conference) is an experimental implementation of generics on top of Rotor. Generics are an oft-requested feature for programming languages such as C# and Java that simplifies dealing with some of the common representational problems facing object-oriented programmers and programming language designers. (See Microsoft Research's project page for technical details and conceptual overview material on generics and the CLI.) Having ongoing Rotor-based work available for experimentation should definitely stimulate energetic debate on the implementation details of this nifty feature.
There has also been porting activity. The Rotor team at Microsoft has been continuing to refactor code and improve features that facilitate portability, as you can see in the most recent code refresh. From compiler- and debugger-related fixes to new test cases and improvements to the build process, you can see that the work that is happening is geared towards making the codebase easier to port.
We are happy to see reports of diverse porting activity in the wild, from experiments with embedded devices all the way to efforts to bring the code up on other general purpose operating systems. This experimental actvity, besides being a lot of fun, will unquestionably improve future versions of the CLI and other virtualized execution environments yet to come; these improvements will enrich all of us in the broad programming community.
Work with Rotor runs the gamut from academic expositions on formal semantics, to introductory computer-science curricula, to porting efforts. The diversity of the activity is a testimony to the breadth of the possibilities within the non-commercial space, as well as the flexibility of Rotor's shared-source license. The larger .NET Framework team at Microsoft is palpably excited to see the ongoing interest in their hard work, and is eager to learn from and participate in the growing community. Non-commercial collaboration between commercial businesses, governments, individual hackers, and academia has been an effective catalyst for innovation in the past -- witness the Web. We hope that the CLI, with Rotor as a harbinger of its technical promise, will help to spark new collaborations that are just as fruitful.
David Stutz is a tenured member of the Microsoft Research team, and is currently working on the team that is implementing the Microsoft Shared Source CLI.
Return to .NET DevCenter
Copyright © 2009 O'Reilly Media, Inc.