Mono and FAT
I read a blog post from lamalex earlier this week where he critized the development of Gnote as a mono-free alternative to tomboy, essentially calling the Mono controversy FUD.
Now I do understand that some people think that Mono is no threat to Free Software and that the patents on .NET are no danger. But FUD means Fear, uncertainty and doubt, it generally refers to tactics using factually false information or deliberate misinterpretations of information to undermine something.
Now, having a discussion within the community about patent threats and the strategies of dealing with that is something very different from FUD, it's something many projects like Samba and Wine have to deal with. We need to check and ensure how much a threat something really poses, if it involves patents that can be defeated using something like prior art and if so, if small projects or companies are at risk of being bullied into paying by companies like Microsoft because they cannot afford a defense. This is a rational process, not gossip or random fear.
The thing with Mono is that you know for sure that Microsoft is getting patents on C#, there's no reason to believe these wouldn't apply to mono. Secondly, Microsoft has a bad reputation for patent extortion, as the recent case against TomTom has shown. If Microsoft can successfully blackmail someone over something like long-filename support on FAT, why wouldn't they do the same for an entire framework they designed?
The immediate danger here is not the existence of Mono or some specific Mono apps, but the possibility of an increasing number of Gnome components depending on Mono and what this would mean for the Linux desktop when Microsoft finally decides to sue some non-SuSE distribution or even a project or a user for the use of their intellecutal property? People implemented FAT for years without any problems until TomTom got bitten, FAT with long filenames was also a safe Microsoft-technology to use...
Finally, I would like to point out that the danger of Mono isn't just something blogged by me or some unknown blogger somewhere. Richard Stallman himself pointed out the that mono isn't safe here.


