In early April our friend Michael Desmond, from Redmond Developer News, wrote a thought provoking article related to Open Source on the Microsoft platform. The title of the article was "Open Source .NET Projects Getting Cold Shoulder?" and it featured quotes from Jeff Atwood ( formerly of Vertigo - the original authors of the IBuySpy Portal sample application in 2000 ) which highlighted that "open source projects are treated as second-class citizens in the Microsoft ecosystem". Later, in May, Michael Desmond followed up on the original article and published a new editorial focussed on the question of "Should Microsoft be doing more to make open source development a first-class citizen in the .NET space?".
Obviously, I have my own opinions on this topic but since I have been known in the past to let my emotions get the best of me when it comes to subjects for which I am very passionate ( ie. Jeff Atwood's blog pertaining to his $10,000 open source donation ) I have held my tongue thus far. However, as founder of the largest and most successful open source project on the Microsoft platform, I also feel an obligation to the Microsoft developer community to do justice to this topic.
The fact is, Open Source projects on the Microsoft platform are treated as second-class citizens.
Sure, we get some much appreciated support by specific groups within Microsoft who "get" it, but for the most part, the Company does not have a clear mandate on how to deal with the open source movement which is now making significant inroads into their platform. Instead, there is a great deal of confusion, competitive posturing, and downright ignorance demonstrated by Microsoft employees at all levels.
Now, this attitude certainly does not help matters for those brave souls who have a strong desire to take the open source path on the Microsoft platform. It's bad enough that Microsoft Open Source projects are shunned by the mainstream open source movement ( read my blog "No Respect for Windows Open Source" from a few years back ). But to have to contend with adversity from Microsoft itself, really makes matters more complicated than they should be.
However, before you throw in the towel, there is one very important fact to note. Despite the adversity on all fronts, the DotNetNuke open source project has flourished. As we approach 600,000 registered users and 5.0 million downloads all time, the project continues to gain traction and momentum. So there is clearly a high demand for open source on the Microsoft platform. So even with extremely limited support from Microsoft, it is possible to create a highly successful community around open source technology on the Windows platform.
So, let's get back to the topic of this blog; should Microsoft be doing more to make open source development a first-class citizen in the .NET space? Since "doing more" is a highly subjective phrase, lets talk about some tangible concepts which may help shed some light on the dilemma which open source poses to Microsoft.
But first, let's get one thing clear. When you approach this topic, you need to recognize that Microsoft is a public corporation which needs to deliver value to its shareholders. The value is measured in financial terms, which means that Microsoft absolutely must continue to pursue its competitive dominance in the market in order to succeed. Anything which Microsoft does, needs to have a strategic goal aligned with its financial goals. So fundamentally, this is where we need to begin our discussion.
The open source movement is a very mature, widely accepted, and even highly demanded model in the software industry today. This may not have been true 5 years ago when we started the DotNetNuke project, but with the large scale enterprise adoption of open source software in all sectors, it signals that it has truly hit the mainstream. Open source offers several distinct advantages over proprietary software, which are now seen as key value propositions by organizations looking for large scale technology solutions. These include a reduced dependence on software vendors, lower total cost of ownership, and increased ability to customize or adapt the solution to your business requirements.
So, if we look at the benefits of open source, what does Microsoft stand to gain strategically by better supporting open source citizens on its own platform?
Well, since Microsoft truly is a "platform", the more native solutions which are available, the more likely a customer will be to adopt and remain committed to the platform. In most cases, an open source Windows solution is dependent on a variety of proprietary Microsoft infrastucture components, so there is still ample opportunity for the Company to derive licensing revenue. In addition, the existence of a healthy open source ecosystem, provides loyalty, goodwill, education, marketing, and strong support for the individual projects, but also for the Microsoft platform as well.
What I just mentioned above is really quite simple and logical for anyone who understands open source at even a basic level. So the question is, how can Microsoft do more to support open source?
Well, there is one solution which always seems to come up in regards to this question. Many people think Microsoft should simply open its checkbook and give donations or grants to open source projects. I have seen these types of proposals numerous times in the community, and given the widely held belief that Microsoft is a fat cash cow ( not to mention the Gates Foundation's philanthropical efforts world-wide ), it makes logical sense that they could entertain the idea. Heck, even Google has the Summer of Code, where they sponsor students to work full-time on open source projects during the summer break. Honestly, I think Google has an alterior motive here in terms of employee recruitment purposes, but regardless, it is a well managed community program that has generated considerable goodwill.
So why has Microsoft not entertained a similar strategy? Well, the main difference I see is that Google is not a "platform" vendor. Therefore, there are less competitive issues to deal with from the open source projects who participate in their program. When it comes to Microsoft, the Company is constantly monitoring community innovation in order to ensure that its own products maintain their dominance. Providing financial support to an open source project and then later reaping the rewards from its efforts would put Microsoft in a difficult moral ( and potentially legal ) position. I am sure there are ways to mitigate this, but as long as Microsoft continues to push the edge of the network with commercial products in every conceivable market niche, it puts them at odds with every third party developer on their platform.
Ironically, a group of notable ASP.NET open source projects made a proposal last year which involved financial support. The end result? Microsoft hired the founders of the majority of these projects to work on proprietary products in-house at Microsoft. Now, to be fair, Microsoft did allow these developers to continue working on their open source projects in their spare time ( which was a huge win at the expense of Microsoft Legal ), but it certainly did not address the original proposal.
Regardless, of the complications, I still believe the Microsoft could provide some support in this area. It may not have to be at the scale of Google and in fact, it may not even need to be managed by Microsoft itself. Realistically, when it comes to a Google-like financial support program for open source projects, it may be much easier if the program was provided by a third party organization outside of Redmond much like the way Microsoft supports its User Groups through INETA or Culminus.
So let's look at another area..
Port25. What is that, you ask? Well, honestly I don't know as nobody from Port25 has ever reached out to us. They do not seem to work with any other native .NET open source project, as far as I can tell either. Port25 is supposed to represent the "Open Source Community at Microsoft". Is it just me, or does it seem odd that the largest open source project on the Microsoft platform ( DotNetNuke ) has no representation or open communication channel with Port25? Perhaps this is because Microsoft's definition of "Open Source Community" actually means vendors who write software for the Linux platform, which Microsoft would like ported to Windows.
A case in point is an announcement I saw recently on the SpikeSource site ( for those of you who don't know, SpikeSource certifies "stacks" of open source components for production use ). The title of the announcement is "Microsoft Selects SpikeSource to Deliver Open Source Applications on Windows Server 2008". Reviewing the open source applications which are included in the bundle, I notice that all of them are based on PHP. Talk about a slap in the face. I knew that Microsoft was working with Zend to provide a better PHP run-time engine in Windows 2008, but I did not expect open source PHP app vendors to immediately get front-of-the-line service from Microsoft.
Anyways, my point in this area is that Microsoft could do a much better job reaching out and supporting its native open source community. Marketing is a key aspect of open source, and the fact that Microsoft does almost nothing to actively promote open source for its own platform is, quite frankly, a travesty. In addition, Microsoft has partnerships with key industry stakeholders and channels who represent great opportunities for promoting the benefits of open source on the Microsoft platform. Its a shame they choose to reserve these opportunities for non-Windows open source projects.
So lets talk business...
Recently I had the pleasure of speaking with a long-time Microsoft employee who has a very good grasp on the corporate culture as well as a solid understanding of open source. What I learned surprised me.
In an organization as large as Microsoft, there is a sizable sales force. This sales force is influential, well organized, and highly motivated to sell the benefits of the Microsoft platform. Each salesperson basically operates from a scorecard which effectively boils down to wins and losses. A win is when a customer purchases a license to a specific Microsoft product. A loss is when they do not. The thing with wins though, is that depending on the customer, there is generally a primary product which is intended to be the focus of the engagement. For example, if an enterprise customer has expressed interest in content management, SharePoint will be the focus of the sale. A win would involve the customer choosing SharePoint and a loss would involve the customer choosing an alternative non-Windows product like Alfresco.
The logical point that the Microsoft employee expressed to me, is that there is a missing key in this equation. Would it not be more beneficial if a sales person had a fallback strategy where they could push an alternative Windows platform product like DotNetNuke? In this case, they may not get the SharePoint "win", but they would still get a Windows Server and SQL Server "win". This beats the heck out of a complete "loss" where the customer chooses Alfresco/Oracle/Linux ( if you lose the platform, you lose the war ).
Currently, the Microsoft Business division views all .NET open source projects as competitors rather than enablers. This mindset results in a significant loss of potential business and revenue for Microsoft. However, a change in mindset of this magnitude is not trivial, and would have to occur from deep within the Company. I realize that only the more mature open source projects would be candidates for such an opportunity ( ie. the open source project would need to have a professional services and support offering ). But since we are talking of tangible ways that Microsoft could support its native open source offerings, this is certainly a viable suggestion which I am sure few people have considered.
In closing, I want to say that I am not naive to the complications which open source poses to Microsoft. However, Microsoft must also recognize that open source offerings for their platform are here to stay and they can either choose to continue ignoring us, or they can choose to embrace us. Personally, I think the latter of those two options better aligns with Microsoft's long term strategic goals, so the choice should be clear.