Let me show you what I consider one of the most destructive and dishonest defenses to come out the mono camp: On Software Patents.

Mono apologists love this one! Basically it boils down to “software patents suck because your code might infringe anyone’s patent, so every project is just as risky as mono, so don’t sweat us over patents.” Now, like all really good propaganda, this has a some core of truth: it is indeed true that software patents suck.

I despise it because not only is it dishonest, but because how easily it is tossed around by mono apologists.

I guess it’s because the argument starts of with some truth – explaining how idiotic the software patent system is in the United States – that people just disengage their brain, nod along, and agree with the entire argument.

Of all software projects, not all are equally likely to violate patents.

Both of these statements are true:

  1. Project A, a large open source networking project may infringe on one or more Microsoft patents
  2. Project B, a small open source ping implementation may infringe on one or more Microsoft patents

Microsoft has an Open Specification Promise on a wide swath of technologies that they promise not to sue anyone over, so long as you don’t sue them first. Implementing parts of .NET that are not part of the standard may infringe on Microsoft patents, because Microsoft was careful to limit how much of .NET they gave to the standards body. Internal emails from Microsoft show a careful deliberation over how much of .NET to standardize, and how much to make sure was protect by patents, specifically mentioning Linux and preventing the commoditization of the .NET platform.

This is true in a more general sense as well. Any software project covering a common technology like ping or telnet is much less likely to run into patent issues for many reasons: length of time technology has existed, the number of similar projects having worked in the same area without patent issues, etc.

Of all possible patent holders, not all present the same risk in likelihood of relevant patents

Both of these statements are true:

  1. Mono may infringe on one or more Microsoft patents
  2. Mono may infringe on one or more Dunk the Clown, Inc. patents

It is more likely that mono infringes on Microsoft patents, considering Dunk the Clown, Inc. is not the that has over 150 patents referencing the .NET framework. It is unlikely that any of Dunk the Clown, Inc. patents apply to mono.

Of those patent holders that do hold relevant patents, not all present the same risk of enforcement

Both of these statements are true:

  1. Mono may infringe on one or more Microsoft patents
  2. Mono may infringe on one or more Red Hat patents

It is more likely that Microsoft will attempt to use its patents against the mono project, than it is that RedHat will. Sure, Red Hat might go crazy insane and declare some sort of war on mono. Also, I might get invited over to Scarlet Johansson’s place for drinks and a night of passionate lovemaking tonight. /brb

Of those patents that are enforced, not all are as likely to be valid

Both of the statements are true:

  1. Mono may infringe some random “one-click-shopping” patent, and it turns out that patent is valid in a court of law.
  2. Mono may infringe some Microsoft patent, and it turns out that patent is valid in a court of law.

There are some things you can do to defend yourself if someone goes after you for patent violation. You can show prior art, for example. However, .NET is unquestionably a Microsoft technology. It is not unlikely that Microsoft holds valid patents covering .NET technology. While Microsoft certainly holds many patents that are invalid for a host of reasons, it is foolish to think that they don’t have some valid patents, especially on a technology they created!

Of those patents enforced and upheld, not all are as easy to workaround

Both of these statements are true:

  1. Mono could be found infringing a minor Microsoft patent, easily worked around.
  2. Mono could be found infringing a major Microsoft patent, required substantial changes.

I don’t know if you could say which of the two is more likely, but it is true that we know Microsoft carefully considered what to keep out of the standard, and discussed preventing the commoditization of .NET. It is not unreasonable to assume that patents underlying important concepts that would require substantial changes protect those areas that Microsoft considers crucial to keep proprietary.

Summary

I would love to think this would put this argument to rest, but I know it won’t. The truth of this argument is that although all projects do face some risks, all projects do not face the same risks. Anyway, at least next time Team Mono whips this one out you’ll be ready.