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

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.

Of all the things I run in Wine… An Open Source Text Editor?

Here’s one in the “say what?” category…

I am proud to say that I have been Windows-free (booting directly on hardware for use as desktop for something other than using “one app”) for a year now , and off Windows as my primary system for two… first to Mac and then to Linux (I still use Mac on the laptop). I’ve come around to the position that largest barrier to Linux on the desktop is not usability, but Killer Apps that are not available for Linux, and lately, I have been thinking about the Windows applications that force me to pull up my VM or run Wine.

Of course there is World of Warcraft, Microsoft Office (just checking to make sure the export worked), iTunes (remember I have a Mac laptop), and Internet Explorer to check my sites. But, the application I run in Wine the most is an Open Source text editor, Notepad++. I’m not the only one; there are even instructions for running Notepad++ in Linux on the project’s FAQ’s.

Linux if full of great text editors, but none really “fill the shoes” of Notepad++. It is in that niche of text editors that go beyond “basic”, but don’t have all the bloat and complexity of a full integrated development environment. On Linux, there is Kate, Gedit, Geany, and a whole bunch of others in that same category, but none of them quite match up.

Granted, much of this is the fact that I am “just used to” Notepad++ – I have been using it since… 2004 I think…, and I have loved it since then. But more than familiarity, there are some things it does that no one text editor for Linux does, and that is why I Wine it.

  • Advanced Find & Replace that includes regular expressions, line endings, and can search entire directories for strings in files.
  • Macros Macros Macros. It lets you record Macros for repetitive tasks.
  • Good “Large-File” handling – some editors choke when you give it a 25meg xml file.
  • Spell checker (it’s a plugin).
  • Plugin support in general.
  • Easy to set up custom syntax highlighting.
  • Support for Windows line endings.
  • Support for Windows Batch Files (yes, some of us have to write .bat files for Windows clients).
  • Color code printing – the syntax highlighting prints.
  • TextFX – think of all those annoying Search&Replaces you are always doing, like inserting back slashes in front of quote marks – that’s what TextFX does, on steroids. All the things that you do in Tidy, plus a little more, right on the menu bar.
  • Block comment/uncomment in several languages.
  • Tabs
  • Auto-complete

Geany comes closest, and it does several things (like version control system interaction – I really love that) that Notepad++ doesn’t do. It’s not that one is better than the other, in fact, I think they are at about the same level, but they’re different. I find myself using Geany more and more, and Notepad++ in Wine less and less, as I get used to Geany, but for those few things it won’t do…

I don’t think a port to Linux is necessary – the stuff that Geany won’t do, Notepad++ will do in Wine. Notepad++’s strongest feature is it’s fast run speed in Windows, and that is something that won’t translate as well to a new OS. The rest of the items could be added as plug-ins to Geany.

I’m not advocating anything, and I really don’t have a point; I’m just saying the application I launch in Wine the most often is an Open Source Text Editor, and I thought it was a little odd.