Taking things apart (radios, blenders, televisions, an Atari 2600, etc.) as a child in order to see how they were constructed and operated is probably what got me started in computer programming. As an adult my insatiable need to hack a particular technology apart is quenched by Microsoft's Shared Source CLI (Common Language Infrastructure); more commonly known as Rotor.
Brief Overview
The Common Language Infrastructure (CLI) is the ECMA standard that describes the core technologies contained in .NET. Rotor implements this standard. In addition, other projects (Mono and Portable .NET) implement the CLI standard to run on Linux. Microsoft's implementation runs on Windows XP, Mac OS X, and FreeBSD via a Portable Abstraction Layer (PAL). The PAL sits between the operating system and the CLI and maps several dozen function calls between the two.
Rotor allows people (researchers, programmers, teachers, etc.) to view, debug, and analyze .NET source code. Is Rotor's source code the same as the proprietary .NET commercial source code? No. However, both sets of code are from the same early source tree branch. One matured into the commercial version. The other evolved into Rotor. The base virtual hosting techniques of .NET still apply within Rotor: assembly loading, JIT compilation, garbage collecting, IL emitting, compilers (C#, JScript, and a sample LISP how to), security protocols, metadata usage, etc. All conform to the ECMA CLI standard. A full list of features and tools contained in the Rotor download can be found on MSDN (http://msdn.microsoft.com/net/sscli ).
Diving In
The current Rotor tarball is about 18 MB, contains over a million lines of code, and around 14,000 files. Most of the .NET framework class libraries are present except for ADO.NET, Windows Forms, Web Forms, and Web Services. Either you or the Rotor community will have to implement these. On a less painful note, remoting, networking, and XML functionality (and source) are included.
It's a good idea to have a decent computer before installing and building Rotor's code. I chose to perform a "checked" build type.
Build Types:
checked
Turns optimizations off, enables debug code, and generates debugging symbols.
fastchecked
Turns optimizations on, enables debug code, and generates debugging symbols.
free
Turns optimizations on, disables debug code, and generates debugging symbols.
Compiling all of the source code took about 25 minutes on my humble machine.
My Humble Machine:
Processor
Dual Pentium II 450 MHz
RAM
512 MB
Disk Space
30 GB
OS
Windows XP Professional SP1
.NET Framework
Visual Studio .NET 2003 (C#, C++, VB)
Perl
ActivePerl 5.8.0 build 806
Loading





Join the conversation! Your thoughts help the community grow.