Industry


Ads by TechWords

See your link here


Stop piling on Mono already

I have no love for Microsoft, most of its products, and nothing but contempt for its now annual, anti-Linux patent threats. On the other hand, I don't see Mono, the open-source implementation of Microsoft's .NET programming environment and its related languages, as being an open-source "infection;" or particularly "dangerous," much less that "MONO people have poisoned your minds and infiltrated Ubuntu to get power to enforce their will."

Get a grip people!

Yes, Mono is based on Microsoft's .NET. Like it or not, several valuable open-source programs like Tomboy, a well-regarded note-taking program; Moonlight/Moonshine, which enables you to listen and view Windows Media-bound music and videos on Linux; and Banshee, my personal pick for the best Linux music player, are Mono applications. 

Would it be better if these applications were written in some more free software ideologically pure language? I doubt it. They were written in Mono, not Python or C++. It's a pointless question. If you don't like them, write better ones in another language. It's the open-source way after all.

Others might argue that several of these programs, Moonlight/Moonshine in particular, make it easier to Linux users to use Microsoft-based, hence anti-open-source, software. True, but let's get real. Samba, one of the purest of the open-source products in the long Microsoft/open-source war, has always been able making it possible for Linux users to work with Windows file servers. Microsoft's dominance in many areas of computing is a fact. It only makes sense to me that open-source developers should work on projects that help with Windows/Linux interoperability.

Another reason why people grumble about Mono is that it's backed by Novell, a company that some people in the Linux community hate because of its Microsoft partnership. But, Novell isn't in Microsoft's back-pocket. Faced with a dominant player in the Linux server market, Red Hat, Novell has elected to try to play the interoperability card with Windows to gain market share. It hasn't been a rousing success for Novell, but, I'd argue it's kept them in the operating system game with their SLE (SUSE Linux Enterprise) line.

The biggest real concern about Mono is that Microsoft could somehow use it to launch a patent attack against Linux. I don't see it. Microsoft is always threatening Linux with patent suits. Except for the TomTom case, Microsoft hasn't done much except to rattle its patent saber. And, thanks to Andrew Tridgell, open-source developers have come up with a fix that avoids Microsoft's FAT (File Allocation Table) trap.

Of course, Microsoft could threaten lawsuits with patents relating to Mono as well. After Peter Galli, a Microsoft support manager, publicly announced on the Microsoft Open Source blog that Microsoft wouldn't go after developers using the "C# programming language ... and Common Language Infrastructure (CLI)," in short the heart of Mono, I can't see any court letting Microsoft's lawyers even get their seats warmed up before tossing any patent lawsuit against Mono programmers out the door.

In other words, chill about Mono already people. Trying to turn Mono into some kind of free software political litmus test is a waste of time and it's just getting people ticked off for no good reason.

There are real reasons to be concerned about Mono. For example, as I pointed out in 2007, any Mono developer who peeks at the .NET Framework reference source code under the Microsoft Reference License is just asking to be smacked around on copyright grounds sometime in the future.

I've also long thought that relying on Mono for cross-platform development was a mistake. All Microsoft has to do, and they've done this kind of thing many times in the past, is change some component of .NET and not make it public. Suddenly, Mono applications won't run right on Windows and users will blame Mono developers, not Microsoft, for their software problems.

So, to sum up, we should not be turning Mono application support into some kind of religious test for what should, or shouldn't, be in Linux. The notion that Mono developers are somehow wicked for using the platform really needs to be dumped once and for all.

That said, there are sound reasons to not get too deep into .NET code when developing in Mono and it would be downright foolish to build a business around Mono-based programs that run on both Windows and Linux. But, other than that, Mono's a fine development environment. After all, if it wasn't, would people be programming in it? I dont think so.

What People Are Saying

Tomboy has a c++ counterpart

Tomboy has a c++ counterpart now, gNote. Not only is it faster, but it's free of patents and actively supported. It does everything Tomboy does, to my knowledge.

