tecosystems

What’s the Problem? On Microsoft, Mono and Patents

Share via Twitter Share via Facebook Share via Linkedin Share via Reddit

Once upon a time when I was a systems integrator, I had the good fortune to work with a very talented (as in multiple PHDs) lead architect. Not only brilliant, he was a genuinely nice guy and often the first person I’d seek out to bounce ideas or problems off of. On one particular occasion, I headed over to his cube under the weight of a problem with so many facets I’d essentially lost any sense of perspective or context. After patiently listening to me fumble around trying to describe a few approaches and how they weren’t working, he pulled a Master Po. He simply leaned back and asked me a simple question: “What is the problem you’re trying to solve?”

I was initially a bit perplexed, because I’d just spent around 5 minutes trying to outline it, until I saw that that was his point: I no longer had any sense of what it was I was trying to solve. I’d gotten bogged down in a quagmire of details and technical issues which had little to do with the solution to my problem. That simple question certainly didn’t solve my problem, but it was just the sort of reality check that I needed.

Now without turning this into some pointless philosophical debate or a post on the Zen of management techniques, I submit to you that this problem – this loss of context – is far more common than we realize. Not only to most individuals in the technology industry at some point or another, but the majority of vendors and enterprises as well. It’s often described as a lack of focus, but the problem is to me is better described as forgetting what problem you’re trying to solve.

Which brings us to the topic of the day: Microsoft, Mono and patents. If you’re unfamiliar with the connections between all three, here’s the abridged version: Microsoft submitted C# and the CLR to the ECMA standards body, and the Mono project took those standards and ran with them, creating a .NET equivalent runtime environment that runs cross-platform. What is open to interpretation, however, is to what extent the Mono project might run afoul of patents that Microsoft holds, and if it does, when and how Microsoft might take action. This uncertainty is what leads open source luminaries such as Bruce Perens to decide that he will not work with Mono, for fear that his work will later be encumbered. For more on the subject, you can grab a paper I wrote on the subject here (PDF warning), and we subsequently released under a Creative Commons license.

Given the current state of software patents, I suppose this conclusion is not much of a stretch. After all, if Sun has to pay Kodak (Kodak?) $92 million for patent licensing, who is safe?

What’s more, conventional wisdom says that any official assurance from Microsoft that the Mono project will not be subject to patent infringement would be folly of the highest order; Microsoft, we’re reminded, makes the bulk of its cash from its Windows platform, which would be threatened by the legitimate availability of its .NET development paradigm cross-platform. But frankly, I think that convential wisdom in this case is just that: conventional. Not the sort of aggressive thinking that might allow Microsoft to perform a bit of Kung Fu of its own, by using open source’s momentum to its own advantage.

The real question in my mind, the important question, is not how or when Microsoft might sue Mono users, but why? To answer that, I think it’s important to look at what problem is Microsoft trying to solve.

Given the rise of genuinely useful network applications and the inexorable march of Linux, at least on the server, does anyone believe that the ubiquity of Windows is as guaranteed as it was, say, 5 years ago? I’m not writing them off, mind you; I still think that whenever Longhorn arrives it will be a phenomenal operating system, and they’re still dominant. But I also find it increasingly difficult to believe that the margins and marketshare that they’ve built their business on are sustainable and unassailable in the longer term. Nothing lasts forever, as they say.

If we accept – for the sake of argument – that the marketshare is at least potentially at risk, how might Microsoft best respond? Well, an ideal first step would be to try competing on the merits of individual products, not on a falsely homogenous architecture. Start with Firefox, if that’s the easiest concession to make, but any recognition from Microsoft that its clients do not want to be limited to purely Microsoft architectures would certainly be a step in the right direction.

Unfortunately, that won’t be enough. As more people are beginning to realize, developers are where success is lost or won, not CIOs. From Microsoft to Sun, this realization is driving corporate agendas the industry over. Why? Because no matter how big a technology vendor gets, it can never solve every problem, or supply every application. Even the absolute giants of technology are beholden to their developers; as my colleague quotes Kathy Sierra, technologies need to create a wake that picks up developers along the way.

To give credit where credit is due, this is no secret to Microsoft. Over the years, the the folks from Redmond have done a remarkable job of recognizing this; its developer tools have consistently set the bar for productivity, Visual Basic singlehandedly brought a whole new class of developers to the table (much to the dismay of IT staffs everywhere), and has generally enjoyed positive relationships with millions of eager developers. Hell, Steve Ballmer got so pumped about developers that he needed surgery on his vocal cords.

But despite the tools, despite the attention, one could argue that Microsoft’s committment to developers is mere lip service. Why? Well, what do developers want? In a word, volume. The opportunity to have their software – their creations, their work – used by as many people as possible. Microsoft, to date, has gotten by on this score simply by virtue of its ubiquity. Should that ubiquity subside, even slightly, Microsoft’s value proposition would be lessened – perhaps substantially. When Microsoft is everywhere, the developers needs and Microsoft’s needs are reasonably well aligned. When Linux and other platforms grow more common, how does Microsoft sell developers on the volume opportunity? Unlike Java, PHP, Python or other platforms that run truly cross platform, Microsoft has focused on delivering solutions for its own platforms, and therefore its sell is heavily reliant on not just good marketshare, but dominant marketshare.

