Duplication of Efforts Is Not The Problem

0 comments suggest edit

Oren Eini, aka Ayende, writes about his dissatisfaction with Microsoft reproducing the efforts of the OSS community. His post was sparked by the following thread in the ALT.NET mailing list:

Brad: If you’re simply angry because we had the audacity to make our own object factory with DI, then I can’t help you; the fact that P&P did ObjectBuilder does not invalidate any other object factory and/or DI container.

Ayende: No, it doesn’t. But it is a waste of time and effort.

Brad: In all seriousness: why should you care if I waste my time?

Ayende’s response is:

  • I care because it means that people are going to get a product that is a duplication of work already done elsewhere, usually with less maturity and flexibility.
  • I care because people are choosing Microsoft blindly, and that puts MS in a position of considerable responsibility.
  • I care because I see this as continued rejection of the community efforts and hard work.
  • I care because it, frankly, shows contempt to anything except what is coming from Microsoft.
  • I care because it so often ends up causing me grief.
  • I care because it is doing disservice to the community.

As a newly minted employee of Microsoft, it may seem like I am incapable of having a balanced opinion on this, but I am also an OSS developer and was so before I joined, so hopefully I am not so totally unbalanced ;).

I think his sentiment comes from certain specific efforts by Microsoft that, how can I put this delicately, sucked in comparison to the existing open source alternatives.

Two specific implementations come to mind, MS Test and SandCastle.

However, as much I tend to enjoy and agree with much of what Ayende says in his blog, I have to disagree with Ayende on this point that duplication of efforts is the problem.

After all, open source projects are just as guilty of this duplication. Why do we need BlogEngine.NET when there is already Subtext? And why do we need Subtext when there is already DasBlog? Why do we need MbUnit when there is NUnit? For that matter, why do we need Monorail when there is Ruby on Rails or RhinoMocks when there is NMock?

I think Ayende is well suited to answer that question. When he created RhinoMocks, there was already an open source mocking framework out there, NMock. But NMock perhaps didn’t meet Ayende’s need. Or perhaps he thought he could do better. In any case, he went out and duplicated the efforts of NMock, but in many (but maybe not all) ways, made it better. I personally love using RhinoMocks.

The thing is, there is no way for NMock nor RhinoMocks to meet all the needs of all the possible constituencies needs for a mocking framework. Technical superiority isn’t always the deciding factor. Sometimes political realities come into play. For example, whether we like it or not, some companies won’t use open source software. In an environment like that, neither NMock nor RhinoMocks will make any headway, leaving the door open for yet another mocking framework to make a dent.

Projects that seem to duplicate efforts never make perfect copies. They each have a slightly different set of requirements they seek to address. In an evolutionary sense, each duplicate contains mutations. And like evolution, survival of the fittest ensues. Except this isn’t a global winner takes all zero sum game.

What works in one area might not survive in another area. Like the real world, niches form and that which can find a niche in which it is strong will survive in that niche.

I’m reminded of this when I read that the Opera Mini browser beats Apple Safari, Netscape, and Mozilla combined in the Ukraine. Another remindes is how Google built yet another social platform that is really big Brazil.

So again, Duplication Is Not The Problem. Competition is healthy. If anything, the problem is, to stick with the evolution analogy, is that Microsoft because of its sheer might gives its creations quite the head start, to survive when the same product would die had it been released by a smaller company. We’ve seen this before when Microsoft let IE 6 rot on the vine and risks doing the same with IE 7. Fact of the matter is, Microsoft has a lot of influence.

So can we really fault Microsoft for duplicating efforts? Or only for doing a half-assed job of it sometimes? As I wrote before when I asked the question Should Microsoft Really Bundle Open Source Software?, I’d like to see some balance that both recognizes business realities that push Microsoft to duplicating community efforts, but at the same time support the community.

After all, Microsoft can’t let what is out there completely dictate its product strategy, but it also can’t ignore the open source ecosystem which is a boon to the .NET Framework.

Disclaimer: I shouldn’t need to say it, but to be clear, these are my opinions and not necessarily those of my employer.

Tags: Microsoft , Open Source , OSS

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



