The Mono Trap
- Dr. Roy Schestowitz
- 2009-03-24 14:11:19 UTC
- Modified: 2009-03-24 14:11:19 UTC
Summary: How Mono can interfere with the GNU GPL, along with freedoms the GPL protects
A few days ago,
Richard Stallman wrote about "the JavaScript trap," but what about Mono?
Let us look at
Mono licensing again. According to the Mono Web site:
We use three open source licenses:
* The C# compiler is dual-licensed under the MIT/X11 license and the GNU General Public License (http://www.opensource.org/licenses/gpl-license.html) (GPL).
* The tools are released under the terms of the GNU General Public License (http://www.opensource.org/licenses/gpl-license.html) (GPL).
* The runtime libraries are under the GNU Library GPL 2.0 (http://www.gnu.org/copyleft/library.html#TOC1) (LGPL 2.0).
* The class libraries are released under the terms of the MIT X11 (http://www.opensource.org/licenses/mit-license.html) license.
One reader asks, "can I download the full Mono source code and under what license?"
Since Novell controls development, what would be the point? And moreover, as this reader indicates, "the point is, if Mono isn't GPL then neither can the apps. [...] Can I recompile that [Mono-based] app without Mono?"
It is worth remembering
what Novell achieves with SUSE.
⬆
Comments
NotZed
2009-03-25 02:45:15
You sound a little confused here. LGPL != GPL.
Yes, there is indeed a problem with distributing GPL3 and GPL2-only code that links together - regardless of which libraries you use. But that is simply because those licenses are not compatible. But neither is a library GPL either.
Mono's run time doesn't need the classpath exception since it is just using the ``Library'' GPL and not the stronger GPL.
http://www.fsf.org/licensing/licenses/gpl-faq.html#AllCompatibility
It is interesting that they're using the obsolete 2.0 version of the LGPL though. The only material difference I can see (apart from updated legalese) is 6(b):
b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.
Which is an odd clause to reject - shared libraries weren't common when 2.0 was written, so it was just a modernisation.
Anyway, you're barking up the wrong tree Roy, the licenses are entirely adequate.
But the secret ``patent cross licensing deal that isn't'' calls into question any material owned by Novell. While it remains secret the only conclusion that can be drawn is that everything is tainted - and every comment from stevie wonder boy has attempted to reinforce this conclusion.
saulgoode
2009-03-25 01:23:27
Without an "or later version" option being specified, the only sure way for a project to include a LGPLv2 licensed library linked with a GPLv3 application is for that library to be relicensed as GPLv3; however, re-licensing the library as GPLv3 makes the library incompatible with GPLv2-only applications.
DotGNU offers the GNU Classpath exception and thus does not encounter this dilemma.
Dan O'Brian
2009-03-25 00:20:08
FWIW, I actually rated Jose_X's comment 5/5
Roy Schestowitz
2009-03-24 23:57:19
Dan O'Brian
2009-03-24 23:48:03
There's nothing stopping any application built on Mono from being licensed as GPLv3.
Jose_X: it seems to me that the runtime libraries are the libraries used by the runtime (aka the VM) while the class libraries are the .NET libraries (System, System.IO, etc). Hope that clears that up for you. Also, DotGNU uses many of Mono's implementation of the class libraries, so if you can't write a GPLv3 app on Mono, then you can't write a GPLv3 app on DotGNU ;-)
Jose_X
2009-03-24 20:55:39
Roy Schestowitz
2009-03-24 21:05:22
It was in the queue. Unleashed now.
Roy Schestowitz
2009-03-24 20:45:43
Robert Millan
2009-03-24 20:36:51
"Silverlight seems likely to create a problem similar to Flash, except worse, since Microsoft uses it as a platform for non-free codecs. A free replacement for Silverlight would hardly be of use in the free world without free replacement codecs."
Jose_X
2009-03-24 20:28:49
Assuming the runtime libraries are linked weakly(?) while the class libraries are not, then the app can be, eg, GPLv3 because MIT X11 code (class libraries) can be included within a GPLv3 app and this app can also be linked to LGPLv2 set of libraries.
I throwing terms around here loosely, but I think this is the basic idea of how the GPL and LGPL are intended to work.
Test drive QtCreator http://labs.trolltech.com/blogs/category/qtcreator/
Parrot 1.0.0 appears to be out http://www.parrot.org/news/2009/Parrot-1.0.0
http://www.sun.com/software/opensource/java/ and eclipse http://www.eclipse.org/ and JBOSS http://www.jboss.com/products/devstudio/ and apache http://www.apache.org/
saulgoode
2009-03-25 09:23:44
There is no automatic migration path from the Library GPL (LGPLv2) to the Lesser GPL (v2.1), though it is permissible to re-license LGPLv2 to GPLv2+later (Section 3 of the Library General Public License).
I stand by my previous post. I agree with you that it is indeed strange that anyone would still be using the Library General Public License.
Dan O'Brian
2009-03-25 12:09:43
Seriously, you guys need to get a clue.
saulgoode
2009-03-26 16:54:29
You are correct that licensing would be irrelevant if applications didn't link to the Mono runtime libraries -- and I made just such a qualification in my post.
I am under the impression that Mono applications DO link to the Mono runtime. Though I claim no firsthand knowledge of this, I note that according to the Mono Project Runtime page, the 'mkbundle' utility will generate the following message when run: And that the referenced licensing page also speaks of linking applications to the Mono runtime.
Perhaps you could provide some enlightenment as to why it would be so "clueless" to think that Mono applications link to the Mono runtime libraries.
Dan O'Brian
2009-03-26 22:43:18
Oh, snap!
http://lmgtfy.com/?q=mono+mkbundle
If you read the very first hit, you'll see that mkbundle is a special process which links your .NET app to the Mono VM (and the runtime libraries) so that it can run standalone (e.g. w/o an installed Mono on the system).
Now, if you look at the very text you quoted, you can see that it is a step AFTER you do a normal compile (mcs is the .NET 1.1 compiler).
So you'd be wrong, Mono apps do NOT normally link to the runtime libraries.
Please, try doing a little bit (just a teensy weensy bit) of research next time. Don't be like Roy, making accusations w/o even knowing the slightest inkling of background information.
saulgoode
2009-03-27 01:29:01
Please try not to be like Dan. I am not making accusations, I am trying to discuss what is and what is not involved in Mono licensing. I clearly phrased my code linking conjecture in the subjunctive mood. Your objection to my "making accusations" is merely an exhibition of your seeming inability to parse simple English sentences. Your condescension is neither warranted nor welcome.
The very link you provide in your response (indirectly, thank you), as well as the text that I highlighted from the Mono Runtime webpage, both provide a strong implication that it is typical for Mono applications to dynamically link to the Mono runtime libraries, and that static linking is available for making standalone applications. It would seem ludicrous to worry about LGPL terms if the two pieces of code weren't dynamically linking -- why would the Mono runtime license matter if the applications weren't linking to it? If what you say is true, why are the runtime libraries licensed LGPL? And regardless of that, why are they using a 20-year-old version of a license that no one recommends and isn't even OSI-approved?
Roy Schestowitz
2009-03-27 01:38:55
Dan O'Brian
2009-03-27 01:49:11
For the record , I've communicated with the Mono developers once.
Roy Schestowitz
2009-03-27 01:54:28
I've noticed you name in other sites that criticise Mono and only in those sites.
Why do you care so much about Mono?
saulgoode
2009-03-27 05:26:34
Dan O'Brian
2009-03-27 01:39:40
No, the VM links to the runtime libraries. Apps written in C# do not.
This is not rocket science. to figure out. If C# apps linked to the Mono runtime libraries, then they couldn't run on Portable.NET or on Windows and Windows .NET apps could not run on Mono.
Maybe you are just new this sort of technology, I don't know, but it seems pretty obvious to me.
Jose_X
2009-03-27 02:34:01
So whether the vm is distributed with the app or not is probably a key point. The vm, like an OS, can be considered a separate work.
BTW, the GPLv3 uses different wording: >> A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.
Dan O'Brian
2009-03-27 02:53:00
If you do not use mkbundle (which is not part of the default build process), then your .NET app is considered a separate program and thus not subject to the terms of the Mono VM (or the supporting runtime libraries).
So long as you don't use mkbundle on your .NET app, then it is free to be used with other runtime VMs, such as Microsoft's .NET, their Rotor VM, or by DotGNU's Portable.NET.
Jose_X
2009-03-27 02:59:14
The key is if the vm were gpl, then the app can be licensed otherwise only if the app is distributed separately from the vm (eg, a shell script + .class download) and if it can be considered an independent work (which it probably can if it follows well-defined interfaces, ie, if it can run on something else).
Of course, I'm not a lawyer.
Of course, this posting is about the LGPL.
Of course, I'm writing when I should be sleeping... good night.
saulgoode
2009-03-27 16:55:42
Perhaps what you describe is indeed a practical limitation of C#/.NET, but it would seem more of an artificial restriction and not a theoretical requirement. I can certainly compile/interpret a program and then interpose different libraries at run time. That is rather the point of dynamic linking and, in particular, the shared object ELF dynamic loading system employed by GNU/Linux.
It is theoretically conceivable that a compiled Mono application offers no choice of, as one example, using a garbage collector other than the one(s) offered by the runtime; but such a limitation would be an artificial design limitation of the runtime. I should imagine it would be much more beneficial to the target user/system if they were able to swap in an alternative garbage collector not provided by the runtime after the application has been compiled to byte code. But your claim that dynamic linking between apps and runtime does not exist leaves me wondering whether this is possible and, if so, how exactly one would this.
I am always interested in learning about technology, new or old. If you could address the following question, it might lead to a better understanding of this "new technology" better:
If Mono offers the ability to choose an alternative garbage collection algorithm at runtime of the byte-code, how is this mechanism implemented?
Dan O'Brian
2009-03-27 23:33:25
My statement that you seem to be referring to was meant to say that if your previous assertion was correct in that C# apps were linked to the runtime libraries, then C# apps wouldn't be very "compile once, run everywhere"-esque.
Fortunately your understanding is incorrect, and thus .NET apps (with some exceptions) can be compiled once and run on any VM (Microsoft's, Mono's, or DotGNU's).
Okay... yes, but we aren't talking about natively compiled applications here. Mono's runtime libraries are natively compiled libraries (written in C as best I can tell) that the VM itself depends on, but as I said above, they are not linked in with the program itself. Nor does the program call into them. The VM calls into the runtime libraries, but not the application.
The Mono VM could just as easily statically link the runtime libraries to itself and your .NET program would never know the difference. My guess is that they split out a lot of the logic from the VM into a set of runtime libraries as per Good Design and perhaps so that they could write other utility programs that shared a lot of the same code. Perhaps mkbundle uses the runtime libraries to build a standalone app, for example.
As Jose_X explained above, you need to think of the Mono VM as the host machine... more or less.
As with the JVM, I don't think you can change which GC is used from within the C# application at runtime.
However, this isn't really relevant to the discussion. The point is that C# applications are not linked with the Mono runtime libraries. They are only linked with the class libraries. Java works the same way so I'm not sure what confused you a few comments above.
I honestly don't know. How does Java do it? (Does Java do it?) :-)
If you really want to know, you'd be better off asking the Mono developers on their mailing list or perhaps googling for an answer; all I can do is offer my best guess as an outsider to the project without doing the exact same research I just suggested you do.
Dan O'Brian
2009-03-27 23:42:28
The only logical place to change which GC is used by the VM is to specify on the command-line (or via an environment variable) that the VM checks before it starts running the bytecode.
paul gaskin
2009-03-27 08:11:50
So is that your real name? Hopefully by answering this, you can help us to find out who your employer is, since you insist on continuing this from the cover of secrecy.
These are precisely the circumstances in which getting "outed" are appropriate. Now I'm very curious to know if you're just some lonely guy with too much time, a made-up name, and a fictional career, or if you're getting paid by the comment to slander Roy by some sleazy "reputation management" agency. If you're not a real person, maybe Roy should delete all of your comments, henceforth.
Maybe you're like Joe the Plumber, pretending to be Joe Six-pack, but out on a specific mission to discredit Roy based on hidden motives.
Actually, this makes you much worse than Joe the Plumber. At least Joe the Plumber has the guts to go face to face on TV, and to show up to his lonely book signing to fulfill his contract with his publisher.
Even Anne Coulter shows up in person for interviews, as loathsome as she is.
If you choose to continue like this you're one of the most loathsome kinds of character assassin. The unrelenting, faceless sniper.
The only response for Roy is to keep retaliating against those corporate software titans whose money finds its way into your pockets, however indirectly.
Now is the time for you to either disclose your information and continue the discussion like a civilized member of society, or just go away and find an honest occupation.
Roy Schestowitz
2009-03-27 08:16:07
Jose_X
2009-03-27 18:22:57
This thread is forcing me and will continue to force me to side mostly with Dan (on this issue).
I understand the desire of authorities to know everything about everyone. I don't believe in that (maybe it's my US or even Christian upbringing). Furthermore, I don't believe that what a person did in the past binds them to the future, or that a "good" person only does good and a "bad" person only does bad. There are good and bad actions and people get into ruts/streaks that may last a little or a long while.
Human behavior is not accurately modeled by anyone I know. What I see are attempts at this, and they fail.
When it comes to Microsoft, there record is horrendous in many ways (they have a *very* long streak of closed source monopoly control, for example), but we should always look at the details of the particular case.
Now use your leads as you wish, people. Yes, "bad" people will tend to repeat badness, but this website would grow in value to more people if it always attempted to avoid claims such as (to use an analogy) partying is good and not partying is bad. No, most people that consider themselves good (or are considered good by others) will vary about how they feel about partying at any point in time.
On Dan O'Brian...
What I do see with Dan O'Brian is that Dan's contributions to this website are almost completely always in a way to make the website appear to be mistaken. He has a high percentage at this. He isn't always correct, IMO (we know no one is always correct).
Regardless of who he is, he is not being partial by any means, unless you want to interpret that his silence means he agrees. If so, then he does in fact agree with over 95% of what is said here because I have only seen him attack a very small percentage of what is said here (and successfully attack, only in a smaller portion of that). Yes, he is loud and repetitive when he attacks, but that is absolutely normal. For example, many great technological debates focus on small points at a time.
If you ask Dan or just listen to him, he appears to have a horrible appraisal of this site; hence, I have to believe he is not using silence to signify support or agreement. In that case, he is certainly not partial, IMO, or he is confused, IMO, to believe that having this site be wrong some small amount of the time (ie, on some issues or details of some issues, judging by what he successfully attacks) means the site is horrific and wrong in so much as he sometimes says it is.
Now, I know people want to drag this out of him, a confession that he is partial/biased, but why give him points in the eyes of first time readers by treating him like a Salam witch on trial unjustly? Words speak for themselves. We are all biased to some degree anyway.
Let people commenting say what they want. If you rush things (Roy or anyone), accept you might be making mistakes here and there. When someone says this site is problematic, simply ask them to point out where so we can discuss it and fix it.
Doing a public hanging went out of style a while ago. I think that technique was one technique used to instill fear in the uneducated masses. Such approaches to frustration give any that might be guilty, free points, and itself tarnishes us some.
http://en.wikipedia.org/wiki/Hanged,_drawn_and_quartered
Roy, I understand you are human and get tired of managing all of this tension. It's a taxing situation.
And let me conclude by saying I don't disagree with Dan all the time by any means, but I have disagreed with his overall assessment of some things, in particular, of just how bad or good this website and the material posted here is or isn't.
Dan O'Brian
2009-03-27 11:35:20
Good luck.
xISO-ZWT
2009-03-27 12:03:01
Roy Schestowitz
2009-03-27 17:00:23
Shane Coyle
2009-03-27 22:20:54
The lack of a site terms of service came up before, and we really should address that - specifically, we need a privacy policy that assures that we will not use/disclose user personal info and email for any purpose without prior authorization, yada yada yada.
As far as this conversation - i'll ask again, if it turned out that Dan O. was actually Steve Ballmer - or if Roy were actually Twitter - what would it necessarily prove? You can either engage the poster/commenter in a battle of wits and win, or you can't.
In general, I've found Dan O. to be trying to help in terms of clarifying and pointing out errors, and not in any way disruptive or abusive. Even if he's Miguel, he's also right fairly often, so let's hear what he has to say and keep an open mind.
Roy Schestowitz
2009-03-27 22:59:23
I submitted this story some years back:
http://m.digg.com/linux_unix/Linus_Torvalds_Curses_in_DRM_Debate_Gets_Comment_Deleted
Roy Bixler
2009-03-27 23:52:33
That said, I agree that it's more important to keep on topic and not get too distracted by "personalities." I personally find "Dan O"Brian" to be a mixed bag. When he manages to stay on topic and avoid invective, I find his posts to be informative if not necessarily convincing. However, the name-calling on both sides is a real turn-off and "Dan O'Brian" engages in that fairly regularly. "Alex H." is a good example of a poster who argued the other side and managed to remain civil most of the time. It's too bad that he doesn't seem to be posting here lately.
Jose_X
2009-03-27 16:56:56
Paul, could you please tone it done or just drop the subject. The terms of usage for this site, if there are any, do not say you must reveal your identity [I'm not going to try to verify this but will assume it.] So why is this story continuing?
If Roy wanted identities revealed at all costs, not only would he have already enforced this long ago, but this site would have almost zero comments.
***** Test drive QtCreator http://labs.trolltech.com/blogs/category/qtcreator/
Parrot 1.0.0 appears to be out http://www.parrot.org/news/2009/Parrot-1.0.0
http://www.sun.com/software/opensource/java/ and eclipse http://www.eclipse.org/ and JBOSS http://www.jboss.com/products/devstudio/ and apache http://www.apache.org/
Roy Schestowitz
2009-03-27 18:48:33
Other Web sites complained about this too.