Linked by Thom Holwerda on Mon 6th Oct 2008 10:37 UTC, submitted by John Mills
Mono Project The Mono project has released Mono 2.0. As most of you will know, Mono is an open-source implementation of Microsoft's .NET framework for Linux, Mac OS X, Windows, and other operating systems. The 2.0 release comes packed with new features, the main ones being the compiler upgrade to C# 3.0 with support for LINQ, as well as the inclusion of ADO.NET 2.0, ASP.NET 2.0 and System.Windows.Forms 2.0. The release notes detail all the changes and new features.
Thread beginning with comment 332933
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[5]: Amazing
by google_ninja on Wed 8th Oct 2008 19:09 UTC in reply to "RE[4]: Amazing"
google_ninja
Member since:
2006-02-05

ASP.NET, ADO.NET and Windows Presentation Foundation are protected (I believe) by patents. If so, it doesn't matter one whit if Mono contributors have never read BCL or ROTOR source, or that they wrote all three implementations years before ms released their source. They would still be in violation of Microsoft IP if they do not have a license from Microsoft to use the protected IP.


Reverse engineering is a specific exception to this. If it weren't for that, smb and ms office format compatibility would have been illegal until they were opened/licensed, and wine would still be illegal.

It is definitely a sort of grey area though, and one that could go to court. The thing is that the worst thing that could happen to mono is forcing them to stop distributing ASP/ADO/Winforms. That is a pain, but its not something that would in any way effect linux mono apps, since its only the high level stuff that gets questionable.

