Why Can't Microsoft Ship Open Source Software?

In Codeplex wastes six months reinventing wheels, Ryan Davis has a bone to pick with Microsoft:

This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2008/07/why-cant-microsoft-ship-open-source-software.html

Dude, maybe I am missing the point… what about IronPython dynamic programming language http://www.codeplex.com/Wiki/view.aspx?ProjectName=IronPython and IronPython Studio (IDE) http://www.codeplex.com/IronPythonStudio Both are open source… No?

The fact is, Jeff, that both Dr. Petter and Mr. Pibb taste like carbonated prune juice. No matter how you dice it up with fancy words and distinctions.

Coke Zero baby. Diet Coke for men. Most def.

Whats the problem with MSTest?, I have been using it for about 4 months and I haven’t had any troubles. (Sorry if the verbs are messed up, English is not my first language)

Both are open source… No?

Indeed. Why don’t IronPython and IronRuby ship with Visual Studio? Why can’t I select, File, New, IronPython Project and have a first class integrated experience, just like choosing VB.NET or C#?

Do some searching and you’ll find out why this will never be – both projects both accept open source code contributions.

It’s a clone of NUnit with all new bugs and no new features, but it can be included in the box with Visual Studio and integrated into the product. It’s a one step forward, two steps back sort of affair.

By that ^^ are you suggesting that NUnit cannot be included in the box with Visual Studio and integrated in it? Because NUnit is licensed under the zlib license, which would permit exactly this kind of usage (with or without source distributed along). It’s nowhere near as restrictive as, e.g. the GPL, thus I see no reason why they cannot use NUnit instead of they’re own clone of the wheel…

I’m going to do a fairly common thing here in the comments Jeff and complete miss the main point of your post and rant for a minute about TFS. To put it mildly, I’m not a fan. More often than not it seems to be a huge hinderance rather than a help. The usability of the client in VS is pretty horrible, and it seems to have the amazing power to slow almost every part of VS from loading the splash screen onwards.

As some of the commenters on the other thread pointed out, there are lots of times whet it’s okay to reinvent the wheel, especially if you imake a better wheel/i. That’s how we got Firefox duplicating IE, or SVN budding off of CVS. However, in the last few years MS has been reduced to me-too status, shipping inferior clones of products that were innovated by open-source projects or Apple (Zune, anyone?). As Jeff pointed out, this is hurting their competitiveness.

I suspect that the reason is blawyers/b. Ewwwww. Microsoft is afraid that if it ships OSS, it’ll get sued somehow. And they’re probably right. People sue MS for everything.

Hi Giel,
I think, you got it wrong. Jeff never said you couldn’t use NUnit along with VS. He only said that using Microsoft already made the integration effort between its clones and VS. The problem is that sometimes that is truly the only advantage.
What Jeff said, is that Microsoft could (and should) spend more time integrating with open source software (such as NUNit), instead of cloning it. I totally agree with him. Microsoft will never win the open source battle like that. They could waste less time rewriting opensource software, so that they have more time to implement some brand new software, where they can a first-comer advantage.

I totally agree. Apple has figured this out, why hasn’t Microsoft? Is it just because Microsoft is a bigger litigation target, so they’re more afraid?

If they don’t figure it out at some point, they might not be a bigger target for much longer.

Indeed. Why don’t IronPython and IronRuby ship with Visual Studio? Why can’t I select, File, New, IronPython Project and have a first class integrated experience, just like choosing VB.NET or C#?


  1. Iron Python Iron Ruby are both definitely work-in-progress projects, they are not ready for the first class integration that C# and VB.NET have. (Also, Iron Python’s Visual Studio Integration was included as sample with the VS Extensibility API.)

  2. Microsoft Employees like John Lam (Iron Ruby PM) have stated in interviews that the plan for Iron Ruby and Iron Python is for both projects to be easy-to-install downloadable add-ons to the next generation of Visual Studio. He also said the reason why Microsoft won’t ship open source is that if something happened legally that meant Microsoft had to pull Visual Studio from the shelf that would be very bad. Where as if something happened legally that meant Microsoft had to stop distributing a Iron Ruby add-on package then they would just return the file from their website.

  3. Recent Microsoft ASP.NET Projects like Dynamic Data and more especially ASP.NET MVC have reached out to the open source community. MVC’s plan includes the wizard base creation of test projects for non-MSTest frameworks as well as a completely pluggable architecture that allows for things like alternate view engines.

I’ve thought quite a bit about the amount of redeveloping the wheel that is done in the software industry, it often seems like a terrible waste.

