Home > Computer Stuff > Why Mono is Good, even though it’s Evil…

Why Mono is Good, even though it’s Evil…

Chris Smart has posted a very insightful blog titled, “Mono: An Infectious Disease“, that succinctly summarizes the case against Mono in Open Source. (Non-techies: not that Mono – this Mono.)

Given that Mono is now part of Debian’s default installation, I think the issue has moved from “ripe” for discussion, to “rotten and stinks to high heaven.”

The basic conclusion the anti-Mono crowd reaches (and if I am wrong, please let me know) is this: you shouldn’t use Mono, because Microsoft could come back later (after it has gained wide acceptance) and claim patent violations, gaining control (or at least significant influence) over open source software that uses it. They are especially vehemently opposed to using Mono for any core packages (or packages that gain widespread use), because that places Linux at considerable risk from Microsoft.

The pro-Mono crowd (for which I think this rant by Jo Shields is a fair representation, though if you have a better one please post) contend that Microsoft’s patents aren’t really a threat, they are perhaps unenforcible, and in any case, a patent-suit from Microsoft is against Microsoft’s best interests. I think the pro-Mono crowd is missing the point…

At the very least, Microsoft could use the threat of its patents and the “murkiness” of the issue to spread FearUncertaintyDoubt. At worst, Microsoft could sue major distributions, forcing them to sign patent-license agreements, and destroy (by sending a chill through) the open source movement at its core (even if Microsoft later withdrew its claims). Mono is evil, and to paraphrase Douglas Adams, Microsoft has shown it is not above such behavior “in the same way the sea is not above the clouds”.*

Killer Proprietary Apps

I think Mono is “good” because it solves the critical problem Linux faces to gain wider and wider adoption – Killer Proprietary Apps.

That said, I use Mono (sometimes). I like Mono, I think it is good technology, and I think Mono is essential because it helps solve the critical problem that Linux faces to gain wider and wider adoption – Killer Proprietary Apps (KPA’s). Killer Proprietary Apps are pieces of software that are closed source applications, that won’t run natively on Linux, and users won’t live without.

The largest problem most users face switching to Linux is no longer “usability”. Despite Linux’s reputation, I honestly believe (from observation) that Ubuntu/Gnome is easier to use than Windows and even Mac, different, but easier – the usability problem has been solved, or at least “solved to no longer be the problem”. The insurmountable barrier to adoption that most users cannot and will not overcome is killer proprietary apps that don’t run natively and easily on Linux. Microsoft Office, Apple’s iTunes (with DRM), Adobe Photoshop, Inuit Quicken, and World of Warcraft keep home users on Windows and Macs more than any other factor, even the fact that Windows came with their system and that they would have to install Linux themselves. If they must dual-boot (or run a virtual OS, or futz around with Wine), they’ll just stick to Windows thank you very much.

In that context, anything that makes it easier for companies to port proprietary applications to Linux, even to keep those apps proprietary and sell them, is a “good thing”. While Microsoft will never publish a Linux version of Office (unless coerced by the EU), Adobe, Inuit, and Blizzard would, if and only if they could make a profit on it. Since profit equals revenue minus costs, anything you can do to lower their costs is a win-win for Linux and Open Source, even if it means running proprietary, closed source applications on Linux. If the goal is wider adoption, Mono is good…fantastic…essential.

Business Users

Home users are just foreplay though, the real sex is in the workplace, with companies and programmers. If companies start using Desktop Linux (i.e., start forcing their employees to use it), it is my belief that Linux, being a superior product, will be “taken home” by those employees.

However, medium and large companies face four major remaining obstacles switching to Linux on the desktop:

  1. K.P.A. business software, especially industry-specific software.
  2. KillerInternalApps written for Windows.
  3. Human Capital invested in .NET that is not otherwise transferable to Linux.
  4. Lack of commodity IT people for Linux1.

Of those four, Mono can directly and drastically impact three. The fourth is simply a function of market-share (as Linux becomes more common, desktop-level IT people will begin appearing, trained on Ubuntu or Suse, and ready to help users turn off the CapsLock key when their password doesn’t work), and insomuch as Mono helps increase Linux market share, it helps there too.

If you think about all of that internal code floating around companies, much of it ancient with little to no documentation, written in .NET, it is clear that those companies face an enormous expense trying to migrate to Linux. An IT manager that prefers Linux, looking at the choice, is going to say, “well, when we retire the old system and move to a new application, then we can talk about switching platforms”.

But, the company acquires human capital to maintain those legacy systems, and those programmers are intimately familiar with .NET, so even if a company rewrites its entire application from scratch (instead of “evolving it” as tends to happen), the company is going to be sitting on programmers that know .NET, and are less familiar with Python or Java.

If a company is faced with large decreases in productivity while its programmers learn an entirely new platform, it will add the decrease in productivity to the “cost of migrating” side of the balance sheet, and decide that it is cheaper to stay with Windows.

Mono changes that, providing a way to both migrate existing .NET systems to Linux, and leverage existing human capital. Linux moves from “too expensive” to “the kind of cost reduction that will get me promoted”.

Programmers

Speaking of human capital, what about all of those hours Windows developers have spent learning .NET, and all of their .NET productivity? Will they listen if you tell them “sorry, all of your time, energy, and training are now sunk costs”? Of coarse not…those programmers will resit you even if you show them a superior technology/software methodology/way of thinking about software development, because, given their human capital investments, that technology/method/ideology is not superior to them.