The low level stuff (CLR/C#) is under an open specification, and the linux mono APIs (like GTK#) are completely patent free.

The mono team understands the issues, and from day one has been real careful to keep the dangerous stuff seperate from the safe stuff. I would agree that nobody should base their business on the mono implementations of the .net stack (just like I would caution anyone to base their business on wine), but mono is a great platform that integrates very well into existing linux APIs.

Reply Parent Score: 2

RE[6]: Amazing
by lemur2 on Wed 8th Oct 2008 22:48 in reply to "RE[5]: Amazing"
lemur2 Member since:
2007-02-17

"ASP.NET, ADO.NET and Windows Presentation Foundation are protected (I believe) by patents. If so, it doesn't matter one whit if Mono contributors have never read BCL or ROTOR source, or that they wrote all three implementations years before ms released their source. They would still be in violation of Microsoft IP if they do not have a license from Microsoft to use the protected IP.
Reverse engineering is a specific exception to this. If it weren't for that, smb and ms office format compatibility would have been illegal until they were opened/licensed, and wine would still be illegal. It is definitely a sort of grey area though, and one that could go to court. "

Sorry. Very nice try, but no. It is OK to reverse engineer a trade secret, but not a patent.

Copyrights protect the expression of something (so you can't copy source code directly, you have to write your own). OK, copyrights aren't the problem, because Mono source code, and Samba and Wine etc aren't a copy of Microsoft's source code.

Patents protect the idea (or the invention, if you will), and not just the expression of an idea. Samba is a free-software implementation of the SMB protocol (IBM's invention) for delivering client/server functionality over a LAN (Novell's invention, in Netware). The only form of IP that Microsoft has that Samba could possibly violate then is a trade secret. Reverse engineering is a perfectly legal way to try to uncover a trade secret. So Samba is fine, that is all fairly clear cut.

Wine is a bit more problematic. Wine is a free-software implementation of a translation between Windows win32 API and the Linux API that covers the same purpose. Therefore Wine does not actually do the same thing as the win 32 API. The Linux API clearly is not a copy of the win32 API. In any event, since any OS has to provide an API for programs to run, since that is a basic function of an OS in the first place, there is a strong argument that the win32 API is not a new invention, and Microsoft can hold no valid patents in it anyway. I haven't decided about Wine, but I think it too might be OK.

.NET is a problem. Microsoft has a fairly strong case to claim that .NET is a Microsoft invention, and therefore any patents that Microsoft holds covering .NET are valid.

I could argue that .NET is just a different-looking implementation of the same functionality as Java, and that therefore Java is the real original invention and not .NET ... but that is a point that would have to be argued in court.

If you want to implement .NET you are legally far better off (i.e safer) to get permission (that is, get a license) from Microsoft to implement it. I believe that Novell probably does have such a license from Microsoft to implement it, and therefore Novell is perfectly fine to write Mono.

The crunch comes ... who can legally use Mono? Implementation of the .NET "invention" requires a license from Microsoft, but so to does use of that "invention". (This pre-supposes that Java is not prior art for .NET, and that Microsoft's patents are valid, but bear with me, because Microsoft legal certainly believe that is so). Certainly purchasers of Novell SLED can use Mono, because they too have a license to use it paid for as part of their purchase of SLED.

Anyone else? I don't think so. Anyone else (other than Novell's programmers, and Novell's SLED customers) would be included in Mr Ballmers group of "Linux users with an undisclosed liability to Microsoft" I believe if they use (or try to modify the source code of) Mono.

The thing is that the worst thing that could happen to mono is forcing them to stop distributing ASP/ADO/Winforms. That is a pain, but its not something that would in any way effect linux mono apps, since its only the high level stuff that gets questionable. The low level stuff (CLR/C#) is under an open specification, and the linux mono APIs (like GTK#) are completely patent free. The mono team understands the issues, and from day one has been real careful to keep the dangerous stuff seperate from the safe stuff. I would agree that nobody should base their business on the mono implementations of the .net stack (just like I would caution anyone to base their business on wine), but mono is a great platform that integrates very well into existing linux APIs.


Mono is not a great platform at all for Linux if, years hence, when a number of mission-critical Linux enterprise applications have been written in C# and using Winforms, ADO.NET and/or ASP.NET, and Microsoft decides to sue.

If I were Microsoft, that actually would be the anti-Linux plan. Get some patent hooks into Linux, get some mission critical stuff using the patents, wait until businesses depend on it ... then collect license fees for it.

Hence ... far better to use Java. It achieves the same end, performs better, and is unencumbered.

Ditch Mono now ... before it becomes a potential problem.

Edited 2008-10-08 23:03 UTC

Reply Parent Score: 1

RE[7]: Amazing
by lemur2 on Wed 8th Oct 2008 23:50 in reply to "RE[6]: Amazing"
lemur2 Member since:
2007-02-17

Wine is a bit more problematic. Wine is a free-software implementation of a translation between Windows win32 API and the Linux API that covers the same purpose.


Just on Wine ... there is another argument. Wine is not a copy of Microsoft's source code for the win32 API, so it is in no danger from copyright law. Wine is a reverse engineering of the win32 API functionality, but that is OK IF the win32 API is only protected by virtue of it being a trade secret. Wine is only a problem if it violates a valid patent held by Microsoft.

OK, there is certainly a lot of prior art for the concept of an API, so Microsoft have a hard task right off the bat to try to establish that they did have a valid patent in this arena, but let's suppose for the moment (for the sake of argument) that the US patent system is inane enough to allow Microsoft an enforceable patent on some aspect or another on the win32 API.

OK, a patent is actually a form of IP protection for a "method" of doing something. It does not protect the actual "doing of something", but only the method of doing it described in the patent.

Example of what this means: it would be possible for Edison to get a patent on his invention of an incandescent light. The patent would be to protect edisons "method of producing light from electricity". That after all was Edison's invention.

OK, a flourescent light, or a LED light, both are also "methods of producing light from electricity" ... but neither would violate Edison's patent on his incandescent light because both the flourescent light and the LED light sources use an entirely different method to produce the light from the electricity.

With me so far?

OK then ... Wine uses an entirely different method to provide the win32 API services to any running programs than Windows does.

Wine passes the calls (with translated parameters) on to and back from the Linux API, whereas Windows processes the calls directly.

Therefore, you could argue, that Wine does not violate any patent that Microsoft may hold, because Wine uses entirely different methods than Windows does.

Edited 2008-10-08 23:52 UTC

Reply Parent Score: 1

RE[7]: Amazing
by google_ninja on Thu 9th Oct 2008 13:16 in reply to "RE[6]: Amazing"
google_ninja Member since:
2006-02-05

I see what you are saying about patent vs copyright. I am not entirely convinced that the exceptions in the law around reverse engineering do not apply to patents, but at the same time im not in the mood to go hunting down the info at this moment in time ;)

Mono is not a great platform at all for Linux if, years hence, when a number of mission-critical Linux enterprise applications have been written in C# and using Winforms, ADO.NET and/or ASP.NET, and Microsoft decides to sue.


You missed my point with this. There are two purposes to mono. one is to be like wine, and reduce the difficulties of porting to linux to writing a few lines of code. The second is to create an open implementation of the CLR. Nobody is saying they are not on shakey legal ground with the first thing.

if you go here http://mono-project.com/FAQ:_Licensing you will see what I am talking about.
The .NET Framework is divided in two parts: the ECMA/ISO covered technologies and the other technologies developed on top of it like ADO.NET, ASP.NET and Windows.Forms.

Mono implements the ECMA/ISO covered parts, as well as being a project that aims to implement the higher level blocks like ASP.NET, ADO.NET and Windows.Forms.

The Mono project has gone beyond both of those components and has developed and integrated third party class libraries, the most important being: Debugging APIs, integration with the Gnome platform (Accessibility, Pango rendering, Gdk/Gtk, Glade, GnomeUI), Mozilla, OpenGL, extensive database support (Microsoft only supports a couple of providers out of the box, while Mono has support for 11 different providers), our POSIX integration libraries and finally the embedded API (used to add scripting to applications and host the CLI, or for example as an embedded runtime in Apache).

The core of the .NET Framework, and what has been patented by Microsoft falls under the ECMA/ISO submission. Jim Miller at Microsoft has made a statement on the patents covering ISO/ECMA, (he is one of the inventors listed in the patent): here (http://web.archive.org/web/20030424174805/http://mailserver.di.unip...)

Basically a grant is given to anyone who want to implement those components for free and for any purpose.

For people who need full compatibility with the Windows platform, Mono's strategy for dealing with any potential issues that might arise with ASP.NET, ADO.NET or Windows.Forms is: (1) work around the patent by using a different implementation technique that retains the API, but changes the mechanism; if that is not possible, we would (2) remove the pieces of code that were covered by those patents, and also (3) find prior art that would render the patent useless.

Not providing a patented capability would weaken the interoperability, but it would still provide the free software / open source software community with good development tools, which is the primary reason for developing Mono.

The patents do not apply in countries where software patents are not allowed.

For Linux server and desktop development, we only need the ECMA components, and things that we have developed (like Gtk#) or Apache integration.

Reply Parent Score: 2