[clug] Mono in Linux

Paul Wayper paulway at mabula.net
Tue Jun 2 10:33:53 GMT 2009


On 02/06/09 17:48, Chris Smart wrote:
> 2009/6/2 Francis Markham<fmarkham at gmail.com>:
>> The problem with that argument is C# is not a proprietary programming
>> language.  C# is an ECMA-standard.  .NET is a proprietary
>> implementation of that standard, Mono is an open source
>> implementation.
>
> Mono might include an implementation of C# and CLI standards, but it
> is more than just that. There are also additional components in Mono
> which are not part of the standards, such as Winforms and ASP.NET,
> etc.
>
> Look at the Mono front page, it says:
> "Mono is a cross platform, open source .NET development framework."
>
> Not:
> "Mono is a cross platform, open source implementation of C# and CLI standards."

I have an objection to Mono which I don't think has been covered by this 
discussion.  It's not to do with patents.

Observe the Microsoft "Embrace - Extend - Extinguish" philosophy.  Think of 
what this would mean with the .NET platform.  Already we've seen three major 
versions, and according to Joel Spolsky 
(http://www.joelonsoftware.com/articles/APIWar.html, written back in 2004) 
Microsoft has continually changed the .NET framework API without keeping 
backward compatibility.  Every time they do this all the other software 
developers who are trying to use the .NET framework have to go back and fix 
the sudden influx of bugs in their programs.  Last time this happened this 
gave Microsoft a six-month head start on all development - because you can bet 
that the internal briefings as to how .NET works and what API calls to avoid 
and prefer are going around well before .NET X+1 hits the shelves.

Microsoft has shown that it's quite happy to bastardise any number of 
standards - including its own, such as OOXML which it has already announced it 
has no intention of following if it doesn't suit it.  It would take little 
effort on their part to focus change on the bits of Mono that are hard to get 
right and would cause bugs in subtle ways.  It doesn't even need to target 
Mono - it just keeps on adding new features and changing old ones, keeping all 
those developers trying to keep Mono compatible across the board jogging 
around until they give up out of exhaustion.  I know which group will win that 
particular test of endurance.

The original purpose of Mono was not (as I understand it) to provide a way to 
run Windows programs on Linux; it was to provide a way for programmers 
familiar with .NET with a way to write applications on Linux with minimal 
transition.  In this, it currently succeeds admirably - we can keep all those 
.NET 1, 1.1, 2.0, 3.0 and 3.5 coders with the existing Mono framework (because 
we're up to version 4.0).  But if the purpose of Mono is to try to track .NET 
into the future, then that to me is a losing game.

To me it comes down to a very simple question: do you trust Microsoft to not 
compete with you for your job?  (They're competing for your job as an 
applications programmer, by the way, if they ever plan to release a product 
that is similar to yours in any way.)  If you do, then you trust that 
Microsoft will always alter .NET in a way that is easy to learn, doesn't break 
backward compatibility, requires minimal reworking of your existing code to 
use, and gives you features you really need.  Unfortunately however, to take 
this view in my opinion is also to deny what Microsoft has done in the past, 
both with .NET and with everything else they've been involved in.

Have fun,

Paul


More information about the linux mailing list