This Time Self-Hosted
dark mode light mode Search

Why I’m using Mono

In the past week I’ve written a bit about some technical problems with Mono, very far from the political, ethical, and theoretical problems that Richard Stallman talked about, and most people seems to have a problem with. I have been asked why am I using Mono at all, given I’m a Linux developer, so I’ll try to summarise the answer here.

The main issue is that I need to work: bills, hardware and all that stuff needs to be paid for, and trust me, at least here pure Free Software development does not pay enough; the part that brings in more money for the same effort is custom proprietaryware; some of it is not even tremendously unethical because it’s customizations that stops directly at my customer, rather than being distributed further down the way. This kind of software needs to work on proprietary operating systems as well, and that includes both Windows and OS X; Mono is a good choice for this, in my opinion.

Now of course you could be reading this wrong and say that I’m giving reasons for Mono not to be used for free software; on the other hand, it happens that sometimes I have to be writing free software that works on multiple operating systems, and that also is simpler to do with Mono. Case in point, I’ve started looking into writing a package that can be used to automatically back up the games’ savedata from PSP (PlayStation Portable) for me and a few friends of mine mostly (but of course would be released as free software); since they use Windows (and OS X), I’ll be writing it in Mono again.

Now, the view that Windows and OS X are important for software is somewhat debatable; I know lots of people complained about KDE wanting to port to Windows; I for sure complained that KDE went with Windows portability as a major priority (which is why CMake was selected, after all), but of course a pragmatic view shows that yeah sometimes it’s better to keep in mind that lots of users will use free software on those operating systems as well. This actually works fine, because a friend of mine who’s now using a lot of free software under Windows, including Pidgin and Firefox of course, will have a lot less problems to migrate to Linux one day (and one day he will, I’m sure) than those who are still stuck with Microsoft’s own messenger and Internet Explorer.

Also, I’m sure somebody will be saying that Qt 4 and KDE support Windows as well, so what’s the point of using Mono. Well… while GCC is improving their Windows/PE support with each version (and I know one person who at least has been working a lot on that subject), there are quite a few important features that it’s still lacking; so even if you look around, most of the free software, including KDE, that works under Windows, tend to be compiled with the Microsoft Visual C++ compiler. Which means you rely heavily on another huge piece of proprietaryware (and indeed, a pretty bad one at that).

I know it’s probably heavily a matter of taste, but I prefer working with Mono than having to deal with either the GCC problems or the Visual C++ compiler.

Comments 4
  1. If I may ask, how do you actually achieve portability (as little of that Mono IMHO offers)?For non-GUI apps it’s not an issue, but for GUIs I have the problem that Windows Forms does not work for me with Mono, whereas GTK# is only available for .Net 1.1 and none of the newer versions.Do you have everyone install Mono on Windows then?Or write the GUI anew for each OS?I’ll add that my attempts needed to use the serial port, which means .Net 2.0 was a requirement (and Java out of question unfortunately).Personally, in the end I gave up on cross-platform for this one, I just didn’t have that much time to spare.

  2. Gtk# supports .NET 2 just as well; the binary package you find is built against .NET 1.1 for compatibility…

  3. I admit the idea of building from source never occurred to me. It also seems like it might be non-trivial:http://lists.ximian.com/pip…Well, still might be an option worth a try (strange that there don’t even seem to be any 3rd-party prebuilt binaries available).Though I guess with some exceptions (e.g. Gui-less, network-related code) I’ll still consider Mono/.Net the most difficult way to get platform-independent code.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.