Microsoft and Open Source

I have been a vocal, and sometimes harsh, critic of Microsoft’s approach to Open Source Software. I call that activism, some call it whining, ranting or pisser dans la soupe. People are entitled to their opinion, and mine has been formed after working in the Microsoft sphere for more or less 14 years.

Over the years, the various component organizations within Microsoft have had various levels of involvement with Open Source, with different philosophies, and from what I have gathered over the years from post-conference drinks, internal conflicts that can be quite a challenge.

As this post is going to be long, I’m going to sum-up the problem, and you can go to the conclusion bit to read what I believe should be done differently.

Microsoft has no vision when it comes to Open-Source, no strategy and no leadership. Some groups are seen as more progressive, and do tend towards a better approach to OSS. Some people consider those steps as sufficient to stop pressuring Microsoft towards responsible OSS, and I disagree: it’s only some groups, and even within those groups, the advances are still very much one of exporter. Recognizing Microsoft as an OSS-friendly player is like recognizing the People’s Republic of China under the Reagan administration, it’s a step in the direction of normalization, not a recognition of the Human Right lifetime achievements of Mao Tsedung.

Untitled6You know why I know Microsoft has no leadership and vision when it comes to Open-Source? Because I asked Steve Ballmer when he was in London, and he replied with this: “I don’t know, but we won’t impose any view on our divisions. I’ll come back to you by email though.” Steve, my email is still seb@serialseb.com and I’m looking forward to your views.

Where we come from

The current state of affairs is not bad, considering where Microsoft was years ago. We’re talking about a company that positioned itself as the defender of private code, vilifying OSS licenses, having no visible OSS project going and providing its value as the integrated stack: it’s all MS or none. We have certainly come a long way.

Opening up slowly

I think under the influence of Scott Guthrie, an internal change started deep within the asp.net team ranks, certainly a movement that resulted in the recent announcement of the opening up of the asp.net webstack as a true Open-Source project.

Now that’s commendable, and I applaud the move. Open-Sourcing and opening up to collaborative development for stuff you’ve built is great. Well done.

Not invented in Redmond syndrome

Let’s be clear. The goal of MVC was to build a better Monorail, as opposed to help Monorail productize their framework for inclusion in Visual Studio.

The exact same thing happened with Nuget. With multiple projects with different approaches already in the work, Microsoft started their NPack project (I seem to recall someone at Oredev mentioning it was originally built as part of the WebPages tooling). It wasn’t to be open-source to start with, hence why the existing OSS projects didn’t get the news until much later.

But, I hear you say, Nuget is an open-source project from Outercurve, and they combined their code with another project. The open-sourcing was decided very late in that process, once the investment in code was so large that the ship had left already and nothing would stop it. And on a side-note, there was no merging of the code, the Outercurve foundation’s press release was inaccurate, just look at the history.

What really happens when a new project gets produced by Microsoft? It sucks the air out of a lot of community projects, often including all the best ideas of said projects, and Microsoft gives nothing back. If you’re in that boat, you either redraw your plans based on their new announcements (usually rewriting on top of the new shiny stuff), or you dissolve your group and join their OSS project (the Nuget / Nubular case).

Certain projects (like nhibernate and nunit) continue to happily go forward, and maybe the OSS alternatives that are impacted by Microsoft entering a space just were not good enough. I don’t know, we’ll see in a few years.

Adoption of existing projects

Of course it can be said, and there again, I commend Microsoft for the move, that libraries such as jQuery, modernizr and now Newtonsoft.Json, are being used, supported by Microsoft and shipped alongside the product.

This is also a great departure from time immemorials. Makes no mistake however, Microsoft is being pushed by market pressure to integrate with those frameworks. The change is only that they’re abandoning slowly the idea that they’ll release until they gain marketshare, in those domains where Microsoft has historically been slow at releasing compared to alternative platforms.

This is only an opinion piece, but I’ll suggest that the move to gain web development share has pushed Microsoft towards dropping the projects they had and failed to make popular (the asp.net  AJAX stuff that got more or less killed when jQuery was adopted). And I think that’s great.

Pragmatism is also the reason why newtonsoft.json is being used by Web API. The current Json providers on .net are broken, there is no way to provide the customization people want, and fixing them cannot be done in the same release cycles as MVC, as some are part of the core framework (and may or may never be fixed, but certainly not in time for the next release).

It was not chosen because Microsoft wants to adopt more external OSS projects as their core vision. It was chosen because they couldn’t fix what was broken and rebuilding would have been silly.

