Microsoft Should Financially Support Open Source Projects

I left Jason Matusow a comment on his article about the Microsoft Open Specification Promise.

Jason Matusow graciously replied here. Jason, thank you for taking an interest in this topic. I think these issues are important to Microsoft as well as to the community of .NET developers. Jason also replied to my comment on his blog with some good points in a follow up comment.

I guess those exchanges got me warmed up. I have a much more clear picture now of why Microsoft should financially support .NET open source projects and why it bothers me that Microsoft doesn't do this already.

As Jason mentioned, DotNetNuke (DNN) is a good example of a .NET Open Source Project that is very positive for the Microsoft developer community. My current employer uses DNN in its commercial application. I also agree with Jason that DNN is a good example of the type of project Microsoft could and should continue to actively support.

Another great open source project is the Subtext blogging platform which is a fork of .TEXT. (If you clicked on the link to Subtext, the site you saw was hosted in DNN.) I run this blog on Subtext and I have recently gotten to know the Subtext team. Subtext is one of those projects on SourceForge Jason mentions that uses Visual Studio for its development. Subtext also uses log4net, Nant, NUnit and other open source tools that are critical to its survival. I recently contributed a patch to Subtext and I used TortoiseSVN for Subversion along with Visual Studio to do so.

These open source dev tools (NUnit, log4net, TortoiseSVN, NDoc and more), plus SourceForge itself, keep many of these other projects such as Subtext going. In fact, that is also true of commercial (non-open source) projects.

I am a Microsoft-centric developer with an MSDN subscription working in a company that is a 100% Microsoft shop. Yet I depend upon open source tools to supplement my MSDN subscription and my company's subscriptions to commercial tools such as Developer's Express. Without the open source tools, life as a .NET developer would be a couple notches less satisfying and much less productive.

In my company's commercial application we depend upon DotNetNuke, Nant, log4net, NUnit and other open source tools. Those open source projects help support us. (In fact, without DNN, we would probably be out of business because our developments costs would be too high.) In turn, my company helps support Microsoft (because we purchase licenses and MSDN subscriptions). Yet Microsoft does not complete the circle by financially supporting any of those open source projects. NDoc stands out as an example.

Microsoft benefits far more from all these open source projects than people in the company realize. The open source projects fill critical gaps of functionality - but that is obvious. What isn't obvious is how the open source projects benefit Microsoft financially. As I said, my current employer would not be in business without the open source tools. How do I know? Because the company actually told the staff it was going out of business and it started shutting down. At the last minute an outsider stepped in and saved the company. A central part of his turnaround plan was using DotNetNuke to lower development costs. And one of the first uses of funding that came in was to purchase more Microsoft products (and renew existing licenses).

As an insider who has both software development and business experience, watching all this happen demonstrated clearly that DotNetNuke contributed directly to Microsoft revenues. This may be a dramatic (and small scale) example, but the same forces are at work in subtle ways in development shops all around the world.

Open source projects lower the costs for development teams and those lower costs translate into greater ability to afford the prices Microsoft charges. Therefore the existence of .NET open source projects helps support Microsoft's pricing power. Microsoft could help itself and help the community by financially contributing to a lot of those 600+ open source .NET projects Jason Matusow mentions.

The appearance (real or imagined) of Microsoft exterminating an open source project and replacing it by a closed source project doesn't sit well with me or a lot of others. Similarly, passively standing by while any widely used .NET open source project dies (this is certainly not imagined-- see NDoc) from lack of financial support makes Microsoft look bad and it hurts the community.

That lack of action (and financial support) also scares people like me. As I said in one of my blog posts, Microsoft's shared source efforts with .NET and other actions won over my heart and mind and I aligned my career with Microsoft's technologies. But when I saw Microsoft let NDoc die, I surveyed the landscape. What I saw gave me a twinge of fear that I had aligned myself with a company that still had elements of the 'Evil Empire' alive somewhere deep within it. That feeling is what prompted my recent blog post that Jason referred to.

I want to associate myself with the good guys (in my career and otherwise). I would love to see Microsoft unquestionably become known as the good guys. Financially supporting open source would do a lot to help make this happen. If I ever do refocus my development career around Linux development (which is a real possibility), the primary factor driving that change would undoubtedly be related to Microsoft's behavior. The more Microsoft treats others poorly (whether those others be small open source projects or large government entities), the more I want to move to the other side.

Jason, thank you for taking an interest in my comment on your blog and for taking the step of forwarding the link to my blog to a few folks inside MS.

Postscript

