Should Microsoft Really Bundle Open Source Software?

0 comments suggest edit

Ayende recently wrote about Microsoft’s “annoying” tendency to duplicate the efforts of perfectly capable Open Source Software already in existence. In the post, he references this post by Scott Bellware which lists several cases in which Microsoft duplicated the efforts of OSS software.

Fear Factor

Ayende is not convinced by the fear factor argument around issues of software pedigree, patents, and legal challenges. Jon Galloway wrote about this argument a while ago in his post Why Microsoft can’t ship open source code.

In his post, Ayende dismisses this argument as “lawyer-paranoia”. While I agree to some extent that it is paranoia, not all paranoia is bad. I think this point bears more thoughtful responses than simply dismissing it as FUD.

Microsoft really is a huge fat target with a gigantic bullseye on its forehead in the form of lots and lots of money. At that size, the rules of engagement changes when compared to smaller companies.

Nobody is going after small fries who release open source code such as Ayende or myself. But as soon a big fry like Microsoft starts bundling open source code, watch out for the armies of patent trolls, lawyers in tow, coming out of the woodwork.


As an aside, some commenters mention the “commercial friendliness” of the licenses of the projects they would like bundled such as the BSD and MIT licenses. However, as far as I know, none of these licenses have any patent protection in the same way that the GPL does. Perhaps Microsoft should require bundled OSS software to be licensed with the GPL. I kid! I kid! We’d probably see Steve Ballmer grooving to an IPod in a pink leotard before that happens.

Back to the point at hand. Having said all that, while I think this is a difficult challenge, I don’t think it is an insurmountable challenge. Microsoft can afford an army of lawyers and hopefully some of them are extremely bright and can come up with creative solutions that might allow Microsoft to leverage and even bundle Open Source software in a safe manner. After all, they already face the same risk by allowing any employee to write and ship code. Employees are not immune to lapses of judgement.

We already see progress happening in regards to Microsoft and Open Source. The IronRuby project will accept source code contributions, but most likely with some strict limitations and with required paperwork like the Free Software Foundation does. Progress can be made on this front, but it won’t happen overnight.

How Should They Choose?

For the sake of argument, suppose that Microsoft deals with all the legal issues and does decide to start bundling OSS software. How should they choose which software to bundle?

For mock object frameworks, Scott Bellware mentions Rhino Mocks, a mock framework I’ve written about a few times and would agree with this choice. But what about NMock which has been around longer as far as I know. I think Scott and Ayende would both agree that popularity or seniority should not trump technical quality in choosing which project to bundle. I personally would choose Rhino Mocks over NMock any day of the week.

Bellware’s post also lists NUnit. While NUnit has been around longer than MbUnit, in my opinion I think it is pretty clear that MbUnit is technically a much better testing framework. Naturally, I’m sure there are many fans of NUnit who would disagree vehemently. Therein lies the conflict. No matter which framework Microsoft chooses, there will be many who are unhappy with the choice.

If Microsoft had chosen to not write its own test framework, I fear they would have chosen NUnit over MbUnit simply because it’s more well known or for political reasons. Such a choice would have the potential to hurt a project like MbUnit in the never ending competition for users and contributors.

The fact that the MS Test sucks so much is, in a way, a boon to NUnit and MbUnit. Please understand I’m not saying that “Because choosing a project is hard, it shouldn’t or can’t be done”. I’m merely suggesting that if we’re clamoring for Microsoft to start bundling instead of duplicating, we ought to offer ideas on how that should happen and be prepared for the ramifications of such choices.

So what do I think they should do?

Let’s look at one situation in particular that appears to be an annoying duplication of efforts. A while back, Microsoft identified a business opportunity to create an integrated development IDE suite which included code coverage, bug tracking, unit testing, etc… They came out with Team System which included a unit testing framework that wasn’t even near par with NUnit or MbUnit.

This is a situation in which many have argued that Microsoft should have bundled NUnit with Team System rather than writing their own.

While we can continue to argue the merits of whether Microsoft should or shouldn’t bundle Open Source software, the official stance currently appears to be that it is too much of a liability to do so. So rather than keep arguing that point, let’s take a step back and for the sake of argument, accept it as a given.

So given that Microsoft couldn’t bundle NUnit, what should have they done?

They should have given developers a choice.

What I would have liked to have seen is for Team System to provide extensibility points which make it extremely easy to swap out MS Test for another testing framework. MS Test isn’t the money maker for Microsoft, it’s the whole integrated suite that brings in the moolah, so being able to replace it doesn’t hurt the bottom line.

