Fog Creek Software
Discussion Board




Mono ditching wine.

I just read this discussion:

http://www.winehq.com/?issue=230#Mono%20Ditching%20Wine

My thought is that Mono as a cross platform development tool is hopeless, especially on the client.  Mono made some good early progress by getting C# and IL clones working, but the language run time is only a small portion of the overall problem, and Microsoft knows this.  By making the Win32 API easily accessible via p/Invoke they are hoping that .NET developers will tie themselves to Windows.  In fact I believe they fully expect them to.  That is why Windows.Forms is such a thin wrapper.  To do anything significant you have to call the Win32 API directly. 

.NET is Java with Microsoft lock in.  This is exactly why Sun fought Microsoft's Java extensions tooth and nail.  In another thread Philo asks if developers would ever shift back to Java.  This is one big reason not to use .NET.  In fact it is what I resent most about .NET.  Yes it looks good up front, but by going that route, I know I've fallen prey to Microsoft's plan to lock me to their platform.

I believe Miguel doesn't really understand the magnitude of the problem he is trying to solve.  The Wine guys certainly do, and I have a small taste of it.  Years ago I worked on a Win32 compatibility layer.  After nearly 2 years of trying to get TextOut to work correctly I realized the approach was all but hopeless. 

To think that Windows.Forms will ever work seemlessly on Linux using the proposed approach is ridiculously optimistic.  I suspect I will never be able to drop a .NET assembly written using Microsoft's tools on a Linux box and expect it to work.  And Microsoft will have won again. 

christopher (baus.net)
Thursday, July 15, 2004

"That is why Windows.Forms is such a thin wrapper.  To do anything significant you have to call the Win32 API directly."

Nonsense. You can write perfectly fine Windows Forms applications without P/Invoke. WinForms on its own looks and works exactly like a standard Win32 application -- that is, at least as well as wxWidgets, and better than any Java GUI.

The example given in the article are 3rd party controls which are designed to add non-standard looks and functionality. There's no reason why these 3rd party libraries couldn't be implemented using another technology in Mono.

Chris Nahr
Thursday, July 15, 2004

...and that doesn't even address the question why WinForms on Linux is relevant in the first place. The market share of Linux on the desktop is what, 2-3%? And aren't Linux guys the ones who hate GUIs anyway?

I think the Mono guy is right, the only relevance of this project, or at least by far the biggest, is being able to run server-side .NET code on Linux. WinForms is about as relevant there as Managed DirectX.

Chris Nahr
Thursday, July 15, 2004

Besides, if you want cross-platform, gtk# is becoming a really nice alternative. The APi is far better than winforms IMO.

Andrew Murray
Thursday, July 15, 2004

In my opinion gtk# isn't the solution.  You need to be able to port applications developed with the Microsoft toolset to Linux.

christopher (baus.net)
Thursday, July 15, 2004


Whenever one of our development guys (a total idiot) goes on a tirade about getting everything over to .Net, I point out that much of what we need and the systems that we interact with don't support .Net unless we start building web service interfaces all over the place.  That will work in the long term, but it does nothing for us today.

Then I mention:

"Yes, it's great if we all know .Net, but unless any of us are going to be here until we retire, we'll be looking for new jobs at some point.  Do you want to be pigeon-holed into a .Net environment, or would you rather have some Java experience which works on nearly everything... including .Net"

It's a simple decision for me.

KC
Thursday, July 15, 2004

> Yes it looks good up front, but by going that route, I
> know I've fallen prey to Microsoft's plan to lock me to
> their platform.

No they haven't...the code you have written may be locked in, but *you* are not.  And in the case you actually have a *non-political reason* to remove the code's dependency on the .NET Fx, you'll do so.  You'll port it to Java, or C++, or whatever, if you think you can generate a big enough revenue stream by doing so.  But if the revenue isn't there anyway, then who cares whether or not it runs on Linux under Mono/Wine/whatever?

Joe
Thursday, July 15, 2004

In regards to Mono, my test is something I call "the Office.NET test". That is, if MS sticks with .NET, then presumabily they will at some point in the future re-write/port/whatever the Office suite to .NET. The test is: will Office.NET run, off-the-shelf, without crashing or without any signficant missing functionality, on a non-MS .NET framework?

My guess would be "no". Microsoft needs the Office monopoly to support the Windows monopoly (and visa versa), so they don't want Office running on any platform that has a Mono port.