As I was finishing this article, I typed in Evil-Empire on Google. Out of 3,230,000 results, Microsoft was mentioned as high as #7. Microsoft also showed up many times in the results, even though the term "Evil Empire" originally had nothing to do with Microsoft. However, as Wikipedia says,

Within hacker culture, the term has come to be used as a reference to Microsoft and its business tactics, often seen as unethical and monopolistic.

As a side note, I have to ask: Does Google somehow tune their search results to return Microsoft when someone searches on Evil-Empire? I saw articles that mentioned Microsoft [anti-trust, etc.] but did not include the words Evil Empire.

Wouldn't it be great for all of us who enjoy developing on the .NET platform to eradicate any association of the term "Evil Empire" with Microsoft? As I said, I want to be associated with the good guys!

Read my follow up thoughts on this subject here.

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

This is worth reading. Nicely stated, Joe.

Dave - great posting. I can't possibly do this posting justice with a brief comment here. Later this weekend I'll put up a blog posting on it. I'm also going to tune in a few more folks on the discussion (as I said before). I have been with Microsoft 11 years and have yet to attend the Evil Empire training session. I hold myself to very high ethical and moral standards and would not stay if I ever felt that was in conflict with my employer. Anyway - thx again for the comments and look for a longer entry on my site in a day or two.Jason

Jason, I look forward to your blog entry on this subject. As another side note, I want to say that the Microsoft employee blogs really do a lot to put a human face on Microsoft. But I guess you know that or you wouldn't be putting in the effort to post a response. Thank you for taking the time to blog on this subject.

Minor niggle, but Subtext uses MbUnit, not NUnit. We used to use NUnit back in the day.

I don't think Microsoft let nDoc die - the users did (probably not knowing the need for financial support for the author).I don't really think that it's Microsoft role to financially support open source projects - they're a business with a mission. However when they've seen open source projects that fitted this mission, I think we've seen that they helped, financed or incubated projects - like hiring the author behind IronPython.I'm working full time on an open source .NET project myself - a web development framework/cms called umbraco (http://umbraco.org). A think I learned is that if you're giving things "away for free", you need to tell your userbase if you need financial support - and you need to do it before you burn your bridges. If everyone who downloaded and used nDoc was tolded (before closing) that a simple 5$ (or 50$ for that matter) donation would make a huge difference, I'm very positive the picture would have been very different. I blogged about my recent donation experiences here:http://umbraco.org/13079.aspxAny project - whether open or close source - should be responsible for it self. Be honest about the needs. Many open source projects are hobby projects, others are incubated by companies while a few is made as a pure living. I think all of the projects would benefit greatly by telling it's user base under what curcumstances it's being developed. And clearly - not hidden away in a readme.txt file or as a dimmed link in the footer (we're working on a new website where this part is much more focused). If your users love your product, they would be very willing to help it "stay in business". And they will surely donate if they know how the money are spend and how much is needed. In a world of open source, I believe that you can see your users as "potential tiny investors" with the one - wonderfull - demand, that you'll keep working on the thing they love and need. Now talk about a win-win situation :-)

