Microsoft recently announced that they were releasing their .NET software under the MIT license; ostensibly making Microsoft’s .NET implementation Free Software. Microsoft also published a patent promise telling each user Microsoft won’t “assert any .NET Patents against you for making, using, selling, offering for sale, importing, or distributing” covered .NET code. Mono, a .NET implementation, has incorporated Microsoft’s previous code contributions and plans to do more of this.
Mono developer Miguel de Icaza mentioned “Open Source” 9 times in his blog post, each time endorsing the open source movement and Microsoft’s action here.
But Microsoft’s software has a patent trap within: Microsoft is not clearly granting each user an irrevocable patent license for all of its patents that Mono actually exercises.
Was it ever wise to include Microsoft’s code?
Is it wise to do this now?
Is it wise to build dependencies on C#, a language that depends on a .NET implementation or anything else .NET?
It’s worth looking at history to see what traps Microsoft has set and determine if those problems still exist.
In 2009 the FSF advised against writing software in C# and pointed to a practical alternative to C# while making it clear that the problem lies not with C# or .NET implementations but with taking great risks believing Microsoft’s patents won’t be used to sue users into losing the very freedoms they ostensibly gained. Here’s how the trap would work: Neither Microsoft’s Patent Promise nor Microsoft’s chosen license grant you an irrevocable patent license. Microsoft has promised to not sue you. A promise not to sue and an irrevocable patent license are not the same thing because the circumstances that make Microsoft’s promise true today can change tomorrow rendering the promise obsolete. The same is not true of an irrevocable patent license. As the FSF pointed out in 2009:
The Community Promise does not give you any rights to exercise the patented claims. It only says that Microsoft will not sue you over claims in patents that it owns or controls. If Microsoft sells one of those patents, there’s nothing stopping the buyer from suing everyone who uses the software.
The FSF’s 2009 essay cites quotes to clearly show how Microsoft has the intention to be a patent aggressor targeting Free Software users. It should be obvious that Microsoft has the means to litigate.
Computer users beware: Avoid .NET dependencies (including C# and .NET applications) and don’t get other users into a patent trap. As FSF Executive Director John Sullivan wrote in 2009 it’s not bad to have free .NET implementations but we should not depend on them because they carry unnecessary patent infringement risk:
We should systematically arrange to depend on the free C# implementations as little as possible. In other words, we should discourage people from writing programs in C#. Therefore, we should not include C# implementations in the default installation of GNU/Linux distributions or in their principal ways of installing GNOME, and we should distribute and recommend non-C# applications rather than comparable C# applications whenever possible.
I can’t help but notice how “open source” is all over the announcement and supporters’ blog posts encouraging you to take Microsoft’s patent bait without pointing to any potential patent problems. And I notice that the Free Software Foundation offers sage warnings about patent ownership, how ownership changes render patent promises moot, and practical solutions to avoid Microsoft’s patent trap. This is no accident. It’s part of how Free Software and Open Source differ and how those philosophical differences sometimes lead to radical differences on the ground.
The Free Software movement is a social movement known for looking out for every computer user’s software freedoms to run, share, and modify published computer software. Open Source is a younger business-friendly developmental methodology designed to never raise software freedom as an issue so your loss of those freedoms never comes to mind (read source 1 and source 2 for more information on this).
A note (2014-11-12): According to End Software Patents speculates that “the 2012 “in re Spansion” case in the USA and the judge ruled that a promise is the same as a licence. (See The value of promises and estoppel defences)”. However, this might not matter because:
- “it’s not explicit in the ruling if this still applies when someone else buys the patents“, in other words it’s not clear that a patent promise is as good as a license,
- “you’re only protected if you’re distributing the code “as part of either a .NET Runtime or as part of any application designed to run on a .NET Runtime“. So if you add any of the code to another project, then you lose protection and MS reserves the right to sue you or ask for royalties” (source)
- “the protection only applies to a “compliant implementation” of .NET. So if you want to remove some parts and make a streamlined framework for embedded devices, then your implementation won’t be compliant and the protection doesn’t apply to you.” (source)
So even if ESP is correct and a promise not to sue is as good as a license, Microsoft’s patent promise has enough problems with it that you’re still left with the same result: you’re better off not building dependencies on .NET and following the aforementioned “open source” promotions cheering this on won’t warn you of the relevant dangers.