So let’s take a step back, and ask ourselves what problem Microsoft is solving. The answer is their own, the one they are fixated on – how to protect the platform. With Google showing the world what thin clients can do, and IBM, Novell, Red Hat and Sun are focused on providing client alternatives, Microsoft is playing a defensive platform protection game, not a bold “we’re the best development shop on the planet and can compete with anyone” game. Microsoft developers are essentially coopted to further the advancement of Microsoft’s platforms. From a Microsoft financial standpoint, that argument is pretty straightforward. But Microsoft cannot afford to look at it that way, because the key to their success – the developers – certainly won’t. What’s more important: enlisting the most developers, or trying desperately to protect the platform any way you can? What’s in Microsoft’s best interest may not be in the developers best interests much longer. That – to me – is the real problem, the one that Microsoft should be solving.

How to do it? Well, Mono seems to me to be a pretty good answer. They’d be able to recruit potentially legions of open source, Linux-loving developers from rival platforms, indoctrinating them in C# development. Overnight they’d have an open source play – one that isn’t likely to be immediately competitive with their own commercial offerings (think Microsoft as WebSphere to Mono as Tomcat) – and a truly compelling, cross-platform message for their developers. Think for a minute about a Microsoft that could go head to head with BEA, IBM, Oracle or Sun with an open source, cross-platform play. Well, it could happen if Microsoft did one thing: grant Mono a patent amnesty. Microsoft would be using Mono, and Mono would be using Microsoft, but it makes sense for everyone involved. If, that is, Microsoft is content to have its platforms compete on their own merits, rather than “integrated innovation,” AKA virtual lock in. Either way, I think Microsoft would do well to take a step back and try and determine what the problem is they’re trying to solve. Being defensive, after all, isn’t what got them where they are today.

9 comments

  1. Are you sure it's just the Patent worries, sogrady?

    I think there's a fair amount of Redmond Bias against C# and .NET just because of where they come. I think it's silly because C# is like my new favorite compiled language and .NET makes Windows programming absolute cake.

    But are you sure it's just Intellectual Property issues?

  2. well, i'm pretty sure there's little if any bias towards C# from MS, if that's what you're asking. it is, at the core, its answer to Java.

    but no, it certainly goes beyond simple IP issues; there are political implications that go up and down MS, and there's the organizational discomfort with open source to factor in as well.

  3. Microsoft doesn't just want open source developers using Mono or .NET, they want them writing to Microsoft's APIs using Mono or .NET, rather than (say) writing to Gtk or Qt using Mono, because they want people writing code that's not just open source, but code that's open source and runs well on Windows.

    The developers who are likely to be worried about patents are also going to be worried about Microsoft making Mono chase an ever-evolving API, and so are more likely to write to non-Microsoft APIs. There's no win for Microsoft there, so what do they get from giving up their patent stick?

  4. "Microsoft doesn't just want open source developers using Mono or .NET, they want them writing to Microsoft's APIs using Mono or .NET,"

    agreed.

    "because they want people writing code that's not just open source, but code that's open source and runs well on Windows."

    mostly agreed.

    "The developers who are likely to be worried about patents are also going to be worried about Microsoft making Mono chase an ever-evolving API, and so are more likely to write to non-Microsoft APIs."

    this has not been born out in my experience; some of the more useful Linux desktop applications that i use every day have been built in Mono despite such worries, principally b/c the developers love the productivity.

    "There's no win for Microsoft there, so what do they get from giving up their patent stick?"

    they gain a quasi-open source story by doing nothing. say they're dealing with governments abroad that mandate open-source; there's either no play for Microsoft there, or a Mono play which keeps those developers – and applications – Microsoft compatible longer term.

  5. "some of the more useful Linux desktop applications that i use every day have been built in Mono despite such worries, principally b/c the developers love the productivity."

    Not just built in Mono… but built in Mono to Microsoft's APIs? As I understand it, you get a better chance of avoiding the Microsoft "Red Queen's Race" and get a more "native" application by using bindings for native X11 toolkits from Mono. This is one of the points I have seen brought up again and again while researching patents and Mono… it's kind of like the flipside of Microsoft's games with Java, right?

  6. well, i think what you're getting at is that Mono != .NET, which is a point well made and taken. the applications in question typically leverage GTK-Sharp (GTK bindings for C#), which while principally employed on Linux do have cross-platform instantiations (e.g. my use of GAIM on Windows). QT-Sharp is another alternative.

    but yes, binding to cross-platform alternatives above the CLR does guarantee better deployability (if that's a word ;).

    the question that's most important to me, however, isn't the upper level bindings, but the language/runtime of choice.

  7. Yeh, but what's the bit that's important to Microsoft? Would donating the patents on the runtime in some irrevocable fashion actually promote the use of the bit they *do* care about… more than just saying "we promise we won't use the patent stick" would?

    That's the real question you have to answer, before you can answer this one: "The real question in my mind, the important question, is not how or when Microsoft might sue Mono users, but why?"

  8. 1. i think what's important to Microsoft is the platform.
    2. given that focus, developers are the most critical constituency to the firm.
    3. given that many developers don't want to design to Microsoft only, open platforms are important.
    4. now we have a conflict b/twn #1 and #3.
    5. but what if there existed a cross-platform instantiation of MS technologies that was moderately compatible, but that MS could compete with very effectively? then they'd get 1, 2, and 3

  9. Why Microsoft Office XML could be a boon for MONO

    If Microsoft wants to use ECMA standardisation as an argument for openstandardness (like open handedness, geddit), then it may have to cut the chilling effects that have so far held back Mono in production environments. The idea is put forward in…

Leave a Reply

Your email address will not be published. Required fields are marked *