@Niels: It is nice to see the work and dedication you are putting into umbraco. I read your 'Donations' article and it seems like you are finding the right solution for yourself.Certainly Microsoft should not support every .NET open source project. Some projects may not want or need Microsoft's support, just as some project founders may not ever want to become Microsoft employees.However, if Microsoft made a no-strings-attached donation to umbraco, as I just did, would you turn it down? If so, why? Let's say you reached a point where you had two choices: Choice one would be stopping work on umbraco so you could get a job and pay off your umbraco loans (don't laugh - this happens frequently). Choice two would be accepting donations from companies like Microsoft. My point is that the existence of a vibrant open source community for the .NET platform benefits Microsoft. Microsoft should support that community. The logic is the same as saying that any large corporation has the responsibility to be a good citizen in the community where it operates. Around my town Citibank frequently does things for the good of the community.When Microsoft takes a hands-off approach and lets very, very popular and widely-used open source projects die from lack of financial support, Microsoft is not being a good corporate citizen.Microsoft can't support every community project, but it can pick and choose the way any corporation does when it makes donations. In fact, I would be willing to guess that Microsoft regularly sponsors some type of community projects in the bricks-and-mortar communities where its employees work and live.It just makes sense that Microsoft should support the .NET open source community. Not only is it the right altruistic thing to do, but doing so has advantages to Microsoft as I tried to point out in my article.In regard to umbraco, I am just starting to look into an open source CMS for a potential upcoming project. I will take a serious look at umbraco. Thanks for posting your comment here, Niels.

HI Dave!I would certainly and gladly receive any donation that comes from Microsoft - it might even make me dance :-)But - I think Microsoft does a lot to support open source projects (and developers in general). Think CodePlex, think the great amount of docs on msdn. I've been in contact with Microsoft Denmark (where I'm based) a couple of times where they asked if they could help (not financially though).My point was simply that Microsoft doesn't let any projects die. If the projects are popular enough they would certainly be able to finance them selfes. I'm also 100% positive that nDoc could have been financed if the developer told more clearly that he needed funds. But it seems like a taboo for most developers, and that's a shame for those who want's to dedicate more than just spare time to the project.But don't blame it on the users, because they don't know better. And don't blame it on Microsoft - they're doing a whole lot already, even though many like to picture them as the Evil Empire.Regarding umbraco, then welcome aboard. Our documentation sucks big time, but our community/forum (http://forum.umbraco.org) is a blast with an average response time at 1.5 hours. Feel free to e-mail me if you have any questions; nh at umbraco [.] dk.Cheers,Niels...

@Niels: I'm sure Jason and the others at Microsoft will appreciate hearing your feedback about the support you are getting from Microsoft.Plus, you are right about who is ultimately responsible for a project's success. It sounds like your positive attitude is a great asset for your project. Just as in life, it holds in open source too that the victim mentality is no good for anyone.Regarding your main point, I am in agreement with you. I think your comments are helping clarify some important points that were not very clear in my article.I do not feel that Microsoft should be *responsible* for even a single independent open source project. I was hoping to make the point that judicious (and targeted) financial support for certain projects is something that Microsoft should consider as a way of being a corporate good citizen. I also tried to point out that I didn't think Microsoft needed to act only from an altruistic position. Even from a purely self-interest perspective, I think financial support for key projects in the open source community makes sense for Microsoft. A large, vibrant open source .NET community is good for Microsoft.Let me try to further clarify my point in a way that, I think, shows we are in agreement: when a donor donates to a charitable organization, that donor does not become responsible for that organization's survival or its management. For any single donation, a donor picks one cause and finds one worthy recipient. It is up to the recipient to put the funds to good use. If the funds are not used wisely, more donations will be hard to come by and the charitable organization will probably cease to exist. No one would blame the donors for that.However, when people capable of donating stand by idly while good, hard-working charities are making every effort to bring forth good works, people do raise questions. Wealthy citizens have responsibilities that average citizens do not have. The same applies to wealthy and powerful corporations. The .NET open source community is Microsoft's home turf. Most of these developers are using Visual Studio on Windows. And many commercial 100% Microsoft development shops benefit from the products produced by these open source projects. If the cream of the crop of these .NET open source projects received more support from Microsoft than they do today, the entire Microsoft community would benefit. On the other hand, if well-run, widely-used .NET open source projects have to look for financial support from everyone else in the community other than Microsoft, we have to ask why the richest and most powerful player in the community keeps his hands in his pockets while smaller, much less wealthy people and companies in the same community offer their support.

@Dave: Did your employer that commercially use these products sponsor any of the projects?Don't you think it's more up to the users to keep the developers fed, than to Microsoft who provides the platform?Also, if Microsoft makes a contribution to one project, how long before another project starts complaining that they did not get the same funding?

@ray: The prevailing view in the MS community is that MS itself does not have any responsibility for supporting .NET open source. I am trying to help change that view by pointing out why I think it doesn't make sense. There are several articles here on my blog that relate to this topic, and there are also some good comments by readers of the various articles. As I said, in the real world, a community leader with the size, influence and wealth of MS would never get away with doing so little to support various projects in the community. (I guess that's a perspective that will only click with those who have been involved with charitable organizations or donors, however. But it is a valid perspective.)I assume that because MS has been so anti-open source in the past, people now have a mental block that prevents them from realizing that MS has a duty to do more for this community. I realize that many project leaders are saying MS does help them in non-financial ways. However, by most real-world community standards, MS is doing far too little -- and I think actual financial contributions would/should be the next logical step.However, there is also another related point. In order for me to feel that MS has my best interests as a Microsoft-centric developer in mind, I want to know that they really, really support the .NET open source community and that they have given up all old hostilities toward open source (at least as far as .NET open source goes). If MS takes the step of financially supporting .NET open source, then it will show developers like me that MS really has changed so old biases.As to projects feeling entitled to get what every other project gets, that's like saying that we can't pay the CEO more than minimum wage because then every worker will want to be paid what the CEO makes. Obviously, financial decisions should always made on merit. Most people understand that money doesn't usually come easily ;)

Hi. This is really interesting post. Thank You! I have just subscribed to Your rss! Best regards