For a while I am thinking about the Microsoft's support to open source projects. Some news that attracted my attention to this issue were
- Foundation of CodePlex, open source project hosting web site of Microsoft
- Ms-PL license developed by Microsoft
- Release of .NET Framework libraries source code . Read more
- Release of ASP .NET MVC source code. Read more
Microsoft has developed very successfull technologies through history. COM/ActiveX formed a good baseline for MS platforms and related runtimes like MTS, COM+ and DCOM were a must for enterprise level application development targeted at MS platforms. VB was a fantastic programming language, even I've never written single line of VB code I remember how my co-workers rocked with VB, ASP was not perfect but it was, actually it still is, productive and easy to learn and VC++ powered with MFC was the programming language of choice for lower level software development. All these runtimes, frameworks and languages were not perfect, but they did succeeded in helping software developers to produce valuable software. However some of these technologies required software developers to have some sort of geek talent. For example it was very difficult for a regular software developer to write some sort of event sink COM code or programmatically configure the DCOM environment. I think Microsoft has learned more than we expected from the history I briefly tried to explain. Now we are at the age of .NET and related technologies and personally I expect less hesitation than the previous experiences we all ran through.
Communities behind technologies
I think all these steps and efforts are very much related with the direction Microsoft plans for the .NET Framework, bunch of foundation frameworks (like WWF, WPF and others) and it's flagship product Visual Studio. These steps also show that Microsoft analyzed Java community very well. Communities have direct impact on the directions of the technologies, once you build (or help to build) an active community around a technology it is very likely that you will end up with long lived and more mature product.
The thin line between enforcing and empowering
Microsoft has very bad history record about enforcing developers to stick to the technologies and practices they offer, leaving very limited space for our own judgement of truth. For example it was very hard practice to write COM code without VC++, even with VB that was very hard (I exclude Delphi). But Microsft's approach changed over time from enforcing to empowering developers starting with the establishment of .NET Framework and related technologies. For example release of some well known patterns as application blocks and later bundling these application blocks to more mature foundation class libraries is a nice example for empowering. Even better example is the release of ASP.NET MVC open source, .NET developers will not have to stick to default WebForms view engine and they can develop alternative view engines that will work with ASP.NET MVC.
Customer and developer trends
Today software developers focus on interoperability, extensibility, maintainability and testing more than ever. This trend forces big brothers of the industry to develop different licensing approaches, different marketing strategies and development platforms as well. I have never understood that what did Microsoft gained from hiding the source code of a piece of software like TextBox control or a GridView control. That kind of source code was a big value, say 20 years ago, but today it has no value I guess, since software users demand more Business Intelligence and we, software developers, need robust frameworks and development tools to provide this intelligence.
Software Development Ecosystem (targeting MS platforms)
I like the term ecosystem very much. Because this term can be used to describe an environment containing many diverse components surviving together in a nice harmony (balance). Software development is in a way an ecosystem containing actors, processes, tools, frameworks and lots of communication. The diversity of the components in a software development ecosystem makes it hard for a single provider, even that is Microsoft, to provide all the facilities needed inorder to form some kind of harmony. I think Microsoft realised this very well and backed off from the obsession to provide every component needed in this ecosystem. By the way in Turkey we take diversity as granted and I believe that applies to software development ecosystem too, more colors make a better painting. Returning back to the issue, I'am sure that Microsoft's effort for openness will trigger other actors to enter the ecosystem and existing ones will have to reshape themselves to adapt to the new conditions. I expect new and more mature components to evolve while old ones evaporate. Nowadays we are in the middle of evolution process which will produce much than we expect.
It seems that Microsoft is doing more right things than ever. I expect this process to introduce innovative and open source technologies (I mean community initiated open source technologies) to the .NET community. We, as software developers, shall be more confident about using Microsoft tenologies than ever. I recommend you to keep an eye on these projects