Last week I published a short correspondence I had with Richard Stallman on the subject of the GNU GPL and copyright. As I mentioned, that was from a couple of years ago, but I thought it might be worth posting now given the lively interest in the issues it raises.
Inspired partly by that older conversation, and also by some rather more heated ones on identi.ca, I sent off some questions to RMS on another subject: that of free software implementations of Microsoft's .NET.
When .NET was first announced, many feared its success would allow Microsoft to lock down yet more swathes of the computing world. But as part of Microsoft's general loss of leadership, .NET never took off in the way that some feared.
Nonetheless, not one, but two free software projects are seeking to re-implement .NET for platforms like GNU/Linux, and to give people free alternatives to Microsoft's closed code. However, that does raise issues to do with claimed software patents: after all, if such free software frameworks are re-implementations of Microsoft's technologies, the latter would probably argue that they necessarily infringe on its patents.
In an attempt to make .NET more palatable, and to assuage fears about its use of claimed software patents to attack free software implementations, Microsoft made what it called an “Open Specification Promise” for some of the technologies concerned. But that does not mean there are no problems with free implementations, as Stallman explained to me when I asked him about his current views on .NET and the free software versions, Mono and dotGNU.
GM: Could you please explain the problems with Microsoft's .NET? Is all of it equally problematic, or just some, given that Microsoft has made its Open Specification Promise for parts?
RMS: Eben Moglen told me that "open specification promise" is not something we can rely on.
For the C# language that was standardized by a standards committee, Microsoft was required to make a stronger commitment. But that does not apply to the rest of .NET.
GM: Against that background, what is your current advice to people in terms of using .NET technologies, and why?
RMS: You shouldn't write software to use .NET. No exceptions.
The basic point is that Microsoft has patents over features in .NET, and its patent promise regarding free software implementations of those is inadequate. It may someday attack the free implementations of these features.
This is no reason not to write and distribute free implementations such as Mono and DotGNU. But we have to keep in mind that using and distributing these programs might become dangerous in certain countries. Therefore, we should minimize our dependence on them – we should not write programs that use those features.
Mono implements them, so if you develop software on Mono, you are liable to use those features without thinking about the issue. It is probably the same with DotGNU, except that I don't know whether DotGNU has these features yet.
The way to avoid this danger is not to write programs in C#. If you already have a program in C#, by all means use a free platform to run it. But don't increase your exposure to the danger – don't write additional code in C#, and don't encourage people to make more use of C# programs. We need to guide our community away from dependence on an interface we know Microsoft is in a position to attack.
It is like the situation with MP3 format, which is also patented. When people manage to release and distribute free players and free encoders for MP3, more power to them. But don't ever use MP3 format to encode audio!
GM: There seem to be two main projects that are re-implementing some or all of .NET, Mono and DotGNU: are they comparable, or are they trying to do different things?
RMS: Initially Mono only set out to implement C#. Apparently it has been extended, but I don't know any details.
GM: Are they both equally risky in terms of infringing on alleged patents, or is one better placed?
RMS: I don't know the answer to that.
GM: Do you recommend one over the other?
RMS: I have never used either one. DotGNU's C# implementation (Portable.NET) was originally designed in a different way that would be more suitable for integrating with GCC, but I don't know if we will get around to do that.
GM: Is DotGNU an official part of the GNU project, as its name suggests? Is it still active (the last news entry on its Web site is from June 2009)?
RMS: Yes it is. I think only the C# implementation part is still active.
GM: Do you think that .NET is as much of a threat as was initially feared, when people saw a danger that Microsoft would use it to close off computing?
RMS: I don't think I feared that .NET would take over all computing. But I was concerned that it could be a substantial problem if we did not develop free platforms for it.
GM: If Microsoft truly wanted to work with the free software community in this area, what would it need to do for you to be reassured?
RMS: It could make an ironclad commitment that its present and future patents will never be used against implementations of DotNET.