Now, Mono apologists will say that this isn't a fair test. But as someone who just wants to get the job done, I don't have time to learn a whole list of what does and doesn't work in your .NET implementation. Either .NET is cross-platform, or it isn't.

Bill Tomlinson
Thursday, July 15, 2004

> But if the revenue isn't there anyway, then who cares whether or not it runs on Linux under Mono/Wine/whatever?

I care.  If we decide there is a market reason to run on something other than Windows, if we've choosen .NET we've already lost.  The cost of porting an app is very expensive, if not impossible, if it isn't planned from the start, or if you choose a enviornment that only runs one platform.

In the trivial case it maybe possible to port an app to Java or C++ to run on another platform, but the bigger the app, the harder this gets. 

christopher (baus.net)
Thursday, July 15, 2004

Actually, the debate over whether Mono is a perfect clone of .NET is silly.  The important questions is simply: does Mono give you a useful platform for development?  If so, then write for Mono, and consider .NET to be your "cross" platform!

If enough developers write for Mono as their *primary* platform, then .NET is stuck trying to stay "backward compatible" with Mono.

Phillip J. Eby
Thursday, July 15, 2004

.NET is not a cross platform solution.  If it's *that* important to you to be able to run on multiple platforms without porting, *just in case* you someday want to target something else, then don't use .NET.  No one says you have to.

MS is never going to create a completely portable cross platform solution.  I argue that for many, many, many projects, it is of little importance, since the majority of shops are probably not going to make large scale sweeping platform changes within a fairly reasonable period of time (5 years, perhaps?)

Personally, I'd rather MS focus on Windows and give me a solution that runs very well on one platform, than attempt to create something that half-works on many platforms (like Swing in the Java world).

Joe
Thursday, July 15, 2004

"If enough developers write for Mono as their *primary* platform, then .NET is stuck trying to stay "backward compatible" with Mono. "


Why would Microsoft CARE the .01% to 10% of thier .net programmers are using mono?

Sure, they may SAY they want to be cross platform, but there's not financial motivation to be cross platform. They make WAY more $$ off Windows and Office than they do off development tools. 

There are (I think I read on Jos) 3 million Windows developers. There's got to be 200x as many windows USERS. And Windows XP ($200) + Office ($500+) + a few little MS programs adds up to almost as much as Visual Studio (certainly as much as thier $500 Empower offer).

So, if you're making 200x as much off WINDOWS and associated programs, what do you think drives the decision?

The TOOLS will follow the strategic whims of the WINDOWS monopoly, plain and simple.

Microsoft has LONG understood the value of developers: to create software for thier platform to make the platform more valuable.

I do NOT blame them, but I am wary.

Mr. Analogy
Friday, July 16, 2004

I know .NET is not a cross platform environment.  I would only like it to be.

christopher (baus.net)
Friday, July 16, 2004

Different tools for different jobs :)

Joe
Friday, July 16, 2004

"""Why would Microsoft CARE the .01% to 10% of thier .net programmers are using mono?"""

I didn't say how many was "enough", did I?  ;)

Also, you miss my point.  If Mono is a more popular development target for *Windows* than .NET is, then Mono becomes "real" and .NET is the "clone".

From my point of view, I'd never choose .NET as a primary platform, even for Windows.  I'd simply develop using Mono instead, because I'd then know I wouldn't be locked in to Windows by accidentally using a Windows-only feature.

The analogy is that if I were doing Java development on Windows a few years ago, I would have used a non-MS Java development environment to ensure I didn't accidentally use a Windows-specific feature.

Of course, I mainly develop server-side apps rather than client-side, so I don't *need* Windows features.  But, if a company wants to hedge their bets on Windows as a client platform, it seems like Mono would be the obvious choice, even for their Windows-based development.  (Because it would make it obvious to them whenever they were doing something non-portable, with relatively little overhead cost for doing so.)

Phillip J. Eby
Friday, July 16, 2004

A working SWF Windows Forms implementation is important if Mono intends to be anything other than a hobby toolkit. Developers do not hav the time or money to develop two versions of their GUI (one in Win Forms and one in GTK#). I have argued that the next version of the application I work on should be developed for use on both platforms but without Windows.Forms I have been told to forget it. So for now Qt have the only viable cross-platform tool kit.

Peter Custance
Saturday, August 07, 2004

*  Recent Topics

*  Fog Creek Home