Addy is quite correct that other industries do it all the time as well, but I think there is an important difference between software and softdrinks (or shoes or whatever). When making software almost all of the work goes into building the first one and then copies can be produced quite cheaply. Whereas other products such as shoes and drinks have a lot more of the effort going into the manufacturing of the individual products that are sold to people.

For example I think it would be a lot easier to come up with a new flavour of softdrink from scratch than it would be to design new software from scratch.

Back in 2005, before the product shipped, I asked 2 members of the VS product team specifically about their decision to write a new unit testing product rather than simply integrate with nunit. They had 2 reasons for this:

  1. A lot of folks want to sue us because we are the market leader. I didn’t buy this.

  2. They didn’t want to integrate with a product developed by outside developers and be subject to respond quickly to breaking changes they might make. This made a little more since but still was a little hard to accept.

Jeff, I agree with the general ideas of your post but not sure I agree with your example using IronPython and IronRuby in your comment. Unless I am mistaken, neither were 1.0 when VS2008 shipped. Also, both can be executed using File|New Project once installed. They are both packages the same as the J#, C#, VC++, and VB.Net packages so they have the same general behavior in the IDE.

I wasn’t aware that they are now accepting community source code contributions to be included with IronPython and IronRuby. That wasn’t the case originally.

Two notes about the wasted effort:
1)Subversion was meant to replace CVS and now new source control projects like Mercurial and Git are meant to replace Subversion.

  1. Microsoft is not the only group to look and NUnit and decide to go a different way. MBUnit, XUnit, and csUnit are all open source unit test frameworks that were written to perform a similar task to that of NUnit

(btw, I don’t actually like TFS or MSTest but I defend Microsoft’s choice to write their own source control and testing framework.)

Afraid of open source, or just disdain for anything not invented here?

It seems to be to be at the apex of blithely oblivious that Microsoft would start by cloning a developer community to create a developer community so that people can share source code, but then compound that source of great amusement by refusing to share source code of source code control, instead building their own solution (the adoption of which alters any successful practices that the faction-community’s early adopters had already gotten working).

This seems laughable on a good day. On a bad day, you realize that the wildly lucrative licensing fees on the deeply entrenched product known as Windows are helping to finance this particularly bizarre lunacy which features virtually no innovation or refinement over a pre-existing mature product. This behavior, in turn, casts a negative shadow over the whole of the company giving them the reputation of actually being afraid to innovate, preferring to attempt to knock off existing products in quasi-low-population markets – which was pretty much everything they dog-and-ponied at PDC 2005, that’s for sure…

It just makes me want to say C’mon guys, you’re insanely rich and powerful – can’t you come up with something better to do?

TFS provides version control, issue tracking, build management and reporting. The primary target for this product is .NET shops who want to move on from Sourcesafe and shops that have a hodge-podge of tools that aren’t integrated. So why MS invent TFS instead of using Trac, Subversion, Jira/Bugzilla, etc? Forget that these products are all open-source for a second. Instead, think about different languages/platforms that these tools are written in.

  1. The Microsoft dev team would need to know at a minimum, C/C++, PHP, Perl, Python in order to get pieces to integrate and continue development on them. That would be a nightmare to manage. Working on any one of these pieces would be OK but trying to tie them altogether would be a challenge due to the different technology underpinning of these separate pieces. TFS is mostly written in .NET. That makes development much easier for MS.

  2. Now what about Microsoft’s TFS customers would have to deal with if they shipped a product with Trac, Subversion, Jira/Bugzilla. They probably need to install Apache (probably optional), PHP, Perl and Python in order to get this thing installed. How well do you think that’s going to be received in a shop that’s mostly Windows oriented and probably touched any of these technologies?

I agree the world would be a better place if we can standardize on fundamental pieces of infrastructure but the world is a very heterogeneous place. Microsoft has some very legitimate reasons for doing what it does.

I’ve used VSS and Subversion. I have had no trouble at all with VSS each and every time I use it. Subversion is a nightmare each and every time I use it. Just one perspective from one developer …

Microsoft’s policy is all about risk mitigation. Imagine you had to replace eleventy-billion copies of Windows or Office at your expense because some court found that you had accidentally infringed someone’s IP by including open source code that had in reality been copy-and-pasted from a closed source origin.

This is one of the reasons I kinda like Eclipse more than Visual Studio - even though Eclipse is slow, buggy, and has a horrible UI compared to VS, it comes out of the box with support for things like jUnit, Ant, and Trac/JIRA - the tools Java developers actually use. And it’s so easy to add Subversion or Perforce support via plugins. The free Visual Studio editions can’tuse ANY source control or test framework from within them, which just reinforces bad programming practices.