Why Mono is Currently An Unacceptable Risk
May 19, 2004
Argument In Brief
- Microsoft’s C#/CLI licensing people, at high levels, are aware of us.
- Microsoft can choose to do damaging things in the current C#/CLI licensing ambiguity.
- Microsoft considers the free software / Linux community to be a major competitive threat
- Microsoft does not “compete” gently
- A + B + C + D = ?
The word pile amassed below defends points (1) and, in particular, (2). I take points (3) and (4) as given. I leave point (5) an exercise for the reader. 😉
Stupid Disclaimer
Since I’m not a lawyer, I don’t know if these disclaimers are important. But given the nature of the topic, I’ll play it safe and write one. I’m not a lawyer, and this ain’t legal advice, its just a dump my current thinking on an issue. It does not represent my employer’s opinion. It may represent my cat’s opinion, but only on the second tuesday of summer months.
Restatement of the Issue
Miguel has repeatedly stated that the patents necessary to implement the standards ECMA-334 (C#) and ECMA-335 (CLI) are available from Microsoft “RAND + Royalty Free”. This seems like an effective open patent grant and encouraged me initially that we could do Mono. I really like Mono. Its terrific technically, and I’d love to be able to use it. But two problems upon further consideration the past couple months:
- I’ve not seen an official statement by Microsoft that will let me trust the royalty free assertion. I think we are remiss if we do not assume Microsoft is looking for ways to, quite frankly, screw us. So unless there is a statement from Microsoft that they will have to stick to in a court, I feel (at the very least) uncomfortable.
- “RAND + royalty free”, can still seriously screw Free Software. I think this is more important than the first point. Even with RAND + royalty free you still have to execute a license agreement with Microsoft, and license agreements can stipulate things that are RAND from a corporation perspective but still screw over Free Software. Also, there is evidence that key Microsoft people are already aware of (or planned?) incompatibilities between the licensing scheme for C#/CLI and, at least, the GPL. The eye of Sauron is upon us. RAND + royalty free is very different from a patent grant.
In short, we are in an adversarial situation. Microsoft does not want us to succeed. Thus we cannot trust Microsoft, even if we’d like to, and must consider Mono based upon the question “What is the worst thing MS can reasonably do?”. We can only trust Mono if we are convinced Microsoft doesn’t have weasel room. The current situation appears, to me, to have lots of weasel room. The technical merits of Mono are basically irrelevant if its a trojan horse in the long term.
The Horror Story
So here’s the obligatory horror story based upon what I see as our current course. Actually, I don’t think this is taken to extremes at all. The GNOME actions look to me like the path we are currently on, and the Microsoft actions are not out of character, and look legally tenable based on what I know today. Microsoft can choose to not exercise these actions, but they will have the possibility (and will be more likely to the more successful the Linux desktop is).
- Act 1 – Novell hackers continue to push Mono. Novell hackers code most new independent programs/functionality in Mono and gradually start writing extensions to software like Evolution in Mono. Evolution’s core continues to remain Mono free, but if you want features X, Y, and Z you have to use Mono. A few GNOME hackers write apps in Mono, some as toys, and perhaps a couple more serious. Red Hat hackers complain. Some try to weakly push Java and some stick with working in C & Python. Sun makes noise, and does their own thing, starts some wacky projects, tries to push Java with OpenOffice.org, and is generally ineffectual.
- Act 2 – As the number of Mono-only features grows, Red Hat’s unwillingness to ship Mono begins affecting sales. Novell holds a competitive advantage (self-inflicted by Red Hat) because Red Hat-written features can be shipped by SuSE, but Novell written features require Mono. A couple years down the line, Red Hat caves and begins shipping Mono. Evolution or some other major GNOME application begins to convert their core to Mono. Maybe a couple do. GNOME starts to move toward Mono.
So far, no real problems. We’ve got a better technical infrastructure, and new features are developed more quickly. There are some road bumps and schedule slippage as major GNOME apps (or core) begin to convert pieces more aggressively to Mono. There might be a loss of focus on user features for a while, such as happened with GNOME 2, but it won’t be terribly bad, and the gains will be substantial.
- Act 3 – Its been 4 years. Desktop Linux has made a large impact on the market, and Microsoft is even more determined. Large pieces of GNOME are written in Mono, and other parts of the Linux stack are considering it. Some may already be using it. Microsoft starts gently nudging companies, reminding them that they are required to license the C#/CLI patents. Novell already has a license so it can distribute Mono, and Red Hat is in the process of finishing the agreement with MS. (As an aside, notice that this doesn’t totally screw over corporations, so beware treating their willingness or unwillingness to use Mono as a useful indicator of whether mono is safe).
- Act 4 – Eventually Microsoft starts dropping barbs, saying things in the press, etc reminding people that to distribute C#/CLI implementations you need a license from Microsoft. It slowly works up to the point that they’ve made it very clear that individual contributors not working for their corporation etc all need to execute license agreements with Microsoft. In the best case, these can be done by individuals, in the worst case, RAND excludes license agreements that are “too small”. In either case, people have to work with Microsoft to get a license (who stalls and takes a long time) and agree to terms that include restrictions on sub-licensing. Microsoft uses other license features to exert leverage in irritating ways. In the worst case (and this is unlikely for MS PR reasons) Microsoft actually drops the royalty free bit.
At the end of the day, big chunks of GNOME are based upon technology that is substantially encumbered. Microsoft has used the tactic of allowing technically illegal behavior and only later coming down to exert control / extract money in the past. For example, from an article by Dave Malcolm, “Chris Williams, Microsoft’s director of product development, explained his attitude to software piracy in the Far East: ‘We’re just flooding the market with copies… The goal is… that when people actually end up having to buy software, they [will] already know our software and it’s the one they will have to buy when the laws get passed. We’re basically getting market share. As soon as we start to get a return on that investment, it will be humongous’.”
From a paranoid conspiracy theory perspective, the current ambiguity affords Microsoft the most future possibility. I don’t consider it ridiculous that it could even be an intentional trojan horse (of course, its dangerous whether intentional or not). If they came out and declared C#/CLI unencumbered in a satisfactory way, we would adopt Mono and life would be good. If they came out and gave the license terms which were in fact damaging, we would not adopt Mono and life would be OK. By providing just enough hooks to make those of us who really like the technology ignore the danger, but without providing details or statements that stand up in court, we buy into Mono without Microsoft having to give up a useful hold over us.
Can We Trust it will Always be Royalty Free?
The number of online MS-affiliated official-seeming sources (that I can find) suggesting that Microsoft will offer necessary patent licenses under royalty free terms is very small. I do not doubt that Microsoft will offer royalty free licenses at the present date. However, I can’t find strong evidence that would legally lock them in (serving as promissory estoppel, or something like that) to providing the patent licenses royalty free in the future.
The Mono FAQ links to a posting to the “dotnet-sscli” mailing list from Jim Miller, one of the CLR architects. The relevant sentence (a fifth of the message!) is:
“But Microsoft (and our co-sponsors, Intel and Hewlett-Packard) went further and have agreed that our patents essential to implementing C# and CLI will be available on a “royalty-free and otherwise RAND” basis for this purpose.”
The message contains almost no detail. Further, and perhaps more importantly, it doesn’t seem to involve Dr. Miller representing Microsoft in an official capacity. In fact, in the first sentence he says “…I’d like to explain why I’ve never felt [emphasis mine] the two are in conflict.” To me the whole message is premised as being a personal opinion. It is not Microsoft’s official promise to provide “royalty-free and otherwise RAND”. This could probably serve as a bit of evidence that Microsoft was presenting its licensing terms as royalty free. Its not the smoking gun, and probably won’t serve as promissory estoppel. In short, this doesn’t seem like the sort of evidence we should trust to protect us as a Free Software project.
Miguel wrote in a message to desktop-devel, “But lets not waste our time on this discussion on the mailing list, forlegal matters, you should get legal counsel. Have your lawyers engage Microsoft on this topic, that is the only way of getting a solid answer.”
Its not enough that Red Hat or Novell’s lawyers can call Microsoft and be told “we will license this to you royalty free”. As a Free Software project, I want legal weight with public accountability to hold Microsoft to royalty free, not “call Microsoft and they’ll tell you”. That means some sort of public (web, preferably) legally binding page that says: we will offer the technology to anyone on these terms. Given the need to still execute a license, knowing its royalty free isn’t enough. I think we need a public statement as to the terms of the license itself.
The other source of semi-official Microsoft statement about being royalty free, that I’ve found, is a ZDNet article from 2002 by David Berlind. He talks to Michele Herman, “Microsoft’s directory of intellectual property”. She states that Microsoft “…will be offering a conventional non-royalty non-fee RAND license”. This is a pretty good source, and if it was on an official Microsoft PR website, I would agree Microsoft is probably locked in to royalty free. I’m a little more dubious about it coming from a magazine article, esp. given how historically off the mark I’ve found magazine article’s to be about technology. Nonetheless, I do find it more reassuring than Dr. Miller’s message. I don’t know if this would hold up in a court, but its a lot closer.
Now the message from Dr. Miller does suggest that Microsoft (and Intel and Hewlett Packard) have made an official agreement somewhere to provide the patents “royalty-free and otherwise RAND” (perhaps on some ECMA form somewhere???). I would absolutely love to see that in some sort of official form! I’ve looked, but it doesn’t seem to be available online. If somebody has a solid source (online or otherwise), on a Microsoft web page, some sort of ECMA statement or form or assurance, or in a direct verifiable form from a Microsoft spokesperson (not processed through some reporter), please email me.
RAND + Royalty Free Isn’t Enough
ECMA pretty clearly requires companies to agree to license patents under RAND (Reasonable & Non-Discriminatory) terms. If you don’t, you get booted out of ECMA. ECMA explicitly does not define what is and what is not RAND license terms. If I were a corporation, I would still feel pretty safe here, because I believe there is sufficient legal precedent defining what is reasonable and what is non-discriminatory (in the context of dealing with licensing to other companies). I am convinced Microsoft is going to provide licenses to C#/CLI patents under terms that corporations will find perfectly acceptable. So unlike the “royalty free” part where things look murky from what I know now, it looks like Microsoft is locked into “RAND”.
Unfortunately, what is reasonable and non-discriminatory toward a corporation may not prove particularly reasonable for, and may discriminate against, Free Software. To my knowledge, there’s no precedent suggesting that you have to accommodate Free Software to avoid being discriminatory. RAND, as I understand it, is clearly premised for a corporate context.
So lets assume that Microsoft was locked into “royalty free”, and will provide “RAND + Royalty Free” license terms on C#/CLI to anyone, anywhere, for all time. What can MS do to Free Software now? RAND + Royalty Free still means you have to get a license. Licenses can stipulate things. And that’s where the problems come in. Big problems. Compared to this, the question of Microsoft’s commitment to “royalty free” seems like small fry.
Having to get a license at all is a major burden for hobbyists, individual contributors, and even small companies. At the very least, its irritating. At worst, if acquiring a license takes a bunch of paperwork and two months, it will very effectively deter (legal) individual contribution.
Interestingly, in the aforementioned ZDNet article, Herman (MS directory of IP) provides a number of quotes about what the royalty free + RAND license might stipulate in the case of C#/CLI:
- “Reciprocity”: Herman says this means, “This is where I say I will license a royalty-free license to my essential patents, and in return I expect you to license your essential patents to me on an royalty-free basis.” Now GNOME doesn’t have any patents to license back to MS, but what this does suggest to me is that getting this license entails a real legal agreement where parties negotiate back and forth. Its not some shrinkwrap “sign on the dotted line” deal where MS is prepared to rubber stamp anyone who wants a license. You still gotta play with Microsoft, even if RAND means they have to play nice with other companies.
- “Defensive suspension”: They have the right to revoke the license if you sue them. Pretty standard, though still I’d rather not have to agree to.
- “Field of use limitation”: you only get the patent license for implementing the standard. Not a huge irritation practically, though it is GPL incompatible.
- “Sub-licensing prohibition”: you can’t transfer the license, or use somebody else’s license. This is the major practical problem. The sub-licensing raises all sorts of issues as to who has to get a license when mixed with free software. Do you only need a license for distribution (ala GPL)? Or do you need a license for each user (ala MP3)? If Microsoft wanted to really screw Free Software, could they require “per user licensing” (albeit royalty free)? In either case, each person, org, and company that wants to redistribute the software will probably have to license directly from MS (and given the indications from reciprocation, this probably isn’t a totally trivial process)
Herman (remember, MS director of IP) explicitly says, “the field of use (…) and the prohibition on sub-licensing are inconsistent with the requirements of Sec. 7 of the GPL. Sec. 7 of the GPL says that if you do not have the rights to distribute the code as required under the GPL then you do not have the right to distribute at all. The GPL says you must have the rights to sublicense and to freely modify outside the field of use limitation.” The GPL incompatibility presumably isn’t a big problem for Mono since (I think) its under an X style license, and GPL’d apps can still run atop it. However, this underscores that Microsoft knows full well that their particular terms have interactions with free software. Given the potential for sub-licensing to wreak havoc (as outlined above), I’m very worried that we, the free software community, are not flying “under the radar”.
Until I read that quote, I thought there was basically no chance this was an intentional trojan horse, that this was all just dangerous possibility. I’m not so sure anymore.
In conclusion, I refer you back to my opening argument.