On a side-note, twitter conversations started going in the direction of why Newtonsoft.Json was chosen over other libraries. I made the assertion that provided it’s an internal implementation with no exposed surface, the choice of *any* json lib would’ve been fine. ScottHa said it was because the library was the most popular, and testing was done on their part. That lead me to the assertion that if the only library under consideration was chosen for popularity, and there is no exposed surface of that lib on public APIs, the choice is one of brand-surfing and gives extra marketing points to their OSS credentials. If some of the API is exposed, it was probably a reasonable choice. I don’t care which library you chose, I care the process you used to chose which library and the reasoning behind it. I question (and by question, I mean discuss) the motives, not the solution.

[Edit: After looking for it (as the twiterverse didn’t reply to the specific of the discussion), one object from json.net *is* exposed on the JsonMediaTypeFormatter, so that is that and I’ll stick to my original analysis, it’s probably a reasonable choice.]

There is no vision, because there is no systemic approach to deciding between building and joining communities.

Asp.net Web API could have quite happily join existing OSS projects that dealt with this problem area years ago, but it wasn’t to be. Nuget funding could have been used on top of existing projects, instead of a pure creation, but it wasn’t to be either. What is the decision process behind the rebuild or join decision?

And can anyone that has had their project get the oxygen sucked out of, with nothing given back, be blamed for distrusting the company?

220px-Borg_Queen_2372The corporation

When the Web API project was being kicked off, Glenn Block called me asking me if I thought he should take the job, and if he did, would I help. I told him what I’m telling you now: Yes, you can’t do as bad as the previous attempts, and I’ll happily help to make sure the architecture and model fits the reality of what developers want, we’ll all win. I helped because I was asked. Ideally I’d rather they had asked me to work on OpenRasta and create a new version with us, but it was not to be. In the end, the two frameworks may have very different code, but most of the concepts and conventions are exactly the same, so everyone will feel right at home on both platforms, and that’s in no small measure because the brilliant minds behind Web API respected HTTP as much as I and the other advisors did.

More recently, Drew Miller from the NuGet team has been very active in opening communication channels with OpenWrap, something that has not existed ever, and he should be applauded for it: I can now have a discussion about our interop story with someone that wants to make things better. Again, I’d rather the NuGet team had joined OpenWrap rather than communicate to us their imminent release, way too late to get any positive outcome, but at least it’s a step in the right direction.

Those are individuals, not the company, and out of all the voices out there, they are a minority. You cannot judge the whole company on specific individuals, and teams cannot use the excuse Microsoft is really many companies. That is certainly true, but completely irrelevant to external agents when judging how the company deals with OSS.

transparencyHow to fix this

Three words, transparency, transparency, transparency.

When you have an idea for a product, and there are existing Open-Source projects out there that have adoption and could really help the resources of a big vendor, try and justify the choice.

If you’re going to rebuild, take the phone, call the leader, explain your plans, and don’t be a douche about it (aka telling someone “we realize we are stepping on toes here but we’re big so it’ll happen” is not particularly a great way to deliver the news). Chances are, they’ll probably understand the reasoning. ISVs have had that communication channel from Microsoft for years, and get to know about competing products way in advance, but it’s not the case for OSS projects.

Be open about the process afterwards too. The policy of not mentioning anyone, or pretending you cannot look at existing projects at all in public, would make anyone think you have something to hide. It probably is against some corporate policy somewhere, but make that change, you did do it about the no-OSS policy.

And finally, value the people on your platform, the loud mouths like me and the small guys that abandon their projects because you started yours. We are on your platform because we like it, and we want to make it better. And maybe if you’re going to step on people’s toes, try to find a band aid for them to sweeten the blow, and find a way to collaborate on something else with them. Don’t lose the people that have been developing the ideas you’re going to be building on, it’s not good business.

If these things had happened in the last few years, I wouldn’t distrust Microsoft-the-company as much as I do now. But the bridges that are being built by bright individuals inside the company do go in the right direction.

Is that going to be enough? I sincerely don’t know, but until we’re there, I’ll continue shouting at the top of my voice for Microsoft to become the business partner my OSS projects wants to be dealing with.

It’s called tough love, silly.

[Edit: added an additional paragraph to project competition]

[Edit 2: added a bit on the json.net choice]

