Wine is used as an excuse to write win32 applications instead of cross-platform applications (Qt, GTK, Wx, whatever). It has hurt Linux much more than Mono ever will.
For this reason Wine isn't better, that's for sure. However, imagine many applications wouldn't be cross-platform applications even if Wine wouldn't exist, so if this is an only solution to run some Windows programs, games which wouldn't be ported it's good to have it.
Mono is a white room implementation of .Net, just like Wine is a white room implementation of the win32 API.
Patent problems affect both equally.
So it doesn't matter if you're running Mono applications or applications under Wine? If the answer is yes (and it probably is) Mono is an enemy of Linux. Conclusion is simple: mono applications should be avoided. Imagine, some people want to make major Linux DE dependent on Mono, so it's like running MS applications under Wine instead of native, patent free, GPL Linux applications.
How is Mono worse than Wine? Why should I hate Mono and not hate Wine for the same reasons?
Are people who have a profound hate for Mono hypocritical for not sharing the same hate for Wine and other projects that implement Microsoft technologies and APIs?
You have absolutely no clue at all.
WINE's and Mono's scope is completely different. Everybody knows that WINE is a legacy migration tool. Nobody on earth would even think about developing a Linux-exclusive application using WINE.
Mono OTOH is not a legacy migration tool. I evaluated Mono. No somewhat capable .NET Windows application I tested ran on Linux using Mono. Not a single one.
The GNOME camp writes new applications using Mono every day and by doing so they ease the migration from FOSS platforms away to Windows.
Mono will always seriously lag behind .NET. By promoting "outdated crap" (=Mono), people will be drawn to the "real deal" (=.NET).
Mono is also not a tool to bolster platform-independent development like Qt or pure GTK are.
Look at http://www.mono-project.com/Supported_Platforms
No FreeBSD support on PowerPC. No NetBSD support on MIPS. Etc.
That's no match for C++ Qt apps compiled with GCC.
Mono fails as migration tool, because the the only viable path is Linux -> Windows.
Mono fails as cross-platform dev tool, because its platform support is laughable compared to Qt + GCC.
I don't hate Mono. I just don't like it.
I don't like WINE either. Using Windows apps under Linux using WINE is clunky.
And to complete the list: I don't like Samba as well.
I'm not entirely sure how to start this post, but i would like to preface it with these 2 opinions:
I dislike WINE
I hate the idea of Mono
In support of these 2 opinions, i shall offer the following:
I dislike WINE
I dislike WINE, not because of what it is, but because of what it enables: It enables major software vendors to opt out of meeting customer demand to produce $APPLICATION on our chosen platform and an excuse to slip out of the support clauses of the "contract" between you and the vendor when you purchase^H^H^H^H^H^H^H^H license $PRODUCT.
Excuses from software vendors range from "Not enough userbase on Linux" to "Too many distros to support" to "We'd have to open our sacred code!". After these arguments get soundly defeated, they reach for the Ace in the Hole: "It runs somewhat acceptably under WINE. Oh, and, by the way, we don't offer support if you choose to run it that way. But hey, thanks for your money anyway".
WINE is an Enabler Technology for Covering One's Ears and Singing Loudly to Drown Out the Chorus of Your Request. If major software vendors at least offered to support their product under WINE, i possibly might reconsider my opinion of WINE, but as of this point, i see it as nothing more than an additional hurdle Linux needs to overcome to gain acceptance by major software vendors as a viable platform for their product.
I hate the idea of Mono
To put it quite simply: Mono is redundant. Redundantly redundant. What i mean by this is thus: on FOSS platforms there are One Million and One Development Languages and IDEs. Do we REALLY need Yet Another IDE for that One Millionth and Second? Yes i know Mono is touted as a cross-platform application development solution, but to be quite honest, the majority of those already available can already do cross-platform compiling. And to be honest, the majority of of FOSS projects start with portability in mind(evident by the amount of FOSS applications available on Windows). Can you name me one product from Microsoft that can make the same assertion? In Microsoft's mind, portability means it's portable across a good portion of their OS product lines. That's it.
So now we have Yet Another Awesome IDE which we can use to create Yet Another Awesome Notepad Clone, where upon launch of Yet Another Awesome Notepad Clone, we jump up and yell "This! This will be the Year of the Linux Desktop!", only it never is because, while we apparently have an infinite amount of text editors, we have fuck all when it comes to apps like Peachtree/Quick Books, ZyLab/MicroFiche, DVDShrink/DVDClone(DMCA arguments aside), and various other applications and utilities small/medium-sized businesses and home users will want to use. If you want Mono to gain some acceptance in the FOSS world, maybe try meeting the demand of customers who want applications such as those mentioned. AND, make them compelling to the user.
All that being said, there's still the problem of playing Catch Up with Microsoft for both projects. Sure, maybe MS made the specs for .Net publicly available. Possibly they may even make the specs available for PE Executables. Hell, they may even release a product that just might even adhere to their own spec. But the time will come when they add $FEATURE and nowhere in the spec will they even mention it, making $PRODUCT incompatible with $EVERY_OTHER_PRODUCT, including a previous version of $PRODUCT. And then go about with their chest puffed out proclaiming how inferior other products are to $PRODUCT. And, once again, the FOSS world is left trying to catch up to Microsoft.
To sum up my arguments: WINE enables excuses and apathy towards customers. Mono enables nothing but redundancy, both in IDEs and in applications. Those are the differences.
Wine is used to _run_ Windows applications on Linux, not to _write_ Linux applications depending on Microsoft tech and patents.
It's the same end result. In ether case, it comes down to running applications that were written for Microsoft APIs and Technologies.
If you don't like Mono apps because they target a Microsoft technology shouldn't you dislike Windows apps for same reason? And Wine which only exists for those applications?
What about using Mono for compatibility with applications originally developed for Windows only? Wouldn't that put you in the same camp as Wine?
In truth, I like Wine and mostly don't care about Mono. For me, Wine is useful and fun. Mono really hasn't done much in the sense that there are no killer apps that run on both Linux and Windows. There's real room for criticism of .NET applications developed with Mono that don't run on more than one platform.
The thing I take exception to and the whole reason I started this thread is that people can't seem to get their stories down. If you like Wine, you can't really hate on Mono out of fear for patent litigation. That doesn't stop you from pointing out that Mono is a slow resource hog that lacks any real cross platform applications that people actually want to use (Moonlight is close but even Windows users wont miss Silverlight much if they don't have it).