Linked by Thom Holwerda on Tue 11th Mar 2008 23:28 UTC, submitted by irbis
Mono Project "Does GNOME co-founder Miguel de Icaza's backflip over the Novell-Microsoft deal a few days ago mean that he has finally been convinced that he is on a one-way path to nowhere? Has he realised that his own project, Mono, is actually putting GNOME on a development track that can leave it open to patent claims one day? And has he realised that creating Moonlight, a clone of Microsoft's Silverlight, (with which the company hopes to trump Adobe's Flash) is not going to advance the cause of free software one iota?"
Thread beginning with comment 304600
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[3]: Destructive
by monodeldiablo on Wed 12th Mar 2008 03:35 UTC in reply to "RE[2]: Destructive"
monodeldiablo
Member since:
2005-07-06

"Microsoft probably won't sue" is hardly a compelling reason to start any project, especially when a number of other outstanding solutions already exist in the FOSS space and could use the extra manpower. If the Mono team was really out to help folks and promote good technology, they'd bring the strengths of the CLR to the open source community.

Parrot needs the kind of design, coding, and testing that Novell and the Mono team could bring to the table.

Vala could use serious manpower in writing interfaces and optimizing the metacompiler.

The GTK team would love help restructuring their libraries and squashing performance bugs.

Helping in any one of these areas would have far-reaching, cross-platform benefits for massive segments of OSS. Instead, the Mono folks chose to write a VM from scratch and play perpetual catch-up to Microsoft ever-changing language extensions (just ask any other vendor how easy and fun it is to ride the Microsoft protocol bronco without getting bucked off). And for what? Well, let's run down a list of Mono's "strengths":

Mono allows unencumbered, cross-platform interoperability... so long as "interoperability" is defined in such a way as to exclude GUIs, database access, and web development.

