Shared Source at Microsoft

I did a presentation on web services and WCF recently for a crowd that consisted mainly of Java developers.    Some admitted they were downright in awe of just how forward-thinking Microsoft is with WS-* support and were even more impressed at the types of demos I was able to conjure up in front of them with little or no code.  However, one guy stated he was not all that impressed with .NET, and said it would be more impressive if .NET were to become an open source project “just like Java”.  We spent some time discussing the Shared Source CLI and how that has been available from the inception of .NET.  Not sure if that suddenly made him a fan of .NET, but it certainly did change the tone of the discussion from Microsoft-as-follower to Microsoft-as-innovator :)

Several days later, a colleague of mine, Rob Cameron, pinged me about shared source projects at Microsoft as part of a discussion he was having with another customer.  I knew that there were projects like WiX that splashed headlines, and in a company this big you know there are bound to be a few more efforts as well.  I did a little digging, and I was kind of surprised at the number of efforts I turned up.  

Below I list a lot of links to various projects and initiatives around Microsoft involving shared source.  There might be more, and various members of Microsoft might be participating in other shared source projects, but the list below consists of the projects I could definitively link to Microsoft.  If you know of other initiatives or Microsoft participation, please leave a comment!

Resources

Microsoft Shared Source Home Page

https://www.microsoft.com/resources/sharedsource

CodePlex

https://www/CodePlex.com

CodePlex is Microsoft's community development Web site. You can use CodePlex to create new projects to share with your fellow developers around the world, join others who have already started their own projects, or use the applications on this site and provide feedback.

GotDotNet.com

https://www.gotdotnet.com/Default.aspx

.NET Framework community website.

Port25

https://port25.technet.com/

Source Licensing Programs

Enterprise Source Licensing Program.

https://www.microsoft.com/resources/sharedsource/Licensing/Enterprise.mspx

The Enterprise Source Licensing Program (ESLP) is a no-cost program that licenses Microsoft® Windows® source code to enterprise customers and state and local government organizations in eligible geographic markets. Any organization that meets the specified criteria—and signs the source licensing agreements may access Microsoft Windows 2000, Microsoft Windows XP, and Windows Server™ 2003 operating system source code.

Systems Integrator Source Licensing Program

https://www.microsoft.com/resources/sharedsource/Licensing/SystemsIntegrator.mspx

The Systems Integrator Source Licensing Program (SISLP) enhances Systems Integrators' (SIs) ability to support customers using the Microsoft® Windows® platform through source code access. The SISLP is open to any Systems Integrator with 1,500 Windows seats (Windows 2000 or above) or a Microsoft Services for Partner SI Agreement with more than 700 Services Resource hours. This program is available, for no additional fee, to approximately 150 SIs in 34 geographic markets. The program includes source code for Windows 2000, Windows XP, Windows Server 2003, and subsequent Windows releases.

Shared Source and Permissive License Projects

Shared Source Common Language Infrastructure

https://www.microsoft.com/downloads/details.aspx?FamilyId=8C09FD61-3F26-4555-AE17-3121B4F51D4D&displaylang=en

The Shared Source CLI is a compressed archive of the source code to a working implementation of the ECMA CLI and the ECMA C# language specification. This implementation builds and runs on Windows XP.

IronPython

https://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython

IronPython is the code name of the new implementation of the Python programming language running on .NET. It supports an interactive console with fully dynamic compilation. It is well integrated with the rest of the .NET Framework and makes all .NET libraries easily available to Python programmers, while maintaining full compatibility with the Python language.

Atlas Control Toolkit

https://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit

Built upon the ASP.NET "Atlas" Framework, the Toolkit aims to be the biggest and best collection of web-client components available.

WiX

https://wix.sourceforge.net/

The Windows Installer XML (WiX) is a toolset that builds Windows installation packages from XML source code. The toolset supports a command line environment that developers may integrate into their build processes to build MSI and MSM setup packages.

MechCommander2 Shared Source Release

https://www.microsoft.com/downloads/details.aspx?FamilyID=6d790cde-c3e5-46be-b3a5-729581269a9c&DisplayLang=en

This release contains all of the source code and source assets required to build MechCommander 2.

Shared Source Microsoft Device Emulator 1.0 Release

https://www.microsoft.com/downloads/details.aspx?FamilyID=faa8c81d-7316-4461-a0ed-6c95b261ddcd&DisplayLang=en

Source Code for Microsoft Device Emulator 1.0.  The Shared Source Device Emulator is a compressed archive of the source code to the Device Emulator V1.0, buildable using Microsoft Visual Studio 2005.

MSBee

https://www.codeplex.com/Wiki/View.aspx?ProjectName=MSBee

MSBee is an addition to MSBuild that allows developers to build managed applications in Visual Studio 2005 that target .NET 1.1.

Team Foundation Server Administration Tool