Comments
30 comments postedJust to point that, making linux patent free (microsoft or not) is impossible.
May I recall :
- That microsoft own the patent that allow to double clic on a grafical interface ?
http://www.freepatentsonline.com/6727830.html
(if someone wondered why apple is so oldish with his one button mouse ..... here is the answer)
That's one example of many where microsoft can sue linux.
if you want to scare yourself, here is a list of microsoft only patent :
http://appft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&p=1&u...
So what do we do now ? Kernel and UI are in danger by patents ......... the only thing to do is to redo everything from 0 ...... even the way to use a computer .......
That's crasy isn't it ? The truth is, mono or not, microsoft has already Linux totaly on his palm.
All those patents are for thing MS patented, but did not invent.
.NET was created by them, so there's little reason to think those patents will not hold up if tested.
Does this mean we can't use Avahi either, since it's Apple technology [1]?
Apple are crazy-people when it comes to defending their stuff.
Apparently it's the system that is broken.
It would be cool to do a political initiative against software patents that wasn't a blog post.
1. http://en.wikipedia.org/wiki/Zeroconf
There are major differences here, but if you have evidence of Apple patenting key parts of ZeroConf I would be very willing to look at it.
Essentially, there are many different patent threats like docks, window management etc, but most of these are very weak patents because there's a ton of prior art. For mono, we are actually talking about something that MS did created themselves, so we know that relying on the weakness of the patent will do little good in this case.
I agree that petents are broken, and I will happily accept mono into Gnome on technical merrits if we manage to change the patent system for the better.
Every stupid little thing you can do with a computer is patented.
Regardless if a patent is weak or not, someone can still drag you into court, so we kind of end up in the situation where we can't do anything at all. That is unfortunate.
But short of not building Linux, we cannot do anything about that. TomTom could have succesfully countered the MS patent if they wanted to, yet they folded.
The patents regarding mono will be a lot stronger because MS actually did create .NET...
Am I the only person who agrees with what you are saying?
The only big advantage Mono brings is being able to run .NET code on Linux, which can (theoretically) be done by running .NET itself on Wine.
RMS is total fucking irrelevant.
And we already had this debate when Tomboy was accepted into GNOME.
First off, need I remind everyone about the Ubuntu CoC? Calling someone who has given so much to our movement names seems very wrong to me.
Secondly, no we did not have the debate. It went in despite the protests and it still isn't clear what risks it brings.
You refer to comments made by RMS regarding Mono, but what about all of the other things he considers dangerous? Microcode. non-free BIOS. javascript. it goes on and on and on. Due to his ideals he doesn't even use the web--its too non-free. It sounds a lot to me like choosing battles. If you're going to go the free-software route--the RMS route--you need to audit a lot more than just Mono.
/me mumbles something about people in glass houses and continues on his way.
Mono is not something that we NEED to build an OS. I'm not attacking it on technical grounds but if it didn't exist, we would not loose a single drop of actual functionality (as the Gnote example proves). If we dump FAT, people with digital cameras or screwed. If we drop Samba, you cannot share files with Windows computers.
If you drop mono, we need to code the exact same apps in C++ or Python, you do not sacrifice functionality.
And RMS might be an idealist, but regarding threats to our digital freedom, he usually is right. I like to think that we are actually moving to a world without binary driver blobs, and I can live with that evolution. Mono is just an evolution away from the free languages we already have.
#If you drop mono, we need to code the exact same apps in C++ or Python, you do not sacrifice functionality.
As a programmer, 2 opinions.
1) On paper and looking at code examples C# appears to be slightly easier to code in than C++ or C while offering some advanced language / compiler / runtime features. If c is one extreme and python the other, I think on paper C# strikes a good balance.
2) Python?? It takes far too much work to optimise python code to get the kind of speed you get in C++, C#, etc. When you're doing a simple desktop app for a home users, it's okay, but when you're doing an enterprise app processing massive amounts of data, python apps run for hours longer than the equivalent compiled languages. Its not even worth considering. People talk about speeding up python code 10-40x with various techniques, but sometimes, that's not enough.
#Mono is just an evolution away from the free languages we already have.
If you write helloworld in C#, there is no patent issue. Its a language. There are commercial non-free libraries available for most other languages and nobody complains. If you only use free libraries with C# apps, why not? Personally, I don't have a problem with it.
I'm lucky enough that I never had to be a MS Developer, but I know lots of VB.NET, ASP.NET and Visual Basic developers who can easily become contributors to linux projects if they could transition from .NET to Mono. or VB to Gambas or in my case Delphi to Lazarus.
People moan about adding more languages into the pile but new bindings and languages keep surfacing (VALA, et al). Its a natural evolution.
Please don't misunderstand me. I'm not a mono fan or advocate. I don't use it myself. I just find that the arguments people are using don't make enough sense and seem more emotional than factual. If you're scared of being sued by Microsoft, you need to stop using a lot more than Mono, IMO.
> As a programmer, 2 opinions.
If you want "some advanced language / compiler / runtime features" there is java.
> I'm lucky enough that I never had to be a MS Developer, but I know lots of VB.NET, ASP.NET and Visual Basic developers who can easily become contributors to linux projects if they could transition from .NET to Mono.
Guess what. It didn't happen. Windows developers prefer to write for a complete and up-to-date stack that for a Linux-clone that by definition will play catch-up.
See: http://nxadm.wordpress.com/2009/04/24/i-dont-like-monkeys-in-the-house/
>Guess what. It didn't happen. Windows developers prefer to write for a complete and up-to-date stack that for a Linux-clone that by definition will play catch-up.
In a couple of the customers where I have direct dealings, Mono & .NET coexist as .net developers have discovered mono on their own and ported Windows .NET apps to Mono. Its something I have witnessed in the same way as apache servers have crept into windows shops. This is how it starts. I agree it hasn't been a flood of new developers. Most of these guys are not the same as open source coders. The grew on an a microsoft world of fat gui ide's with code completion and debuggers and barely have an understanding of the underlying O/S. In the same way that more techie sysadmins moved to linux, more techie windows guys continue to firstly discover linux and then some of them actually move over. I just had contact today with a shop that has moved from Solaris + Microsoft to Linux to develop and host their Java & C# apps.
While I don't doubt the content of your quoted article, I remain more optimistic than you. To correct my statement. These people would need to transition first to linux before a transition from .NET to Mono would be feasible. Happily. I have seen this happen already in at least 3 companies that I deal with.
I want to reiterate again that I'm not scrared of being sued myself, I live in Europe where software patents are not in effect.
I am afraid that making Gnome depend on Mono opens it up to an attack which we have no easy way to move out off.
Let's imagine that happens today :
1 - Novell has contracts that let his develop a .net framework for Linux
2 - The mono licence does not stipulate anything that can allow such patent procedure .........
So what ? Well the first reaction will to freeze the mono version to stay with the old licence and not being sued. That time being solutions will be made (remplacing the components, creating his own ".net" solution, etc)
Some facts that is missing consideration :
1 - That one will make shout many Linux Fan : New Linux users exist because Linux is more user friendly and is more similar to windows (firefox, blender, gimp, thunderbird, songbird, and other cross platform aplications)
2 - With point 1 one fact is clear : The quality of the operating system is only a second rank priority decision. What matters for the big mass is the software that he uses. How much time we ear that Linux is good but does not have application X ...... even if there is a linux program that is the same (eg : Office VS OpenOffice).
3 - The point 2 leads to one thing : There must be more and more cross platform program. At that day there is not a lot of options in languages : Java, Python, .net platform for the most known,
Let me detail the list :
1 - Java : very popular, but has the trouble that is very heavy for the computer (if that one is x86). Plus Sun is now property of Oracle that can change many things (like free use of java). You mus install his virtual machine in any operating system if you want to run it. However we always install it due to web based aplications.
2 - Python : Very used, his biggest project blender is a total success. However programing under python is more a fanatic choice thing than a professional choice. The language, originaly not designed for complex use makes python very heavy for big projects. That factor puts a big limit ......... python is making big progress for correcting that fact. The need of instaling the pythons libs is only for using the apps ..... it's less used than Java
3 - .net : cross platform thanks to mono ..... One same executable can be executed on different platforms. Born due to the J++ sue from sun to microsoft, that framework and language (C#) is clearly an "ameliorated" copy of java. However it's microsoft that made it and, as this not says : Bad things can happens in future.
If we see the 3 solutions for cross platform programing : None is a perfect solution. However each one respond well to some specific needs :
Java : Very cross platform, But bad low level access, old architecture and heavy ressources
Python : Very fast, cross platform, but can ask up to 3/4 external component to be installed (gtk, winpcap, etc) and can be a very big loss of time when programing something complex.
.Net : Between Java and Python in the good, the bad is in one word : Microsoft, And you can't use the latest microsoft version of .net if you want to do cross platform because Mono will never be able to work that quick.
Don't forget that a user that is not tech fan will always say in that order : All that I do is also present in Linux, Linux is free and more stable than windows, Linux is cheaper than windows.
From my point of view we are doomed in any way if that note says right ......... because seeking for more users under linux will make everything grow ........ While there is not a .net alternative, that one will grow with java (that can also be a future threat) and python. Because each one responds to different needs.
Lets go after WINE and Samba and the Kernel (lets not forget, the FAT thing actually held up in court, which makes this a bigger risk than Mono right now) and god help Crossover Office which is making money from WINE...
Or why is it we paper over those issues and pursue mono? I think we both know there is no good answer for that. People often say that Samba is essential for linux, but thats just an excuse. WINE clearly is not essential yet nobody has thrown up a massive FUD war about it yet either. Speaking of FUD, allow me to give an excerpt from launchpad:
"There is only one way to fix all moNO bugs:
remove mono from GNOME and replace mono dependent applications by moNO free ones.
Replacing Tomboy with Gnote is good step forward.
BTW, there is a repository with latest Gnote packages for Ubuntu. You can get it here:
https://launchpad.net/~vperetokin/+archive/gnote
!!!
Please, remove moNO - M$ trojan horse in Linux.
How much it is important for the Free Software World?
http://nocturn.vsbnet.be/node/141
Must read!" -- VangelistX
If you believe this to not be FUD, well, you are insane. This is the kind of crap lamalex was talking about, and this is the kind of crap that makes this entire discussion worthless. So what it comes down to is this, if you think mono is serious patent issue, then make your case clear. Avoid spamming launchpad bug trackers with that kind of crap (he did it 3 times), and apply your ideas evenly accross all projects. If projects that use technologies that may have patent issues with MS should be avoided, make sure to include them all.
Ok,so much for having an adult constructive discussion about this with the mono-camp....
I will add again that even the founder of the Free Software foundation (Richard Stallman) shares this concern about Mono.
Then to continue, wine and Samba actually had this discussion round about the danger of patents being used against them in an adult manner and though you are never safe from the patent scam, it seems they are in the clear.
Samba specificly implements a protocol that is not even owned by Microsoft and they refused to even use any documentation provided by MS especially to avoid this trap. Adding to that that there is no alternative way of providing this needed interface layer with MS based computers.
Mono is different in that it's a reimplementation of what MS has in much the same way as the original, it's not a protocol. Additionally, mono is not something Linux absolutely needs to function or to interoperate with other systems, it's just an alternative to other languages like Python or C++.
So unless the patent issues are absolutely certainly dismissed, all mono brings is risks while adding nothing we can't do with guaranteed free languages.
The patents MS tries to use against the kernel are a danger, but we simply can't rip the kernel out and it wouldn't help anyway as a new kernel might also use patented techniques. But doing a nearly 1-on-1 implementation of their stuff is not a good idea.
Since for gnome GTK# is used instead of WinForms and few if any people use mono with asp.net, it isn't that much of a legal problem.
However, the mono runtime itself is huge compared to other runtimes. If Gnote and Tomboy are equivalent in features, for dependency's sake alone Gnote is better.
Or you can just side step the whole issue entirely and use Python. Or if you really like C# that much, Vala (when it matures).
That's a good point actually, and one I made in earlier posts on this issue. Do we actually REQUIRE Mono badly enough to go for that instead of safe alternatives such as Python?
Mono isn't 'required' any more than 'C' is required to get things done.
Those who choose Mono to develop an application, do so because they believe it is the best platform for them to achieve their goals.
The FUD aspect of many of the discussions centers around extreme FOSS view points where they want to pick and choose risks.
e.g. It is ok to rail against Mono due to possible patent issues, but not against other technologies that Microsoft claims to hold patents on(IPV6, SOAP, etc)
The other flip side is when attempting to actually hold an intelligent discussion, as opposed to rants, inevitably the 'M$' crowd comes in.
Go to the irc channel if you have a question about Mono legal issues, also you might check this:
http://mono-project.com/FAQ:_Licensing
There are 2 problems with that, first issue is that this is a Novell page and Novell inked that controversial deal with Microsoft which means they are not the ones at risk, the other community members are.
Secondly, that page talks about a grant given on those patents. Part of this open discussion should be to have a legal expert go over that grant and see if it can be revoked, who it covers and if the entire Mono stack is covered.
Again, this requires an open debate over this technology.
I mean... the article states, that the deal did not cover Mono, just an implementation of the Silverlight technology in Linux, you don't need to be a legal expert to understand that.
Open debate? Mono a 7 year old project, open debate now?.
And last thing, the author says that RMS does not approve mono, remember that RMS doesn't even use Google, Samba, Java, and a lot of things, he is an extremist and you should not follow what he say.
Mono may be 7 years old, but the threat of Gnome becoming dependent on it is new. If Wine would also be vulnerable to patents, it would also only become this much of a problem if one of the 2 major desktops started to depend on it.
Secondly, the Novell-MS deal covering or not covering Mono changes nothing to the fact that MS does hold these patents and that there is no guarantee that it won't use them like they used the FAT patent against TomTom.
RMS may go to great lengths to preserve his freedom, but that doesn't mean he's wrong. We owe a lot to that guy.
OMFG YOU JUST HATING ON MONO!!
Just kidding. I think you are right. I think it is high time that the Mono team actually sat down and talked about this issue just like the Wine and Samba team have done. There is nothing wrong with actually talking about it. Yes, software patents are real, and they pose a threat for every piece of software.
For example, XPCOM in Firefox is being removed for a multitude of reasons, patent issues over COM being one of them. Now that isn't the biggest reason XPCOM is being removed, but people have been talking about the issue and discussing the implications for some time in the background and it has helped out by keeping an open dialog about the issue open.
The Mono team has really had a static contingency plan about what they're going to do about it. Basically the plan comes down to either rework it, show prior art, or do away with it. All are very general statements. Who would rework it and how would you validate that you had removed all parts, how will this affect other programs that depend on it? Who would research prior art, how will they be compensated? What will happen to projects if you do away with something? Have you identified hot spots in the runtime that could be targeted or is the Mono team just waiting to be blindsided by a lawsuit?
I think a heads up approach is the preferred solution. We all know that a lot of focus has gone into the Windows interoperability layer, but what of the actual runtime itself? What happens if the lawsuit focuses on a way the .Net runtime works, not its libraries? What, happens if the SuSE agreement causes Novell developers to stand-by while non-SuSE developers are sued? The issue is incredibly complex and I know I'm not doing it any justice here.
I'm not hating on the Mono team. They've done an incredible job thus far and I think they should keep it up! Asking for an open dialog about what is going to happen to non-SuSE distributions in the event of a MS upheaval, is not Mono hating, it's planning and it is helpful in the long term.
I'm pretty sure C# itself is an ECMA standard licensed under RAND0 conditions (that means no patent fee afaik). The real problem isn't C# but the fact that if you use C# you often end up using WinForms and ASP.NET etc which are libraries that the mono project re-implemented and that they ship with Mono. WinForms and ASP.NET are NOT covered by the RAND0 license so it's very much possible that Microsoft will litigate against people using those on non-Windows platforms.
However, one should also remember that C# is a great language and the mono runtime has a very high quality. Not a lot of other toolschains offer an IDE with both a debugger and code completion that _works_ (I guess it's just java). Personally I prefer mean lean GCC though but for people that know C# really well already mono might be a great way to start off a new Linux development career.
Not all of C# is ECMA. LINQ, Lambda expression, anonymous types, Object and collection initializers, just to name a few. Anyone of those implemented in Mono could be a potential legal nightmare, all being core parts of C# and .Net. Microsoft stopped seeking certification after C# 2.0.
So C# 2.0 and lower fall into a free language. C# 3.0 and up is clearly open for debate.
So let's all clear the air here with the fact that not all parts of C# are part of a free language. There is nothing stopping MS from patenting LINQ or the implementation of Lambda expressions within C#.
Also, there isn't any reason why MS couldn't sue because Gtk# was shown to be too similar to WinForms, or how MonoDevelop builds automatically generated code similar to how Visual Studio does it.
I don't think any of this has ever been covered by the Mono developers.
Then again, nothing prevents MS to sue the KDevelop developers because KDevelop "looks a lot like" Visual Studio.
Or from having whatever random patent on making code assemblies that the Linux/GCC toolchain does too.
Or anything else.
Point is, there are risks of patent litigations everywhere, even with the most trivial code. It has nothing to do with the programming language, especially given that the most trollish patents are on methods and so vague that they could apply to virtually anything and a couple of dozens of existing implementations (just think of Kodak vs Sun via their patent from Wang).
And C# is hardly inventing anything new in terms of language constructs -- it is rather a big mix of as much programming language features as possible without much consideration for API stability, a rich SDK or enterprise features (yes, I'm having Java in mind there for comparison).
So what is so much more of a risk with C# on Mono ?
Most patent violations in Linux are accidental with most of those patents being very weak.
The Novell deal introduced a new strategy for MS. instead of just trying to destroy Free Software, they are seeking to make money of it inderectly by waiving patents. This provides them with two things: money and it makes Free Software essentially non-free.
Just the single fact that MS is supportive of Mono and Moonlight should be enough to trigger us to be cautious. They have never shown anything but hostile intend toward the community.
The thing remains, you know for sure that Mono uses patents held by MS, for which they gave a grant. Unless we look at the exact conditions of that grant, we cannot make sure it will stay that way.