"Secondly, support for Microsoft.NET is a secondary goal for Mono"
Guys, you're killing me.
I really want to embrace Mono, but there is this fundamental disconnect between what the Mono team think they are building and what the real world needs them to be building.
Mono team, your ONLY goal should be to provide a 100% compatible .NET implementation that runs on Linux. That's it. Simply make my C# code work there, and I'll be happy.
Unfortunately, the Mono team is trying to do something else entirely. They're adding new language features and trying to extend it into their own thing. And nobody outside the Mono team can understand even for a minute why they would want to do that.
So here we are, 4 years into this project, and it still has pieces of .NET 1.1 that are not implemented. That means we can't use it yet. And while we're waiting patiently for a usable framework, the Mono team is off pursuing shiny .NET 3.5 functionality and inventing new functionality of their own. I mean sure, it sounds like fun and all, but us developers are still out in the cold waiting for a framework that the Mono team doesn't seem inclined to actually finish.
So guys, please, I'm begging you. Quit adding new stuff. Go back and finish what you started. Get .NET working on Linux like you promised. We'll all thank you for it!
The above statement makes it clear that you do not really follow Mono closely and your opinions are based on rumors rather than real life experience.
Let me explain:
I have not seen you post ever on our Mono mailing lists requesting the specific feature that is keeping your code from running on Mono.
I am having a hard time coming up with a feature of .NET 1.1 that you need to have on Mono (the stuff we do not implement does not make any sense on Linux, like support for WMI).
Mono implements quite happily all the core functionality up to .NET 3.5 with gaps on Windows Workflow (not there), WCF (Partial) and WPF (we are not going to implement it).
People that are adopting Mono (many of them) use our Migration Analysis tool to identify the spots that require rewriting (to remove Windows dependencies, and provide the Linux equivalent for example) and get moving on with their life.
From the statistics that we have colleced with the Moma Tool 1,592 application work out of the box; 1,823 require between 1 and 3 source code changes another 1,200 require from 4 to 10 changes. Now if you are even a remotely competent programmer, yous should be able to find work around for up to 10 changes in say, an afternoon?
The rest are more complicated, the next 3,000 or so reports will likely take from a week worth of work to a full scale reimplementation effort (the ones that have up to say 300 P/Invoke calls).
As for innovation in Mono: nothing anywhere says that we should stop at working on compatibility with .NET. We created Mono to create better applications for Linux, which is why we created bindings to Gtk# as well as some other couple hundred libraries: because we want to improve our ecosystem.
That seems like a reasonable thing to want to do, and a worthy reason to split off a fork. It's certainly not worth hijacking as big or important a project as Mono to do so.
Mono needs to get a direction and follow it. At the moment, they're heading in a bunch of directions at once. If they don't want to be "A .NET Runtime That Works Anywhere", then they should say as much and stand aside so that somebody else can do it.
Uh, people are giving their time to create what they need / want. Welcome to open source, right? I don't think it's possible to "hijack" an open source project. As said above: patches are probably welcome.
In the end it just sounds like you want free support from a company like Microsoft/Novell without paying a dollar.
What 1.1 things don't work?
I thought they were fully 2.0 compatible?
It has been quite good in my experience, obviously if you are doing windows specific things like registry or security it won't work, but that is to be expected.
Ah, but security isn't windows-specific. It's essential if you want to use anybody's APIs that require SSL (and sometimes have broken certs). And it doesn't work in Mono today.
This could possibly be fixed by now, but last I tried, the C# sample code to interact with Amazon S3 didn't run under Mono.
I'm not familiar with the S3 .net api.. but linux doesn't have the notion of central certificate store like windows does. Therefore if you are relying on that existing, you are going to need to change your code.
It is certainly possible to use SSL with mono, many people do it.
I lead a dev team in the real world, using mono for all our work, and I don't need them to do any such thing. Your definition of the "ONLY" goal for them is utter claptrap and certainly not a definition of what the "real world needs".
Stop confusing your desires ("Simply make my C# code work there, and I'll be happy") with the only sane direction for them to go.
I certainly wouldn't thank them for slavishly copying .net 1.1 or any such thing. If you want that so badly, feel free to submit patches, I'm sure they'll gladly accept.
I have never programmed with .NET (been coding exclusively in linux for years), but the framework looks interesting and the WPF has caught my eye. I will probably be one of those who will be exclusively learning the mono version of the .NET story and C#/F#. Though I guess there are very few people in my boat.
i also use mono on ubuntu. if the scope is larger than what i want to do in a scripting language, like bash, then i use c#. it's a great language. i have my eye on mvc support in mono, because if all goes well, i can save a lot of money on windows 2008 licenses.
We're running C# code, and increasingly some F#, but not at all interested in taking desktop or web applications from Windows and dropping them onto Macs or Linux.
We're historically a microsoft shop but recently (in the last 18 months or so) have started running linux backend servers for many of our services running on EC2. If I wanted to be buzzword compliant I'm sure I could come up with some string of cloud nonsense to describe it.
We have something that looks kinda like Hadoop crossed with an app server that we can deploy components in.
I'd be happier with a solid final version of Mono.Simd rather than slavishly filling in any missing parts of older .net.
Sounds like we're doing similar stuff. The code I'd like to run under Mono is neither ASP.NET nor WinForms. It's plain vanilla string processing and HttpRequesting with some minor crypto and SSL thrown in to use AWS.
That's the stuff I'd expect to be there and it's not.
That's the fun part. The tool says everything is good to go. That's partially why I felt so burned by it, having assurances that everything I was doing was implemented. Running the code, it doesn't even thow. It just quietly exits.
After a few weeks running into issues like that, I just quietly exited myself. Windows EC2 boxes are only 25% more expensive than Linux ones, and they run .NET natively and correctly, so my particular problem is solved.
I am quite sure that complete compatibility with any one release of .NET would silence a lot of FUD by Microsoft and make pointy-haired bosses less reluctant to sign checks for deploying .NET/Mono applications on non-Microsoft platforms.
If it's you who are developing, it's easy to code around the holes, but if you need a closed-source application designed to run on .NET (and I don't know why people want these things, but they do) you have little to no choice but going Microsoft.
And that's a dealbreaker for Mono more often than you imagine.
It's a good article though I'd go so far as to say the piece it responds to isn't worthy of a response. Take this quote...
"Nothing that comes from Microsoft can be for our good and benefit. They are dedicated to our destruction and downfall.
Mono has infected Gnome. Ubuntu uses Gnome. I switched to Kubuntu and am happy with it. Now Moonlight is infecting Linux."
There are two parts to the Linux community. One part sees Linux as a legitimate tool they can use to bring down costs while maintaining stability. The other sees this as some kind of holy war and is really just using Linux to act like drama queens.
The link here is a good defense of Mono but the people he's trying to defend it to are never going to listen.
"There are two parts to the Linux community. One part sees Linux as a legitimate tool they can use to bring down costs while maintaining stability. The other sees this as some kind of holy war and is really just using Linux to act like drama queens."
Do you really think that the stability, low cost and quality of Open Source software is independent of the Free Software ideology? If I was being as derisive as you are above, I'd say that I hear this argument mostly from ignorant youngsters who have been lucky enough to inherit something marvellous that their elders fought hard for, but are now in danger of squandering everything through a moronic and self-centered lack of insight.
The truth is that the two things go hand in hand. Without a Richard Stallman who is idealistic and paranoid enough to worry about things like patents and personal freedom, Open Source would be in much worse shape than it is now. Without a Linus Torvalds to pragmatically build excellent software within the framework put together by the community, we would be much diminished. We need both. Open Source software is often the "best tool for the job" in a technical sense precisely because it is Free, with all that implies.
I personally think that we are right to be worried about Mono. We don't need to be alarmist, but we need to be wary. It's up to the Mono community to convince people that there is no licensing danger - the best way to do this is to lobby Novell and Microsoft to officially clarify the situation.
I've heard it, and I personally use OpenBSD much more than I use Linux. There's a whole different discussion to be had about the differences between the BSD and Linux models, and why Linux has soared and the BSDs have not. At any rate, I suspect that, despite recent fireworks on the OpenBSD mailing lists, Stallman and Theo de Raadt agree much more fundamentally about the threat posed by patents and licensing than, say, Stallman and Torvalds.
While I generally agree, I find Theo's positions much more consistent an principled than RMS's, although to Stallman's credit he gave the FSF award to Theo some years back for all the amazing work the OpenBSD people have done on opening up hardware specs and so on.
Theo is also contrary to general opinion a really cool and friendly guy, and often (but not always) when he acts like a jerk is because somebody deserves it.
Maybe, but wouldn't you hate a company that pulls every dirty trick to harm you, your reputation, your business and that is absolutely committed to extend its monopoly by destroying everything you worked so hard to help create?
And, BTW, to replace your beautiful creations with the crappiest code seen on Earth?
> "Do you really think that the stability, low cost and quality of Open Source software is independent of the Free Software ideology?"
Well, I do. Open Source is basically just Economics.
An initial release of source code happens because there's often no (more) alternative usage for it. From a product point of view, it's often unfinished. Turning it into something that could have an alternative use -- such as being sold as Closed Source Software, for example -- usually requires additional efforts; additional investments of time and money. Another reason for releasing the source code is the "death" of former Closed Source Software: Either it was killed by competition or because people's wants and needs changed. No or little future profit is to be expected.
In both cases holds: The opportunity costs of releasing the source code are low or even zero. One looses nothing by releasing the source code. If you'd loose something, you simply wouldn't release it. And every Open Source advocate is fine with that.
As for contributing to Open Source: It simply pays. If a developer is sufficiently annoyed by a missing feature or a bug to justify make a patch, it will happen. It's pure self-interest. It's economic behaviour.
The next stage is the more important one: Why send the patch upstream? That's simply, again. First, the opportunity costs of sending the patch is zero, again. The developer couldn't use the code of the patch for anything else. Second, sending the patch upstream, will save him effort. If he (or she) wouldn't send the patch, that's basically a fork so he or she would have to waste his time solving conflicts, etc. Sending the patch upstream is, in most cases, pure self-interest. It's economic behaviour.
Accepting a patch is usually also rational, for it improves the source code for the original developer.
In other words: each stage of releasing initial source code, making patches that fixes bugs and improves the functionality, and accepting these, is entirely self-interest and economic behaviour.
No need for any ideology.
Your argument that Open Source wouldn't exists without Richard Stallman, is basically useless: How could we know whether it wouldn't? It's an empirical question that cannot be tested with an experiment.
However, we can make some analogies: Solutions are often invented when problems exists. In nature, the eye was invented several times independently because it helped the creatures to survive more often.
So, it seems save to say: Without Stallman, something like Open Source would have been invented by others. In fact, Project Gutenberg -- free distribution of classic texts -- was invented in 1971, already. The first BSD "distribution" was assembled in 1977. Several others released source code without ever having heard about Stallman and Free Software, before.
You couldn't be more wrong. I write FOSS software 40+ hours a week at my job and a bit more during my free time. People are not motivated by simply economics. The majority of projects are conceived by a group of people as FOSS from the start, generally as a one that will never generate money. Those that do generate revenue are the exception not the rule.
A lot of the big projects like distros, MySQL,the kernel, Apache, and Firefox are commercially supported, but no one would really use it if it was not for the thousand little pieces of glue someone wrote as their passion or hobby with no hope for getting repaid. A lot of those people are driven by ideology, some just for the fun and challenge, and few for the money.
We agree that the open source ecosystem is incentive-driven - most actual code contributions are made due to simple economic incentives (though not nearly as simple as you make out, but that's a whole different discussion). So, approaching things from this angle, I would say that although most people are simple rational actors who contribute code because they stand to benefit directly, someone has to take a larger view, and try to make sure that impediments that gum up the free operation of this incentive system are removed. The intellectual property trap is just such an impediment, and the people who bother to take the long-term view are the ideologues.
I say again: we need both. I for one hope that the argument between ideologues and pragmatists is never decisively settled in either's favour.
There are many, many "rational" ways to develop software. Most of them don't scale, most of them impede progress with red tape or big egos. The Free Software ideology is one way of thinking about software development that encourages a particular set of behaviors. The behavior of developers in the Free Software community is a direct result of their ideology.
>Mono implements an international standard albeit one from a convicted monopolist. If this is a problem, why do people use C, the standard from convicted monopolist AT&T? Mono implements an improved, Free replacement for a proprietary offering. If this is a problem, why do people use GNU (which provided an improved, Free replacement for proprietary UNIX)?
Mono implements a standard from a convicted monopolist who has a stake in dominating the market the standard affects.
AT&T was barred by consent decree from entering the computer industry. Unix and C were, by the standards of the day, practically given away, and AT&T couldn't use the control over these they had to unfairly outcompete other companies.
I never realized AT&T was in a smear campaign against the use of competing C implementations.
Mono implements a _subset_ of a proprietary offering that is Free (as in speech and beer). GNU is pretty much a greatly enhanced superset of AT&T UNIX.
That was a funny one. In the end AT&T was suing the BSD folks for using the technology the BSD folks developed and that AT&T was using without proper acknowledgement. I can only imagine what happened at the board meeting when this was disclosed.
But I get your point. Since then, AT&T got a lot more civilized.
> GNU is pretty much a greatly enhanced superset of AT&T UNIX.
I know many people that would question your claim that GNU 'enhanced' the work of Bell Labs, more like the opposite, but then they were certainly not alone in that.
It's not their ideals it's that they express them in a way that's counterproductive and designed to draw attention to themselves and not participate in a discussion.
Let me give you another example of this type of behavior. I personally disagreed with many of the decisions the Bush Administration made in the U.S. I have had many thoughtful discussions with people who thought differently and have, in some cases, changed their minds ever so slightly. The guy down the road from me shares my ideals but he expressed it by hanging a life sized doll of George Bush by a noose outside his garage and then eventually lighting it on fire. I assure you he convinced no one who didn't already agree with him and his actions were really just a thinly veiled cry for attention.
The guy down the road might not have convinced anyone directly but he did contribute to your cause by making the need for discussing GWB ever so slightly stronger in your community enabling you to do what you did.
What I find silly is that a large majority of developers prefer creating applications in Flash rather than Silverlight. Flash has proved to be very hard to reverse engineer thus has very little open-source support. With Silverlight, Microsoft has sponsored Novell in creating Moonlight which is completely open-source and could be built into every browser at one stage.
Yet I still read that people won't touch Silverlight because it's so proprietary and made by Microsoft!
That's probably one reason but as history proves people will stick with what is popular and has a big install base unless an alternative exists that is so compelling that there is a real incentive to adopt it and help push it as the replacement. Silverlight apparently is not catching on in that way. Even companies Microsoft paid to use it are jumping off the ship. That cannot possibly be a good sign for its future.
Moonlight for the moment has stability issues. I'm using version 1.9.3, which is a preview, and version 1 which is more stable is worthless since I haven't found many clips compatible with it.
What I do like about it is that Microsoft supports it. The first time I installed Moonlight was because of a page that required Silverlight, and on clicking the "Install Silverlight" button, I got redirected to the Moonlight page.
That's pretty neat.
Silverlight has great potential, because you can reverse-engineer it more easily, has support for multiple languages and you only need a text editor to create a Silverlight clip. And in version 3 they are introducing an API for plugable codecs, which is making it possible to stream OGG/Theora and Vorbis files with a Silverlight applet.
Flash is more popular because of inertia, and because many designers use Macs and have invested heavily in Adobe tools. Microsoft Expression only runs on Windows. They would have a lot more to gain if they released a Mac port.
> Flash is more popular because of inertia, and because many designers use Macs and have invested heavily in Adobe tools.
A minor irony, Flash has had a bad reputation peformancewise on the Mac platform for a good decade now... and the migration from PPC to Intel hasn't helped matters much, as is my understanding.
From my experience, Flash has only ever worked optimally in Internet Explorer for Mac OS 9.x. Every other platform sucked hind tit. These days I bet Windows takes priority.
Silverlight is proprietary. And it's just the same type of evil, but maybe at a lower degree (it's still based on proprietary codecs and the main implementation is not free/open source).
Developers choose flash because it's much more popular and has mature tools and a significant pool of experienced professionals who can work with it. It's not only about the technical features of Silverlight compared to Flash (Silverlight doesn't really stand out), it's also about the ecosystem.
Silly? Flash has been around for ages, they've courted, supported and won over the design community, it seems to run most places you'd want it (already) and it's not Microsoft, it has great tool integration...
It'd be nice if there were maybe 2 or 3 factors that mattered but there are probably a dozen or more reasons people uses flash over silverlight and none of them have to do with openness. JavaFX and Silverlight are late to the game and they don't do anything more, they just don't raise the benchmark in any really significant ways.
Mono and Java both have been dealing with the same basic battle for their entire existence. C has been around longer, C is what the OS is written in... At least with Python or Ruby you don't have to compile so there is some sort of experiential advantage to the developer. Mono needs to be compiled, it's not terribly slow but all VMs (err, safe runtimes) have that stigma, you can develop much more rapidly with them with fewer bugs and there are whole classes of security defects that simply don't apply and then there is the tooling but that's just not sexy enough. If you only do C, then you're more "hardcore" and how the world perceives you as an OSS developer matters more than a lot of people want to admit.
The politics of Mono probably don't matter as much as the politics of Silverlight. Most of the people that worry about mono, from my experience, aren't developers. Where the design community is the primary user of flash and they've never been served by MS before and they have been exposed to stuff like IE's extended script.
A non-admin can't even install Silverlight on a Windows box! The installed base is close to zero and, at the same time, Flash is everywhere, with about 100% market share.
One doesn't need to look any further to understand why Silverlight is not the platform of choice for rich internet applications.
And, with HTML5 support on many browsers, I hope it never will.
I've seen Mono used to great effect in the Unity 3D game engine (http://unity3d.com/). Game engines are one of those interesting spaces where speed matters quite a bit, but so does ease of modification; you want your developers to be comfortable enough to implement whatever crazy ideas are designed up for game mechanics, and you need to be able to make sweeping changes to game logic quickly. But you need those implementations to be fast as well. With its multi-language support and JIT-compiled nature, Mono seems to sit at an interesting saddle-point that makes it attractive to applications like this. It's also cross-platform compilable, which in this age of multiple consoles-plus-PC-plus-mobile platforms is extremely attractive.
I couldn't tell you why they wouldn't use Java, however.
Visual Studio is not a factor here, value types, delegates (aka safe function pointers), mono SIMD and C# are the factors that mono was chosen over Java. C# is more expressive and concise than Java, C# supports unsafe (pointer) operations inside unsafe blocks which is very valuable for a game engine if such a thing is required. Mono has a more powerful eventing model through the use of delegates, where the Java equivalent of using anonymous inner classes is much more syntax and runtime heavy. C# supports semantic closures and has iterators, very useful features for scripting support.
Plus Mono is more open than Java, was developed by open source community, therefore was already more easy to modify than Java, which has in house developed source.
I believe Linux would benefit greatly from more and better Windows ports of popular OSS applications that are common on Linux desktops. If you get people using the software the time will come when switching the OS they run on is an afterthought. Plus you gain the possible contributions of millions of Windows users who have no interest in Linux but may very well want to run good OSS software. I'm not sure this is a viable strategy with GTK or QT as the Windows implementations are subpar at best. Mono is probably the way to go if you're an OSS developer interested in creating an app for everyone to use -- not just the people who happen to accept your personal choice of operating system. Isn't that (basically) the bitch that most Linux fans have about Windows-only software? Seems silly to advocate the same solution replacing win32 with GTK or QT. While they may technically exist for Windows they are not adequate -- probably comparable to running win32 apps on Linux via WINE.
What I hate about this piece is the anti-user angle. What a fucking prick. The only reason you're writing apps or working on frameworks/languages to write apps is for the users. Maybe you should listen to them once in a while.
I think you miss the point. They already have market. Most Corporate Networks run on Windows Servers. What Mono does is allow those Windows shops with their .Net experienced developers to start experimenting with and hopefully integrating Linux. Without having to change the language and framework they've standardized on.
In that way it gives Linux an inroad it didn't have before Mono.
Yes and no. I think that, given all the money and hard work poured into it, Mono is, relative to other languages and things out there, not as popular as it "ought" to be. Here we have a first-rate JIT compiled language that's completely free (no Java ambiguity), with a team of smart hackers behind it, and yet not that many people use it. I don't, nor do I know anyone who does, besides one of the core developers who lives here in Padova.
Well as the head of an IT department that does use Windows servers I can tell you you're right but the reason has little to do with Mono itself.
Here's the thing you have to understand about corporate IT: Support is king. Unlike startups which are filled with technical people company's have only a few IT people and usually only one whose knowledge is at a high enough level to even think of editing the source of an open source project. So you need to have a support option in place.
Now Microsoft has support contracts but even if you don't purchase one you can get support for $245 per incident on any Windows Server issue. Our agency of 200 computers uses this option once, maybe twice per year. Novell on the other hand offers support for Mono but it's sold in packs of 25 incidents and costs $13,000. So no matter how much Linux and Mono can save your company the outrageous support costs make it virtually unjustifiable.
It may be delusional to not deal with the software is viewed. But the thought that it's strictly a cost is itself a delusion. I have seen firsthand corporations being choked by bad software. (A certain cell phone manufacturer and a certain car rental company come to mind.) I've also experienced good customer service enabled by flexible software, where I'm amazed, "You can really do that?"
Amazon wouldn't be nearly as good as it is if it wasn't for the degree of software quality that they have.
I understand your point and I agree that software could make or break a company. That can be true and you could still make the argument that IT is strictly a cost. That IT departments can enable other departments to reduce their own costs does not change the fact that IT itself is a cost.
In your customer service example IT has clearly had a positive impact, but you'd be hard pressed to convince anyone that the IT department is generating revenue for the company. If you walked into the CFO's office trying to make that case you'd be laughed out of the room. Good customer service does not manifest itself through good software.
A better approach may be to walk into the CFO's office and show how your IT department is helping the company realize it's goal of providing good customer service at an acceptable cost. It's a very subtle distinction. This is what I was getting at when I said not thinking of IT as a cost can be a roadblock to advancement.
Being considered a cost and providing a competitive advantage are not mutually exclusive. An IT department that meets its goals at a lower cost than an alternative could be a competitive advantage.
An example of an IT department that's a revenue-generator is Amazon's, in the sense that they sell services outside of the company. But that's quite rare. At most, some IT departments chargeback internally, but that's just made-up money.
Then again, I think it was Bezos himself who described Amazon as a technology company that happened to sell books too.
I'm going to disagree. Based on experience, this is still the root of the problem: "Secondly, support for Microsoft.NET is a secondary goal for Mono"
Maybe Mono is great for smaller agile shops who can somehow work around that (most likely since they don't have a lot of legacy code - or they can start from scratch), but at the big corp I work for it just doesn't work. Many of our teams couldnt get our major projects running without major issues on mono without significant work (which wasn't undertaken).
Mono is unpopular, but I don't think it's because of the negative marketing.
People doing software development on top of Linux tend to choose other languages, like Python, Perl, PHP, Ruby, C++ and Java. That's because these languages have matching cultures and communities.
Personally when I'm investing time learning a tool, if the learning is not trivial, I first take a good look at its community. If you're getting in trouble with Mono, who you're going to talk to?
The core mono mailing list is nice, but other than that you're out of luck. You could join a .NET community for support, but their topics, issues and goals aren't a match for a developer used to work on Unix-related projects. And the signal-noise ratio is rather poor.
"In that way it gives Linux an inroad it didn't have before Mono."
No, it doesn't. For internal development you have a wide variety of options. Java is quite good and very popular among those who consider the option of not running their wares under Windows. The only way Mono can appeal to Windows-only houses is by making it possible to run unmodified (and proprietary) products that run under Windows on other platforms.
Were I insane enough to allow my business to run on .NET and Windows, I would only consider migrating it to other platform if I had the assurance of being able to run it unmodified.
And, BTW, as it is, Mono is a patent minefield. Do you really trust Microsoft to act as a responsible corporate citizen when doing the right thing would cut their profits?
I wouldn't even if acting responsible would be profitable. Playing dirty seems too embedded in their corporate DNA.
"For internal development you have a wide variety of options. Java is quite good and very popular among those who consider the option of not running their wares under Windows. The only way Mono can appeal to Windows-only houses is by making it possible to run unmodified (and proprietary) products that run under Windows on other platforms."
I'm working at a Windows-only house with internally built .NET apps. Mono is definitely part of our long term plans to run these apps on other platforms.
Congratulations. You are the case where Mono makes sense - you can make sure your apps run the same on Mono and on .NET.
Unfortunately, some shops need to use off-the-shelf software that may even run on Mono but is not officially supported and, if something did go wrong, they would on their own.
1) C# is a standardized, open spec language. Mono is an implementation of that open spec. The development of that specification is driven by MS's .Net platform.
2) Here's a crucial bit of patent/IP law: by releasing the specification of the language to the "public", MS is barred from suing over it in a court of law. So again, there's no need for it say that it won't sue, since it's already prevented from doing so.
Isn't Mono more than the C# implementation, covering much of the whole .NET API, which is not, IIRC, covered by ECMA-334.
And even if by publishing the spec they would have given up their right to sue implementors (which they did not) they would be free to sue anyone that used any technique on which they own valid patents on any jurisdiction insane enough to allow such patents.
And while I doubt their willingness to test such patents in court, I also acknowledge the potential for long and painful lawsuits is more than enough an incentive use other technologies that are every bit as nice to the developer as .NET while negating completely any litigation risk.
I strongly suspect that it would be much easier to port existing .NET code to Mono than it would be to port it to Java. I also suspect than any .NET team wanting to experiment with Linux or Unix would probably prefer to learn Mono's quirks than an entirely new language.
Python must be developed by the makes-Linux-frozen-in-time team then. And don't even get me started on KDE! If you're not running Linux as God intended, from the command line and programming only in C, you are part of the problem.
I will quote Al Viro (IMHO the best Linux kernel hacker by far):
Yeah... "Infinitely extendable API" and all such. Roughly translated as "we
can't live without API bloat". Frankly, judging by the GNOME codebase people
who designed the thing [GNOME] are culturally incompatible with UNIX.
Guys, you're killing me.
I really want to embrace Mono, but there is this fundamental disconnect between what the Mono team think they are building and what the real world needs them to be building.
Mono team, your ONLY goal should be to provide a 100% compatible .NET implementation that runs on Linux. That's it. Simply make my C# code work there, and I'll be happy.
Unfortunately, the Mono team is trying to do something else entirely. They're adding new language features and trying to extend it into their own thing. And nobody outside the Mono team can understand even for a minute why they would want to do that.
So here we are, 4 years into this project, and it still has pieces of .NET 1.1 that are not implemented. That means we can't use it yet. And while we're waiting patiently for a usable framework, the Mono team is off pursuing shiny .NET 3.5 functionality and inventing new functionality of their own. I mean sure, it sounds like fun and all, but us developers are still out in the cold waiting for a framework that the Mono team doesn't seem inclined to actually finish.
So guys, please, I'm begging you. Quit adding new stuff. Go back and finish what you started. Get .NET working on Linux like you promised. We'll all thank you for it!