As for mono, it's not even up to par with .NET. Sure, working with the lowest common denominator is a start, but should we really be thinking about interoperability when M$ is in debt and fighting on all sides against google, GNU/Linux, Apple, the EU, etc.
M$ is in debt, perhaps there won't be a Microsoft for very long. Is the interoperability worth it? Or rather, should we be getting close to an increasingly agitated and aggressive monopoly, even if the coast seems clear?

Of course you have nothing against Mono, Steven!

It is mostly a Novell product after all and anyone following your blog can tell from miles away that Novell can't do anything wrong on your eyes.

For MSdotnet developers: Vala and related efforts

The reality is that mono as a dev platform offers a home away from home for devs used to MSdotnet.

Maybe what we need is a fork or clone of mono (or of csharp) but which deviates from the ECMA standard and from Microsoft's extended API while focusing on creating API that augment Linux platforms (mono already has some of these API). Such a split or pseudo clone might have patent issues early on, but as we diverged over time from Microsoft's carefully crafted sandbox, these issues would start to disappear.

Vala http://live.gnome.org/Vala might already be such an effort -- providing a hand-holding migration away from Monopolysoft towards Linux.

>> Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C.

>> the Vala compiler, is a self-hosting compiler that translates Vala source code into C source and header files. It uses the GObject type system to create classes and interfaces declared in the Vala source code.

>> The syntax of Vala is similar to C#, modified to better fit the GObject type system.

What is that old

What is that old saying...
"Fool me once, shame on you...Fool me twice, shame on me"

Tom Tom was the first, who is going to be the second.

Excellent point.

Excellent point.

Mono Is Not Worth It

You touched on what's really wrong with Mono in this paragraph:

"I've also long thought that relying on Mono for cross-platform development was a mistake. All Microsoft has to do, and they've done this kind of thing many times in the past, is change some component of .NET and not make it public. Suddenly, Mono applications won't run right on Windows and users will blame Mono developers, not Microsoft, for their software problems."

To me, Mono has a split personality. On the one hand Mono is an interoperability tool. On the other hand Mono is a development platform. When it comes to dealing with Microsoft technology, these two personalities are at war with each other.

Mono as an interoperability tool is fine. It's in a similar position as Samba. As an interoperability tool, Mono is always going to be a step behind .Net. As an interoperability tool, this is OK. It's even expected. Interoperability tools are really just stopgap solutions for dealing with a currently Microsoft dominated computer world. You do the best you can with what's available.

Mono as a development platform is severely flawed. The same trait that can be expected of an interoperability tool, always being a step behind .Net, is completely unacceptable in a development platform. If Mono were free to go its own direction, then it could be OK as a development platform. At this point, however, Mono is shackled to .Net and has to chase it around. The last thing I want in a development platform is for it to be chasing a Microsoft platform around, always a step behind.

To me, this makes Mono altogether pointless in any context other than as an interoperability tool. There is no upside to using Mono as a development platform. If you want cross platform compatibility, then there are other development platforms that do that more reliably. If you just want to develop for Linux, then you have other choices that are similar to Mono or that have less overhead than it does. If you want the most advanced technology, then that will never be Mono as long as it has to chase .Net around.

What does Mono offer that makes it worth chasing Microsoft around? I can't think of anything.

I agree with you, and I

I agree with you, and I disagree with sjvn on the point that mono doesn't present patent issues.

As a platform, as you said, there is no need whatsoever to follow Microsoft or anyone in particular. Merit should be the guiding force as much as possible.

As an interop tool, you should *not* be encouraging new Linux components to be written with that tool. There are real patent concerns and traps.

http://boycottnovell.com/2009/07/01/mono-poll-on-rms/comment-page-1/#comment-69143