This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Pk

    I thought the principle behind open source is choice for customers. Eveyone should be able to publish their software and equally everyone should be able to choose from one of them or start their own. Otherwise it seems you are advocating an open source monopoly which is against the bazaar approach at the heart of open source philosophy. As am example projects hosted on Github shows “Fork Me on Github” prominently encouraging people to scratch their itch.

  • http://www.facebook.com/Chris085 Chris Airey

    I’m a bit late here, but couldn’t agree more.

    Microsoft need to find a balance of not stepping on the toes other peoples work, it just undermines any effort that has been put in by the developer and ultimately you are using their tools.

  • Pingback: Microsoft and Free/Open Source Software | Techrights

  • http://twitter.com/jcdickinson Jonathan C Dickinson

    “All or nothing” is completely implausible for a company with a history/foundation like Microsoft: consumers simply don’t pay for support contracts like corporates do (the exact reason money can be made off of Linux a. la. RHEL) – so how would they monetize Windows? They **do** have shareholders, you know, and they **are** accountable to them: down to the court of law. Your “how to fix this” doesn’t touch on this substantial problem – and yet you complained about it.

    Instead of telling them how they are doing it wrong (like basically every OSS zealot) explain how they could sustain their margins while they transition to a OSS model for all their software. I could go on forever but there is just so much you fail to address in your article: you have taken one side of the story and are ignoring the ramifications of the other side.

    You can’t just uproot a corporate/sales model like Microsoft that has been running for years overnight. Maybe The Gu will manage to get the whole company on board; after which they will have to figure out how to maintain their entrenchment; after which they realise they actually can’t (positing: maybe they have had this discussion).

    I am an OSS advocate, make no mistake, but OSS zealots (for want of a better word) like yourself would make a lot more headway by identifying and acknowledging the problems Microsoft would face and coming up with solutions, instead of spreading vitriol about them (which will lead them to never take you seriously). I have thought long and hard about how they would fix these issues (instead of complaining) and I haven’t been able to come up with anything: I challenge you to create a viable business model. You won’t find one.

    Real ingenuity is saying, “Look if we open source .Net and ASP.Net people still need to buy Windows.” Entrenchment is maintained and Microsoft doesn’t get sued/abandoned by shareholders. People can use the code to debug (or provide patches) and everyone wins. Nobody would win if they willy-nilly open sourced everything: they wouldn’t be able to afford the pay-cheques of the people responsible for maintaining it.

    For the record I do like how you address the issues that you did. Just accept that there are some things that nobody can change (not even the folks at Microsoft, even if they wanted to); and instead search for solutions to the things you can change.

    NB: The usage of the word “zealot” is by all means **not** derogatory.

  • Mark Rendle

    Very well put, Seb. I wholeheartedly agree.

  • Christine

    BTW, it wasn’t Reagan who recognized China – it was Nixon.

    • http://codebetter.com/sebastienlambla/ Sebastien Lambla

      Haha. Absolutely well spotted! I should really re-read my posts before clicking Publish. Thanks!

  • http://twitter.com/lightweight Dave Lane

    Sebastian, why are you bothering with MS? They’re in the midst of an all mighty implosion. I’d be encouraging anyone heavily invested in using MS-only technologies to get clear of the fallout radius.

    With regard to FOSS, MS is broken. You’re quite right: they may well be “many companies” internally, but for those of us outside, it’s irrelevant. One “company” might be positive towards a FOSS project (no doubt because MS’ own internal competitor is crap, and the FOSS one is eating its lunch), and another might deftly put a knife in its back when it’s not looking. The culture of MS is monopoly protection and profit maximisation within a monopoly context. There is no other way for them to be. They’ve painted themselves into a corner, culturally. The world is quickly rendering their entire mindset and “corporate DNA” (e.g. must be invented here, opacity: 1.0, software patent threats, funding FUD, embrace/extend/extinguish, etc.) a liability.

    Ultimately, the FOSS world is vastly broader and deeper, and more resilient, than the “MS ecosystem”. We don’t need them, but we do need committed, principled, talented developers and project leaders. Do your own thing for sure, but I encourage you to do it without MS technologies, because that gives them leverage, and who knows how deviously they’ll use it.

    • http://codebetter.com/sebastienlambla/ Sebastien Lambla

      On the other end of that spectrum, if every activist leaves to other platforms, the so called “pragmatists” will keep the fort. I think that even if you fight a losig battle,the result will still be better for the whole ecosystem if some of us stay.

      • http://twitter.com/lightweight Dave Lane

        Personally, I think MS is worthy of oblivion rather than salvation. But I respect your position – I wish you luck in your efforts, but I’ll continue to invest my energy in the FOSS world (without MS).

  • Rich3800

    Ballmer: Thrown any chairs at anybody lately?

  • Anonymous

    *slow clap*

  • Anonymous

    Why is it that Microsoft is under some special obligation to join with existing projects and not start their own? An individual is no more required to “justify their choice” to rebuild than MS is. I have always felt your position on this have been driven more by your anger over NuGet than a rational discussion of what is best for users. What is good for OSS developers is not the same as what is good for all developers.

    And I beg to differ, Microsoft IS many companies within one. The Office people are going to open-source Word the day I sprout wings and fly.

    A discussion of motives is pointless. Knowing why something is done is generally not helpful and leads to faulty reasoning about whether a particular action is good or not. E.g., if you give money to charity, does it matter that you are trying to assuage guilt? Focus on the act itself and whether it is of benefit or not.

    Why are you condemning pragmatism? Even assuming you are correct in your assessment of their reasoning (a big assumption), what’s wrong with that.

    And finally, why is it DHH is considered an OSS folk hero for saying, “I don’t owe you shit” and “fuck you” and MS is somehow the devil?

    • http://codebetter.com/sebastienlambla/ Sebastien Lambla

      So your argument is that they should do whatever they want, and as long as they have paying customers, there is no value in fostering and cultivating the ecosystem that lives on the platform?

      If that’s your argument, then I disagree because that’s not how I want to be working with Microsoft: living in the fear that they’ll just rebiuld and ship something I spent hours, months and years building. It’s not pushing me to build more stuff if I want it used.

      And that may well be where we disagree. For an OSS project I build to be used by my clients, and because it’s the Microsoft platform, it’d better be successful or we’ll get no adoption. If I get no adoption, I can’t use it, I have no reason to build it. If you suck the air out of an environment and I can’t breath, I probably won’t try again.

      As for the various corps in Microsoft, I also disagree that you have to judge which group is doing what, the company is a whole. That it leaves its divisions (and projects and teams within the company) to compete with each others until one kills the others is a management approach I don’t necessarily agree with, if that is indeed what happens inside.

      I never ascertained anything about “all developers” or “users”, and I don’t condemn pragmatism (do yourself a favour and re-read the part about json.net). I’m an OSS developer, you’re on my blog, and this is my point of view. The reuse vs. rebuild has been something I’ve been vocal about for years, way before nuget even existed, and has applied not only to Microsoft, I have discussed/argued this with quite a few OSS developers too that run with it and rarely collaborate. My stance on this has changed over the years, I’m probably softer when it comes to independent OSS projects. My stance doesn’t change with Microsoft, because unlike other environments, they have huge control and market share and their decisions have historically tended towards excluding other players, leaving only niches for ISVs.

      I’d rather not be in a niche, as an ISV or as an OSS developer. But in the end, as you perfectly describe, if *you* decide to only analyze the acts and not discuss the intent, then anything *I* fight for and anything that *may change in the future* has no impact on anything you value, so I’d argue that there is nothing in what I want Microsoft to become that will give *you* less, and probably give you more, so what’s the issue here?

    • http://twitter.com/msuarz mike suarez

      i think the point is that microsoft can do whatever they please … free world, free market , etc … but by ignoring the OSS project at hand they r screwing the exact ppl that lead them to have a project on the first place … hence cool ppl leaving or cool projects abandoned … the community needs both

    • http://twitter.com/thefringeninja João P. Bragança

      A smarter company would be looking 30 years down the line instead of the bottom line right now. You buy your toothpaste from X manufacturer because their reputation goes back over a hundred years and you are pretty sure they are not going to put dog turds in it to stretch it out and cut costs. What is the point of fucking people over to make a quick buck now when they get butthurt and develop on some other platform? That only hurts them in the long run.

    • http://thunkthing.blogspot.com/ _Andy_B

      Kevdog,

      You are absolutely right, MS are under no obligation; special or otherwise, to join /collaborate with existing projects rather than rolling their own.

      They are under no obligation to do it because perhaps it’s the right thing to do for all the many .net devs out there.

      Neither are they under obligation to have a healthy, prosperous and positive ecosystem for years to come.

      They are under no obligation, but it may just be better than the status quo.

  • Anonymous

    While I think things were worse off in the past, they are getting better. The recent OSS announcement was very significant. For those of us that are fans of and believe in the merits of OSS – we have friends in folks like Scott Hunter, Scott Hanselman and Scott Guthrie. Couple that with folks like Glenn Block – there is a lot to be optimistic about. All that said, we need to keep the pressure on. I do believe that at least some folks at MS see the light – realizing that OSS can be very effective at driving the platform – which does help the bottom line.

    The next big test is when we start seeing accepted contributions in Web API, MVC, etc. I’ve submitted my contribution agreement and am awaiting to hear back from MS on that status. I trust others have as well.

    Great post…

  • http://netcave.org Alan Stevens

    I wish I could disagree with any of your conclusions, but I can’t. Despite (or perhaps because of) a dozen years on the MS platform, I trust Microsoft less today than ever before.

    ++Alan

  • http://codepyre.com/ Ian Davis

    Great article. I admire your wholehearted pushes for change.

  • http://twitter.com/EisenbergEffect Rob Eisenberg

    I couldn’t have said it better.