I've spent the majority of my career focused entirely on open source Web development, having only occasionally dabbled in .NET development. Of course, the great thing about the open source community is that if you do happen to need a particular application, chances are somebody else has already created it. But what if it doesn't exist, or if an existing application doesn't work precisely as you believe it should?
I recently encountered this very problem when searching for streaming radio applications (plenty such applications exist, I just don't like any of them), and concluded that perhaps the only way to scratch this particular itch was to build my own application. This decision immediately prompted two questions: how in the heck are Linux desktop applications built in the first place, and could I harness my minimal .NET experience in the process?
As it turns out, there are quite a few open source solutions, but one in particular happens to be .NET-specific. That solution is Mono, an open source, cross platform C# implementation. In this article I'll document how I've begun using Mono.
Several Ubuntu applications are built atop Mono, including Banshee and F-Spot. Because both are installed by default on Ubuntu, so is Mono. However if you're running another platform, or had previously uninstalled Mono, you can install it either via your Linux distribution's package manager, or by downloading it from the Mono website. Versions are available for Windows, OS X, SLES, and a slew of Linux distributions. Once installed you can make sure everything is running properly by opening a terminal and running the Mono compiler:
Mono JIT compiler version 2.4.4 (Debian 2.4.4~svn151842-1ubuntu4)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
GC: Included Boehm (with typed GC)
Choosing a Mono IDE
After installing Mono (or making sure it is installed), the next step is to find a capable IDE. The Mono website highlights two IDEs in particular: MonoDevelop, an open source, cross-platform IDE, and Visual Studio, Microsoft's flagship .NET development suite (by way of the Mono Tools Add-in). I chose the former, installing it via Ubuntu's package manager, and so will concentrate specifically on MonoDevelop for the remainder of this article.
Other IDEs also offer Mono support, including notably Eclipse. See this summary for a complete list of available options.