https://www.codeplex.com/Wiki/View.aspx?ProjectName=TFSAdmin

TFS Admin Tool allows a Team Foundation Server administrator to quickly add and modify user permissions to all three platforms utilized by TFS

Managed Stack Explorer

https://www.codeplex.com/Wiki/View.aspx?ProjectName=MSE

MSE is a lightweight tool that provides a quick and easy way to monitor .NET 2.0 managed processes and their stacks.

Paint.NET

https://www.getpaint.net/index.html

Paint.NET is image and photo manipulation software designed to be used on computers that run Windows 2000, XP, Vista, or Server 2003. It supports layers, unlimited undo, special effects, and a wide variety of useful and powerful tools.

Msdnman

https://www.codeplex.com/Wiki/View.aspx?ProjectName=msdnman

msdnman is a command-line viewer for documentation stored in the MSDN/TechNet Publishing System (MTPS).

Microsoft XML Diff and Patch

https://download.microsoft.com/download/1/f/1/1f146f9b-2a71-4904-8b91-e2f62d7b64b3/XmlDiffPatch.exe

This tool lets you identify changes between two XML files. It also lets you patch the original XML file with the changes to get the final XML file. The assembly, source code, documentation and samples for this tool are now available on MSDN.

Microsoft XSD Inference 1.0

https://download.microsoft.com/download/8/0/f/80fca9f1-292e-4b50-b512-ccf004d4b58e/xsdinference.exe

The Microsoft XSD Inference utility is used to create an XML Schema definition language (XSD) schema from an XML instance document. When provided with wellformed XML file, the utility generates an XSD that can be used to validate that XML file. You can also refine the XSD generated by providing the tool more wellformed XML files. The download contains the core library, simple command line utility and the source code.

Not “Shared Source”, but Notable Places to Get Source

Office 2003 XML Reference Schemas

https://www.microsoft.com/office/xml/default.mspx

Microsoft offers open and royalty-free documentation and licenses for the Microsoft Office 2003 XML Reference Schemas. These Reference Schemas include SpreadsheetML (the schema for Microsoft Office Excel 2003), FormTemplate Schemas (the schema for Microsoft Office InfoPath 2003), WordprocessingML (the schema for Microsoft Office Word 2003), and and DataDiagramingML (the schema for Microsoft Office Visio 2003). The Schemas provide developers and representatives of business and government a standard way to store and exchange data stored in documents.

Enterprise Library

https://www.microsoft.com/downloads/details.aspx?FamilyId=5A14E870-406B-4F2A-B723-97BA84AE80B5&displaylang=en

This release of Enterprise Library for .NET Framework 2.0 includes: Caching Application Block, Cryptography Application Block, Data Access Application Block, Exception Handling Application Block, Logging Application Block, and Security Application Block.

Smart Client Software Factory

https://www.microsoft.com/downloads/details.aspx?familyid=2B6A10F9-8410-4F13-AD53-05A202FBDB63&displaylang=en#QuickInfoContainer

The Smart Client Software Factory provides an integrated set of guidance that assists architects and developers in creating composite smart client applications.

Web Service Software Factory

https://www.microsoft.com/downloads/details.aspx?familyid=DB996113-6E92-4894-9B7E-0DEBB614D72F&displaylang=en

The Web Service Software Factory is a cohesive collection of guidance that enables architects and developers to design and build higher quaility services and achieve more predictable results in less time by applying proven practices and patterns directly within Visual Studio 2005.

Licenses

This is one of those areas that software developers like to gloss over… I got it for free, so I can use it, right?  There are different types of licenses associated with various bits of code (some only let you read code, while others let you modify and even sell your modifications).  You can find out more about the licenses at:

https://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx

Here is a quick snapshot.

Microsoft Permissive License (Ms-PL) - The Ms-PL is the least restrictive of the Microsoft source code licenses. It allows you to view, modify, and redistribute the source code for either commercial or non-commercial purposes. Under the Ms-PL, you may change the source code and share it with others. You may also charge a licensing fee for your modified work if you wish. This license is most commonly used for developer tools, applications, and components.

Microsoft Community License (Ms-CL) - The Ms-CL is a license that is best used for collaborative development projects. This type of license is commonly referred to as a reciprocal source code license and carries specific requirements if you choose to combine Ms-CL code with your own code. The Ms-CL allows for both non-commercial and commercial modification and redistribution of licensed software and carries a per-file reciprocal term.

Microsoft Reference License (Ms-RL) - The Ms-RL is a reference-only license that allows licensees to view source code in order to gain a deeper understanding of the inner workings of a Microsoft technology. It does not allow for modification or redistribution. This license is used primarily for technologies such as development libraries.

I was really impressed to see this amount of activity in shared source, as it has not been a focus area of mine at all over the past several years.  I am certain that this is only the beginning.

Thanks to Rene Yoakum for her insight while writing this post.