Well OK, so it's not so great at real, usable interoperability, but hey, if you target Mono, your code will at least run unmodified on Windows... right? As it turns out, it's taken significant porting effort to get Banshee and Beagle to run on Windows (and even then, they're separate forks from the Linux codebase).

The syntax, though, is the fallback argument. C# is beautiful, concise, fun to program in. It's also available for Vala (without the accompanying memory bloat and speed limitations of Mono) and even Parrot.

Yes, there's a lot of people out there whinging about the Novell-Microsoft deal. Sure, there are loads of conspiracy theories and plenty of high-pitched, uninformed FUD-slinging. But once you actually sit down and examine the facts, it's even more clear that Mono is the software equivalent of the Concorde: a technologically sexy novelty, but a total failure for its stated goals.

Reply Parent Score: 12

RE[4]: Destructive
by jpobst on Wed 12th Mar 2008 04:19 in reply to "RE[3]: Destructive"
jpobst Member since:
2006-09-26

Helping in any one of these areas would have far-reaching, cross-platform benefits for massive segments of OSS. Instead, the Mono folks chose to write a VM from scratch...


To be fair, Mono predates Parrot by about a year, and predates Vala by about five years. So saying they should have helped on these projects before starting their own "from scratch" is kinda silly.

Reply Parent Score: 6

RE[5]: Destructive
by monodeldiablo on Wed 12th Mar 2008 04:33 in reply to "RE[4]: Destructive"
monodeldiablo Member since:
2005-07-06

I'm afraid you have it backwards. The Mono project was announced almost exactly a year after development on Parrot (Perl 6) began. It then took three years for Mono to be released in usable form.

Vala's just a great idea that better addresses the Mono project's original goals than writing a virtual machine from scratch.

Wikipedia is your friend.

Reply Parent Score: 3

RE[4]: Destructive
by google_ninja on Wed 12th Mar 2008 04:44 in reply to "RE[3]: Destructive"
google_ninja Member since:
2006-02-05

Helping in any one of these areas would have far-reaching, cross-platform benefits for massive segments of OSS. Instead, the Mono folks chose to write a VM from scratch and play perpetual catch-up to Microsoft ever-changing language extensions (just ask any other vendor how easy and fun it is to ride the Microsoft protocol bronco without getting bucked off). And for what? Well, let's run down a list of Mono's "strengths"


Novell wanted java without the cruft that they could control. None of the environments you mentioned has the "everything and the kitchen sink" mentality that .net and java have. The only reason they play "catch up", is for binary compatiblity with windows apps. That is a huge thing, but from a purely technical point of view they could stop and take it in another direction any time they wanted.

Mono allows unencumbered, cross-platform interoperability... so long as "interoperability" is defined in such a way as to exclude GUIs, database access, and web development.


Mono encourages users to their own stack. It isn't like they just stop at winforms and ado. There is Gtk#, Cocoa#, and Qt# to choose from.

Well OK, so it's not so great at real, usable interoperability, but hey, if you target Mono, your code will at least run unmodified on Windows... right? As it turns out, it's taken significant porting effort to get Banshee and Beagle to run on Windows (and even then, they're separate forks from the Linux codebase).


I don't know how much experience you have with cross platform apps, I was a java guy for almost 5 years and let me tell you, "write once, run anywhere" only applies for trivial apps. And java is arguably as cross platform as it gets.

Knowing nothing about the specific issues in this case, my guess is that GStreamer on windows wasn't really in state for banshee to be usable, and there had to be alot of api mapping to make things work. Gtk on windows is about the opposit of impressive.

Regardless, you do have a point, if you are expecting zero effort porting on a non trivial app, you are in for a big suprise.


The syntax, though, is the fallback argument. C# is beautiful, concise, fun to program in. It's also available for Vala (without the accompanying memory bloat and speed limitations of Mono) and even Parrot.


Does vala or parrot have frameworks that even come close to the .net API? That is one of the big positives, you are using the same framework to write webapps as you use to write desktop apps, as you use to write mobile apps and everything in between.

Yes, there's a lot of people out there whinging about the Novell-Microsoft deal. Sure, there are loads of conspiracy theories and plenty of high-pitched, uninformed FUD-slinging. But once you actually sit down and examine the facts, it's even more clear that Mono is the software equivalent of the Concorde: a technologically sexy novelty, but a total failure for its stated goals.


Its stated goals is to provide a modern, high quality application framework for linux. I would say they succeded; apart from a few areas, their performance is on par with java, and they have managed to stay about a year and a half behind microsoft so far when it comes to functionality.

Personally, I don't think it is the savior of the free software world the way that Novell is trying to plug it, but it has alot of very compelling aspects to it, especially when compared to other options in the same space. As a .net guy on windows, it is the obvious choice for me whenever I want to bang out a quick app or a small tool on linux (making linux development very accessable to windows developers is not a small thing either)

Reply Parent Score: 4

RE[5]: Destructive
by monodeldiablo on Wed 12th Mar 2008 06:57 in reply to "RE[4]: Destructive"
monodeldiablo Member since:
2005-07-06

Novell wanted java without the cruft that they could control. None of the environments you mentioned has the "everything and the kitchen sink" mentality that .net and java have.


Of course. However, since they were already reimplementing this library from scratch, they could have contributed it to existing projects for the same (or more likely far less) amount of work. (Edit: I forgot to mention that, not only do Python, Perl, and Ruby have the kitchen sink, they often have several competing versions of it.)

The only reason they play "catch up", is for binary compatiblity with windows apps. That is a huge thing, but from a purely technical point of view they could stop and take it in another direction any time they wanted.


Ah yes, but if they do that, they lose perhaps their largest selling point: Cross-platform interoperability. And then they're Just Another VM. And not a particularly fast or slim one, at that.

Mono encourages users to their own stack. It isn't like they just stop at winforms and ado. There is Gtk#, Cocoa#, and Qt# to choose from.


See my comment above. If you use a stack native to a given platform in your code, you can't be cross-platform. It's just that simple. Advocating the use of a native stack renders the project's number one objective moot (I feel like I'm repeating myself).

I don't know how much experience you have with cross platform apps, I was a java guy for almost 5 years and let me tell you, "write once, run anywhere" only applies for trivial apps. And java is arguably as cross platform as it gets.


I'm also a former Java & .NET guy. I'm right there with you on the Great Lie. However, as I've said before, this reality doesn't stop Mono folks from pushing this point as the biggest reason to use their runtime. Just check out their site.

Does vala or parrot have frameworks that even come close to the .net API? That is one of the big positives, you are using the same framework to write webapps as you use to write desktop apps, as you use to write mobile apps and everything in between.


Not as of yet (although Vala is just GObject wrapped in lovely syntax... you really should try it). That's my biggest gripe with Mono, to be honest. Mono didn't inherit the functionalities you're talking about. The hard-working geniuses behind the project had to build them. However, instead of helping out established projects in need of assistance or implementing this stuff at a common layer, they chose to build a walled garden. I'm fine with them justifying it as a business decision (which is what it is), but Novell and the Mono crew explicitly state that their goal is to help out the FOSS community and bring lots of people to the Other Side. This hypocrisy is hard for me to swallow. What they mean is that they want an ecosystem that they control... another beast entirely. That's not FOSS.

Its stated goals is to provide a modern, high quality application framework for linux.


It's stated and heavily emphasized goal is to provide a .NET runtime for platforms not supported by Microsoft. To pretend otherwise is to ignore the very basis for the project.

I would say they succeded; apart from a few areas, their performance is on par with java, and they have managed to stay about a year and a half behind microsoft so far when it comes to functionality.


I wouldn't disagree that they've done an admirable job building a replica of the CLR in Linux. As I've said before, it's an impressive feat. However, as you mention, they're at least a year and a half behind Microsoft. The bad news is that they will never get any closer. In fact, these are the good times, since Microsoft is still playing friendly. They will always be playing catch-up, though, and the effort will be doubly hard when Microsoft realizes it's not making any money helping out Mono.

Personally, I don't think it is the savior of the free software world the way that Novell is trying to plug it, but it has alot of very compelling aspects to it, especially when compared to other options in the same space.


I, unlike many of the religious, am not personally opposed to Mono. It's a remarkable engineering feat and a demonstration of the power of motivated developers. I merely resent the hypocrisy and diversion of resources. It's not here in the Linux world to make my development life easier. It's here to lure business to Linux (specifically, Novell's brand) and away from Windows. The benefit to me and the community at large is minimal or non-existent. The benefit to Novell is huge (free testing and development). It's the programming framework equivalent of astroturfing.