>> As boycottnovell has quoted from Comes, Microsoft’s strategy going as far back as a decade, when dotnet was very fresh or not even out, was to get people to adopt their standards, where patents would be used afterwards to protect areas beyond the standardized components.

>> It also doesn’t address that the mono devs can’t deviate from the required elements of the spec (while keeping the patent pledges) if they thought a different path from the spec (and in conflict with it) would result in a superior approach.

>> The new announcement also doesn’t address the patent trolls who buy Microsoft’s dotnet patents. We know two major players from Microsoft’s recent past are major patent trolls.

I don't care what people do individually, but I would hope, today and until patent laws get changed in a serious fashion, that the majority of users and developers who are not getting paid to code specifically in mono become aware of these issues and vote against distros and apps that are friendly towards mono.

sjvn (and many others) is very correct about one thing: we have the ability to outdo work being done with mono. And if these mono devs are getting paid to grow mono, well, at least it is costing mono supporters (like Novell and Canonical) real dollars. There is a place for mono, but I hope people (especially those that might give their free time towards it) recognize the ways in which the Dotnet Creator and Leader gains from this and that a healthy portion of the power and money gained will be wielded against Linux and FOSS.

Devs that might be tempted to fall back to mono/dotnet/csharp might want to first consider the entirely free and highly praised QtCreator (Nokia/trolltech) which produces code with less "managed" overhead (so it runs faster) and fewer patent concerns. Oh, and besides doing your bed for you, the C++ apps are more likely to gnaws at Monopolysoft's stranglehold rather than help reinforce it.

I Have you Say You're Backward on this

While I see where you are coming from the actual technical hurdles go in the other direction. If you use Mono as an interoperability tool. Namely you want to write a program in .NET. You want that program to work on Linux as well as Windows so you do a little extra research, and make sure you stick to the parts of the language that are implemented in Mono, boom cross platform app with less work than using two completely different programming toosets. Then Microsoft releases a new version of .NET. They change something, maybe on purpose, maybe not. Suddenly your product still works beautifully on Linux, but not so well on Windows. Bah, debugging and time wasted, and if the change was on purpose you might not even be able to fix it.

As opposed to using it as a development platform. The big push for Mono early on was that you could put an application together in a fraction of the time it takes to write in C+. I have never done coding with C anything, so I can't say if this is true, but the fact that so many first rate programs have come out on this platform, especially Banshee which has a lot of competition from the Amarok/Songbird fronts it seem likely that the speed of development claims were not just hot air. Microsoft can change whatever they want, and if the app wasn't actually written to run in Windows, which many of these programs weren't, then as long as Novell is careful about backwards compatibility when applying their changes they can engineer around most incidental problems like that. If Microsoft changes anything big enough that Mono couldn't implement it without seriously breaking programs written in prior versions then it's likely they'd be doing the same thing to the normal .NET developers, so they have a fair bit of motivation to not take that road.

All said, until there is another programming platform that is as easy to write for as Mono without the Microsoft baggage then I say people shut up about it and get on with their lives. Microsoft doesn't want a patent cold war with the open source community. The fact that they did everything they could to claim the Tom Tom case was not about Linux, just about how Tom Tom was using it proves this point. Their company line didn't exactly work for them, and now we have groups working to hunt down every bit of potential patent violation and write around it, and hunt down prior art for everything Microsoft has ever submitted a Patent for. I'm sure the suits in Redmond are just thrilled about that. This path is not where Microsoft want to go today.

Just a minor correction.

The phrase "legally binding", was a misprint. It should read "legally blinding".

My CAPTCHA for this comment was "shown grenade". I would say it's prophetic.

"All Microsoft has to do,

"All Microsoft has to do, and they've done this kind of thing many times in the past, is change some component of .NET and not make it public. Suddenly, Mono applications won't run right on Windows"

No, that wouldn't break 'mono' applications, it would break all .NET applications. That includes applications developed on Mono and also applications developed on the MS framework. It's impossible to 'break' mono like you're implying.