18 responses

  1. Avatar for Ayende @ Rahien
    Ayende @ Rahien December 2nd, 2007

    Whose time

  2. Avatar for lorg
    lorg December 2nd, 2007

    It's capitalism baby!
    To put in another way: duplication of efforts is good, and competition is good. It allows new thing to grow, and also grow better. It also allows other men to make money from their work. It also allows other men to make stupid choices, if they want to. It's them that are going to pay for those choices in any case.

  3. Avatar for Damien Guard
    Damien Guard December 2nd, 2007

    As programmers we try to avoid duplication of effort where possible but that goal should only exist within our project and not stop ourselves or others from branching or creating competing products we want to take in a different direction.
    Alternative products deliver competition and out of that diversity and innovation.
    It's how capitalism and evolution work...

  4. Avatar for Thomas Wagner
    Thomas Wagner December 2nd, 2007

    Interesting how differently people reacted to his initial post. I agreed with him. http://wagnerblog.com/2007/...

  5. Avatar for Dave
    Dave December 2nd, 2007

    I cannot convey how spot-on this entry is and ironically reflects the same thoughts I had over the weekend.

  6. Avatar for Chad Myers
    Chad Myers December 2nd, 2007

    I don't have that much problem with duplication, what I *DO* have a problem with is that Microsoft makes no mention -- does not even acknowledge the existence -- of any of these other options. By way of comparison, you/SubText, DasBlog, Rhino.Mocks, etc all make references to other frameworks in their documentation or on their blog. Microsoft, as far as I've seen, NEVER does this. If I didn't read blogs, I would have no idea that most of these things even exist.
    It's concerning that Microsoft created .NET and opened it up considerably and encouraged people to build things on it, but then snubs the things built on it unless you're from one of the Big Customers (Dell, etc). I would think that Microsoft would want to PROMOTE things like Mono, Rhino.Mocks, NUnit, Spring.NET, etc as examples of how Open and Developer-Friendly (yes, even smelly basement-dweller Open Source developers!) .NET is.
    If Microsoft chooses to create Yet Another IoC Container (because some of their customers can't use OSS or whatever reason), that's fine. But do so HUMBLY and with ACKNOWLEDGMENT that there are several other, more mature, frameworks out there already that might be better at the current time.
    Give people the choice by making them aware of the alternatives. Microsoft isn't going to lose money by promoting the wonderful ecosystem of development they have helped create in the .NET world.
    One last point: I love Microsoft for creating .NET. I just wish they'd give it more of a chance because it seems they're hell-bent on ruining it with marketing and snuffing out the light of innovation that .NET has sparked!

  7. Avatar for Sameer
    Sameer December 2nd, 2007

    I would disagree with the comments. I think they are showing some encouragement, I mean take a look at Microsoft Codeplex Open Source Hosting (http://www.codeplex.com/)

  8. Avatar for Joshua Flanagan
    Joshua Flanagan December 2nd, 2007

    I think Oren's explanation made it clear that it wasn't just the duplication of effort that was the problem (even if that is how he originally stated it).
    For those justifying it as capitalism - why would Microsoft want to treat their most active members of their community as competition that needs to be defeated? Remember, these are the people that are volunteering their free time to make your (Microsoft's) development platform more livable.

  9. Avatar for Joshua Flanagan
    Joshua Flanagan December 2nd, 2007

    "For example, whether we like it or not, some companies won’t use open source software."
    Man, I hate hearing that from softies - yep, you get all the blame now too, Phil ;)
    Microsoft created the FUD within those companies that caused them to take that stance.
    All it would take for those companies to use open source software would be Microsoft saying (via all literature, consultants, etc) something like "We STRONGLY recommend you use a DI framework. We do not offer a DI framework ourselves, but both StructureMap and Windsor are very good tools that we use (we dont endorse one specifically, but will leave it up to your evaluation)." I bet every one of those companies would use a piece of open source software.

  10. Avatar for jbogard
    jbogard December 2nd, 2007

    I'd have to agree with Josh. Our managers go to Team System presentations from MS and come back thinking that unit testing is "right click -> generate unit tests". Additionally, the feedback they push back into the VSTS teams are "make the wizards do X, Y, and Z".
    When these managers get back, gung-ho on unit tests, I have to work twice as hard to undo the bad practices that have been presented to them.
    What I was encouraged the most from ScottGu's ALT.NET MVC presentation were:
    - MS is looking at other existing frameworks to improve on them
    - MS is telling us they are looking
    Neither of these things seemed to happen with MSTest, MSBuild, Team Build, etc. I think we're all hoping that the path that the MVC framework team took is not the exception, and it becomes the rule.

  11. Avatar for Brennan Stehling
    Brennan Stehling December 2nd, 2007

    I think the primary justification is simply that many companies will not install or use OSS software or software that does not look mature. One of the aspects of OSS projects that also makes it hard to justify to the stakeholders are the versioning schedules used by OOS projects. You do not know when the next update is coming or what will be included with it. I also find that many OSS projects do not have great documentation which hurts adoption.
    As far as duplication of effort, that point seems to now be a secondary concern. But to put it into a larger context, consider that .NET was created because MS could not reshape Java to suit their needs. And other projects like Parrot have been created to provide a runtime for multiple languages much like the .NET runtime.
    These are duplicate efforts to a degree but they serve a specific purpose. What I do hope that MS/.NET avoids is a fragmentation where there are 15 web frameworks for .NET like there is for Java which makes it very hard to maintain any expertise with that platform for web development. One aspect that I have liked about MSTest, NUnit, and MBunit is the fact that they all essentially have the same interface so switching between them has not been hard. I just change the using/imports statements and rename the attributes and I am back up and running. We should be so lucky for switching out projects like Monorail and ASP.NET for MVC, but the complexity there may be too much to make it possible.
    This is a good discussion regardless. The focus should be kept on how the OSS community and MS can collaborate to improve the .NET development experience.

  12. Avatar for Haacked
    Haacked December 2nd, 2007

    > we're all hoping that the path that the MVC framework team took
    > is not the exception, and it becomes the rule
    Heh heh. Me too. Right now, the MVC framework is in my "sphere of influence" so I can't speak for other teams. But my hope is that the success of it and the attention it draws is noticed by other teams.
    I understand the frustration that Microsoft doesn't seem to mention other frameworks. It has happened before, so it's not a case that OSS is *never* mentioned. Of course, the example I provided is by an OSS perso hired by MS. ;)
    At least with the MVC framework, a key goal is to highlight alternatives. We point out that you can swap out any piece you don't like. We have and will continue to make mention of alternative template engines: NVelocity, Brails, etc...
    Also, we don't ship a DI container with MVC, instead suggesting people try the perfectly good ones out there: Spring.NET, StructureMap, Castle Windsor. I've seen samples built with all three.
    I think we'll continue to see improvement in this area. Also, be sure to check out the Port 25. That's a group at Microsoft dedicated to promoting .NET OSS and interoperability with non-.NET OSS, which I think has been a force in this change.
    So while many complain that Microsoft never mentions OSS alternatives, Port 25 has been preaching the gospel. Help a brotha out by contributing to their message. Get involved, tell them when they're wrong or right, etc... Comment on their posts so they get involved in the right places.

  13. Avatar for Joshua Flanagan
    Joshua Flanagan December 2nd, 2007

    Port 25 is part of the problem that I was raising. Why does there have to be an "open source ghetto" in the form of Port 25? Why can't all Microsoft content, evangelists, consultants, etc speak the good word?
    "If you want Microsoft's guidance, go to MSDN."
    "If you want Microsoft's other guidance geared specifically to satisfy people that like open source software, go to Port 25"

  14. Avatar for Haacked
    Haacked December 3rd, 2007

    @Joshua, I don't see it that way. Change doesn't happen overnight. Port 25 is a foot in the door. An agent of change. Hopefully, with support, change spreads.
    But bashing them and saying "why doesn't everybody get it?!" doesn't help the situation. Everybody doesn't get it yet. So we need to get and support footholds and spread the love, rather than scorning those who do get it and are trying to change their organization from within because their organization doesn't get it.
    It's like any project, keep the end goal in mind, but focus on the next milestone.

  15. Avatar for Tom Dean
    Tom Dean December 3rd, 2007

    What about the GPL and other license requirements on disclosing code when redistributing software using OSS? Companies shouldn't feel obligated to reveal proprietary source because they want to use OSS, and MS gives them that comfort.
    If Microsoft is promoting and recommending software, their customers might take that as a cue that it's ok to include it in their projects without upholding their end of the bargain when they decided to incorporate open source.

  16. Avatar for Joshua Flanagan
    Joshua Flanagan December 3rd, 2007

    Let me clarify - I was not trying to bash the good people at Port 25. They are doing good work, and I definitely appreciate the challenges of trying to change a large organization from within.
    When I said "Port 25 is part of the problem", I meant "the fact that Microsoft needs to pigeonhole people with those ideas" is the problem - not the actual work they are doing.

  17. Avatar for Haacked
    Haacked December 3rd, 2007

    Well wouldn't that make Port 25 a symptom of the problem and not part of the problem? It's like saying a band-aid is part of the problem. No, the fact I need a band-aid is a problem. It means I probably have a cut. But a band-aid is part of the solution. If I could avoid getting cut in the first place, that's even better.

  18. Avatar for Joshua Flanagan
    Joshua Flanagan December 3rd, 2007

    Phil - Agreed. It was a poor choice of wording.