Given the inability to bundle NUnit, I can understand why Microsoft would write their own test framework. They wanted a complete integrated suite. It wouldn’t work to ship something without a test framework so they provided a barely adequate one. Fine. But why not allow me to switch that out with MbUnit and still have the full non-degraded integrated experience?

Microsoft could have then worked with the OSS communities to provide information and maybe even some assistance with integrating with Team System.

This is not unprecedented by any means. It’s very similar to how Microsoft cooperates with control vendors who build WinForms and ASP.NET widgets and controls.

Microsoft doesn’t provide a GridView, tells us developers that’s all we’ll ever need for displaying data, and then closes the door on other control vendors who might want to provide developers with an alternative grid control. Hell no.

Instead, they make it easy for control vendors to provide their own controls and have a first-class integrated experience (with design time support etc…) within the Visual Studio IDE because they recognize they don’t have the bandwidth to build everything top shelf. This sort of forward thinking should apply anytime they plan to ship a crappy stopgap implementation.

Found a typo or error? Suggest an edit! If accepted, your contribution is listed automatically here.



19 responses

  1. Avatar for Andrew Stopford's Weblog
    Andrew Stopford's Weblog September 3rd, 2007

    Phil's latest point is a cracker . Microsoft cannot for a lot of reasons bundle OSS and if they do what

  2. Avatar for WPF Community Bloggers
    WPF Community Bloggers September 3rd, 2007

    Phils latest point is a cracker . Microsoft cannot for a lot of reasons bundle OSS and if they do what

  3. Avatar for Sergio
    Sergio September 3rd, 2007
    They should have given developers a choice.

    Instead they go after the micro-ISV's like TestDrive.Net and threat them for providing too much functionality.
    Choice tends to work in the wrong direction among MS products (Re: how many image viewers/editors from MS you have in you box?) Also, it's not an intrinsic part of this developer community yet - it should.

  4. Avatar for Glen Germaine
    Glen Germaine September 3rd, 2007

    "Steve Ballmer grooving to an IPod in a pink leotard"
    Gee Phil.. Thanks a million for that visual...
    ...must... burn out... eyes....pain... unbearable...

  5. Avatar for The Other Steve
    The Other Steve September 3rd, 2007

    Microsoft just doesn't understand open source. They use in many cases as nothing more than a place to advertise and download... For instance the SQL hosting toolkit has no source code. It does 95% of what I want, but there's one thing I'd like to see it do somewhat differently and I can't do it. So I'm forced to write my own from scratch if i want that.

  6. Avatar for Scott
    Scott September 3rd, 2007

    It seems to me that if lawyers can create a EULA for commercial software, lawyers can create a disclaimer that insulates MS from any action resulting from the bundling of OSS software with their products.
    As I said in JG's post, Ok so they can't/won't bundle it, what's preventing them from promoting it? Aside from a couple of articles written by MS employees that were pointed to in the comments of JG's post, where is the section at MSDN that talks about NUnit? MBUnit? Rhino Mocks?

  7. Avatar for Karthik Hariharan
    Karthik Hariharan September 3rd, 2007

    I think you hit the nail on the head with the suggestion that MS build extensibility points and an implementation rather than just seek to completely replace the open source alternatives with an MS branded implementation.
    The ASP.NET AJAX team went this route by supporting the prototype and scriptaculous Javascript libraries as well as their own Microsoft Javascript library. By supporting the open source alternatives, they won over a lot of users.

  8. Avatar for Tom Pollard
    Tom Pollard September 4th, 2007

    Regarding the legal issues and fear of lawsuits, these same considerations apply to Apple, and yet huge portions of MacOS X are open-sourced - mostly BSD-licensed, but GPL-licensed components are included as well. So, I have a hard time believing that's what's inhibiting MS from including more open-source software with Windows.

  9. Avatar for Haacked
    Haacked September 4th, 2007

    @Tom Pollard - Do you have references for which portions of Mac OS X is open source? I'd be curious to look at the parallels there. Maybe MS has something to learn from their experience. Then again, maybe it's just a matter of time before Apple gets sued. ;)
    Regarding the OSS projects that Apple included, I wonder if the software pedigree of the code was well documented via a process like the FSF requires for contributors.

  10. Avatar for Scott
    Scott September 4th, 2007

    Phil: The freakin' kernel is OSS. Can ya believe it?
    Not to mention Bonjour and WebKit. They also ship with GCC, Python, Ruby,Apache and starting with Leopard will include the Rails framework.
    I think it's easier to ask: What software that ships with OS X ISN'T OSS. Basicaly Quartz and the iLife stuff.
    re:Pedigree - well GCC is pretty well documented. :)

  11. Avatar for Haacked
    Haacked September 4th, 2007

    @Scott doh! Of course! I'm wondering if the "pedigree" of NUnit and MbUnit is as well documented as GCC, Apache, Ruby, etc...
    Well another sign that Microsoft is stepping in the right direction as it pertains to OSS - it's announcement of collaboration with Novell and the Mono team on Moonlight.

  12. Avatar for Joe Cheng [MSFT]
    Joe Cheng [MSFT] September 5th, 2007

    Extensibility is great. Unfortunately, it doesn't come for free, and exposes you to long term constraints for as long as you intend to keep backwards compatibility. So it's not "why not allow me to switch it out", it's "why not design, implement, test, document, and maintain an extensible API for test framework integration while also creating v1 of your own test framework". Still a good idea, but it takes effort, and not even Microsoft is free of resource constraints.

  13. Avatar for Haacked
    Haacked September 5th, 2007

    @Joe That's definitely a good point. Extensibility, especially the kind I'm talking about is costly. But so is pissing off a lot of influencers with a poorly implemented implementation of a test framework.
    Honestly, I think the cheapest solution would have been to bundle NUnit and take the risk. After all, if Apple can ship with an OSS Kernel, how threatening is a test framework within a development tool that really is only going to get used by a tiny % of the population.
    Again, the point of this post is to spur some thinking and get some ideas on the table. I don't know what the best solution is. I just have my opinions.

  14. Avatar for Angry Hacker
    Angry Hacker September 5th, 2007

    MS will be sued regardless of whether they ship OSS or not. They got the cash and that's how this country works. If wish, they'd get with the program already because building a competing applets to everything OSS out there just pollutes the water.
    For instance, what was the point of SandCastle. They needlessly stepped on NDoc and Sandcastle is still barely working.
    Finally, the list of tools needed for a productive installation is almost all OSS and keeps growing, requiring hunting and gathering before having a working environment. It would be good to have an option in VS to install the OSS pack (*Unit, *Mock, common plugins like GhostDoc, etc...).

  15. Avatar for Bubb Rubb
    Bubb Rubb September 6th, 2007

    I have to side with Ayende here. The fear factor is total FUD. You may be too young to remember, but Microsoft has integrated open source code into their software before. They integrated code from the open source BSD TCP/IP stack into Windows NT way back in the day. The NT license info even gave credit where credit was due, as required by the BSD license. As the Wikipedia says, "...Microsoft would implement a TCP/IP stack derived from the BSD Unix stack."

  16. Avatar for Matt Ellis
    Matt Ellis September 10th, 2007

    Microsoft is between a rock and a hard place about this.
    @Bubb Rubb: Your quote states that the NT TCP/IP stack is derived from BSD Unix. This is not the same as using an open source TCP/IP stack - you can't change it, build it and integrate your new version. Would you have preferred MSTest if it was derived from NUnit (and looking at the API you can argue that it was) or would that cause complaints of Embrace and Extend?
    Like it or not, Microsoft needs to have control over the direction of their tools. They have too many customers to think of. What happens if a unit testing framework starts going in a direction that goes against MS or it's tools? Doesn't want to make changes so that MS can better integrate it with VS? What if relationships break down so that the framework breaks compatibility with VS and the project folks don't care? MS could either force the project to remain on a parallel course (not advisable!) or create a fork - and how would that affect customers?
    Personally, if I were Microsoft, I'd want to insulate myself against these things. The arguments don't really stand for Apache or gcc - these are too big and heavy to change so radically. (And bundling with an OS is different to relying on it. OSX would work fine if Ruby for Rails changed or moved on. OSX is effectively just distributing this, not making it part of it's core strategy.) But it could happen very easily; imagine they had bundled nmock v1. (AIUI) v1 is now obsolete, no longer maintained and superceded by v2 which has a totally incompatible syntax. What should MS do in this case?
    And of course, somtimes, the rewrite is better than the original - (IMHO) msbuild is much nicer than nant (and has a whole load of open source contributions in the way of extra tasks).
    Oh, and one last thing - you can run nunit tests as part of VSTS. Not terribly polished, but it's using Microsoft's extensibility points to add another testing framework.

  17. Avatar for Shane
    Shane September 19th, 2007

    They have already done it with their server DNS software. IF you believe wikipedia:
    But to answer your question, no I don't think they should and if they did it would be the first thing to kill their company.

  18. Avatar for Community Blogs
    Community Blogs December 2nd, 2007

    Oren Eini , aka Ayende, writes about his dissatisfaction with Microsoft reproducing the efforts of the

  19. Avatar for Kork
    Kork February 24th, 2009

    Does someone know if it´s true that chrome is an open source search engine?