In the open source world, Mono is a solution in need of a problem. Our ecosystem has been designed around giving developers good frameworks since Day 1. In fact, it's often the biggest criticism of open source: It's geared more towards programmers than users. Great development tools, libraries, and languages abound.

As a .net guy on windows, it is the obvious choice for me whenever I want to bang out a quick app or a small tool on linux (making linux development very accessable to windows developers is not a small thing either)


If I want to "bang out a quick app or small tool" in Linux, I can write something in Python, Perl, or Ruby. As an added bonus, it will most likely run just as well on Windows (or *BSD, or Mac OS, or Solaris, or...) without any further porting on my part. Hell, I've found Linux development, even on the system side, to be much easier than Windows development because everything is so much more transparent.

I think the argument you're reaching for here isn't "accessibility", but "familiarity". And if you're looking for both, well then why not use a tool that spits out C(GLib/GTK) code, but has C# syntax (Vala)?

I appreciate the constructive discussion, but I remain unconvinced that Mono is anything more than another "me too" product, however quickly it was brought to market. I'm not more productive, my code doesn't run any faster, and my projects aren't any more portable to other platforms when I use Mono. So what is the point?

Edited 2008-03-12 07:08 UTC

Reply Parent Score: 2

RE[4]: Destructive
by miguel on Wed 12th Mar 2008 16:29 in reply to "RE[3]: Destructive"
miguel Member since:
2005-07-27

If the Mono team was really out to help folks and promote good technology, they'd bring the strengths of the CLR to the open source community.


None of the solutions that you list are of particular interest to us, as they fail a number of tests: (a) are they multi-language platforms; (b) do they have an extensive ISV platform; (c) readily available documentation and tutorials and an ecosystem around them.

All fascinating projects, and we wish them good luck, but that is not what we want to achieve.

If you feel so passionate about them, you should join those efforts.
Helping in any one of these areas would have far-reaching, cross-platform benefits for massive segments of OSS. Instead, the Mono folks chose to write a VM from scratch and play perpetual catch-up to Microsoft ever-changing language extensions (just ask any other vendor how easy and fun it is to ride the Microsoft protocol bronco without getting bucked off). And for what? Well, let's run down a list of Mono's "strengths":