But, with Mono, there is no longer this “leap” from Windows to Linux, or from “proprietary” to “open source”, now there are smaller steps. It lets .NET programmers become involved with open source (even tainted), and exposes them to new technologies and ways of thinking about software. Without Mono, these programmers will keep doing what many of them do now when you mention open source, stick their fingers in their ears and shout, “NO NO NO NO I CAN’T HEAR YOU!”.

Once you get them on Linux, they will learn other, “pure” languages simply because Linux is so inviting and conducive to learning – as they want to change little things in the operating system (and once they get hooked on APT and YUM), they will become Linux programmers, with human capital now invested in Open Technologies.

Conclusions

Commercial, proprietary software is not going anywhere, and neither are custom, internal-only applications. If these current applications can be ported to Linux using Mono, then we have drastically lowered the cost of Linux Migration. This is a “good” thing.

If Microsoft wants to extract “economic rents” from these users for using “their intellectual property”, I’m not happy, but I won’t get my panties in a twist over it… in my opinion, if you aren’t opening your code (or ideas) for others, you deserve to pay for others’ code (or ideas). If Microsoft tries to make these royalties prohibitive, the EU will drag them back to court before the first check clears. Yes Microsoft’s patent threats raise the cost of migration, but not nearly as much as Mono lowers it. Companies at the margin will stick with Microsoft, but many more will see cost-savings and switch.

As the anti-mono people are right to point out, you shouldn’t use Mono for new Open Source projects, especially core projects – the potential threat from Microsoft is just too large. But, remember that Microsoft’s power is market power first, and its political power is derived from that. Anything that reduces that market power should be seen as a “good thing”. Mono in the core of Linux distributions has the potential to endanger Linux, but used properly, Mono makes Linux viable for many more people, giving them more choice, and more choice is “good”.


1. Commodity IT people are those rank-and-file AS from community college that “majored” in MIS, and form the “bottom bulk” of “Microsoft Certified Whatever”…the ones you send downstairs when the “administrative assistant” to Ms Davis in marketing has a problem the printer…who have no interest in computers aside from World of Warcraft and would rather be running a bar. Companies rely on these people, liking the fact that they are cheap and easily replaceable. They are coming soon to an operating system near you…yeah…maybe replacing Microsoft is not such a great idea after all.

Share
Categories: Computer Stuff Tags:
  1. June 20th, 2009 at 15:15 | #1

    It is amazing the excuses people will come up with. Proprietary Applications. These will stop Linux uptake. Mono gives a way for companies to port Proprietary Applications to Linux.

    Bull$#%&.

    Most proprietary applications are and were written in Visual Basic, and have never been ported to DOT.NOT. As a result Mono is not a migration channel.

    And of course, the companies that depend on these “Proprietary Applications” and who aren’t willing to port them to web based applications are the least forward looking, and most inefficient companies. They are the companies who are most likely to be forced into bankruptcy in the current recession.

    Think of it as Evolution in Action.

    So what use is Mono? The same use as any other programming language, assuming that it allows programmers to produce good programs. Based on the existing programs that use Mono, I’d say that it’s a total fail. At least at present. Another five to ten years of development on Mono may change my opinion.

    Of course in my opinion Mono needs to become it’s own master, and stop imitating Microsoft. Why imitate a failed programming system, designed by a failed company (and if you don’t think they are a failed company, go read their financial filings on the SEC website – Microsoft is in deep trouble, and I don’t think it will survive for more than 5 years unless drastic changes are made).

  2. June 20th, 2009 at 20:52 | #2

    I agree with the article. The same arguments apply almost exactly to Wine.
    Both Wine and Mono may be important tools for weaning people off of Windows,
    but should not be used to implement any core part of any Linux distro.

  3. Rob
    August 6th, 2009 at 09:50 | #3

    Well, like the old saying goes, beware of geeks bearing gifts, meaning if Microsoft is giving you something, it ain’t just because they’re nice guys.

    I would hope we’ve been around the block enough to realize that they’re up to something that they think ultimately give them an advantage over the open-source world.

  4. October 2nd, 2009 at 14:07 | #4

    I think the anti-Mono crowd are paranoid. Mono is a good route for many different Linux applications.

    Banshee for example is the music management app I use, while Brasero is awesome for burning CDs. Higher-level applications should use higher-level programming languages to avoid bugs and make the overall desktop experience more pleasant.

    When Sun disarmed the “Java trap”, many people celebrated. MS have disarmed the .NET trap and everyone is moaning. Novell capitalised on an opportunity that was both profitable on the corporate side and beneficial the community.

    Microsoft announced that they will not sue people for patent infringement for making C#-related stuff in a community promise that they cannot take back. That shows they are committed to interop and are really looking for good PR with this. Microsoft benefits because FLOSS developers will make C# applications that rock, increasing the pool of good quality software for Windows and Linux benefits because existing .NET applications are now compatible. Microsoft and the free software community both win.

    From the development perspective I can write applications that run on both Windows and Linux flawlessly in a transparent way. As Windows is used by many non-technical users, they need not lift an admin’s finger to use any applications since .NET is integrated into the newer Windows versions….

    From the end user perspective because of the features of C#, .NET/Mono there are fewer bugs which cause applications to randomly segfault/pagefault and applications remain stable between Windows and Linux releases.

    Everyone wins!

  1. June 20th, 2009 at 10:20 | #1