In a number of recent projects, Microsoft seems to have consciously adopted a more open approach to the development of developer related tools, languages, and frameworks.

The canonical example is ASP.NET MVC, but there are others (MEF, Iron Ruby, Ajax Control Toolkit).

Each of these projects has the following characteristics,

  1. Early release of beta source code to community
  2. During a prolonged beta phase, there was active participation in the community by a key individual (the ‘Program Manager’) from Microsoft - Phill Haack for ASP.NET MVC, Glen Block for MEF, etc.  These people tend to be prominent bloggers.  Personalities are important here – these individuals have to be respected and liked by the community.
  3. Microsoft actually listened to the feedback and visibly incorporated suggestions for improvements into multiple pre-releases.  This wasn’t just a PR exercise.
  4. Microsoft released the final version under Ms-PL allowing community to fork/fix critical bugs outside of official release cycle.

The upside for Microsoft is that they are receiving invaluable feedback early in the development cycle from the experts in the community who will actually use the software in production.  In return, MS are releasing it for free as in speech so the source can be changed, re-distributed, forked, etc.

Compare the success of ASP.NET MVC with the ADO.NET Entity Framework.  Although Microsoft received a lot of feedback on the ADO.NET Entity Framework, the entire development process was far less transparent and there was no single individual, well respected within the community, keeping the project on track.  The release of the Entity Framework prompted the infamous ‘ADO.NET Entity Framework Vote of No Confidence’.

Id like to see Microsoft take the ASP.NET MVC approach for all products where they don’t intend to charge for the end deliverable.  The early evidence seems to suggest that there is no downside.  Personally, Id like to seem them take it a step further and become true open source projects that allow community contributions during development.  These projects would become more like the development model pioneered by Python – with a ‘Benevolent dictator for Life’ role fulfilled by Microsoft with the full trust of the community.  Legal and IP problems aside, I would imagine the problem might be finding enough capable people to fill this role.