In some areas we play catch-up, but every time we do, more programmers can port their software to Linux. You probably will not hear about them on OSNews.com, they are too busy getting real work done, but we are very proud of every developer that we have moved over from Windows.

Not all software will port, and not all of it is a 5 minute job, but it is possible, and in particular for vertical applications this is fantastic.


Mono allows unencumbered, cross-platform interoperability... so long as "interoperability" is defined in such a way as to exclude GUIs, database access, and web development.


Incorrect; We do support GUI portability using Windows.Forms, granted, people need to do some work on this area if they use P/Invoke, but its a small price to pay to get your app on Linux or MacOS.

Database access, moves transparently, you obviously have never tried it out, and the same goes for web applications (honestly, the easiest of the applications to port).

Porting to a new *database* (ie, MS SQL to Postgress) typically involves more work that porting the code with Mono. If you do not mind keeping the SQL server around (and most people are not willing to migrate this piece) porting of web apps is trivial.

The rest of your comment is clearly based on opinions based on a vague knowledge of Mono, factoids, not facts.


The syntax, though, is the fallback argument. C# is beautiful, concise, fun to program in. It's also available for Vala (without the accompanying memory bloat and speed limitations of Mono) and even Parrot.


More nonsense. Mono is not about C#, its about the CLI. But even if the "syntax" was available C# has plenty of features not available in either Parrot or Vala. Facts, not speculation.

miguel

Reply Parent Score: 2

RE[5]: Destructive
by monodeldiablo on Wed 12th Mar 2008 20:01 in reply to "RE[4]: Destructive"
monodeldiablo Member since:
2005-07-06

First off, let me say that it's an honor to be arguing with you, Miguel. ;) I have tremendous respect for your hack-foo ninja skills. However, I cannot agree with many of your "facts".

None of the solutions that you list are of particular interest to us, as they fail a number of tests: (a) are they multi-language platforms;


Parrot is, by its very nature, a language-agnostic, register-based virtual machine. Dozens of languages currently target it. Vala is a meta-compiler to GObject. Its compilation infrastructure is currently being abstracted to allow for arbitrary syntax.

(b) do they have an extensive ISV platform;


As I've said before, this isn't an FOSS concern. It's a business concern. And if that's a primary goal of Mono, I'm fine with that. It's a damn good reason to start the project if the goal is to lure businesses to Linux with minimal shock, but it doesn't really have much value for those of us already on the FOSS side.

(c) readily available documentation and tutorials and an ecosystem around them.


The Parrot project has so damn much documentation, the Amazon would be leveled to put it to paper. And just as you've built an ecosystem around Mono (something you should be proud of), the resources you've invested could have done the same for any other project you chose. Mono's Linux ecosystem didn't exist before you moved in.

Broadly, all these arguments play into the hands of Java, though. It has the added benefit of being an open, collaborative project (and better speed and memory utilization). Please don't portray your decision to shadow .NET as a foregone conclusion.

Incorrect; We do support GUI portability using Windows.Forms, granted, people need to do some work on this area if they use P/Invoke, but its a small price to pay to get your app on Linux or MacOS.


And this is where everybody else (including your own project: http://www.mono-project.com/FAQ:_Licensing) raises the spectre of patents. I'm not in the mood to get on this merry-go-round again, but for those who already write software in the Linux realm (and aren't customers of yours), the threat of losing access to these interfaces is as appealing an engineering solution as building a castle on sand.

More nonsense. Mono is not about C#, its about the CLI. But even if the "syntax" was available C# has plenty of features not available in either Parrot or Vala.


Such as? Every GTK# project I've used/seen uses the same wrapped libraries as a Vala one, yet a Vala-generated application runs native, without any interpretation overhead.

I don't mean to sound like a salesman. Honestly, the investment of resources could have gone to *anything* to make the Linux development ecosystem even more developer-friendly than it already is, instead of reinventing the wheel and tying its development to an unstable partner. Your three-pronged test is just as easily satisfied by Java, Python, Ruby, or Perl as it is by Parrot. I just chose it as an example of a open source project in its infancy at the time you chose to go off and build Mono from scratch.

Respectfully,

Mono Del Diablo (ironic, huh? the name predates your project)

Reply Parent Score: 4