Linux is many things. It's the core component of a great number of distributions, the shoulders on which a large mobile platform stands on, and better than other, more popular operating systems (definitely not an opinion).

One of its shortcomings, though, stems from its lower popularity on the desktop: the availability of programs. Fortunately, there are things which can help this, Mono being one of them.

Software Frameworks: Building Blocks

Software frameworks aren't the most exciting of things, but they're useful in their own way, working behind the scenes. They allow people to easily develop applications for others, without starting completely from scratch. Mono is one of them, as is the .NET Framework.

These frameworks can range from being used for specific desktop environments to something available to multiple operating systems. For example, the KDE Plasma desktop has multiple pieces of software which help make writing integrated, native applications easier. This includes their own IDE (integrated development environment) called KDevelop.

linux mono kdevelop

This can have many benefits for end users as well. Developers are able to create applications faster, more easily, and as such can push changes and improvements that much quicker. When you stand on the shoulders of giants, it makes reaching that extra height a little less painful.

Some frameworks are cross platform in nature -- programs written with them can work between different operating systems. This is useful for both developers and end users. On the one hand, such programs can reach more people, and on the other, higher reliability from a wider user base.

What Is Mono?

Mono is an example of a cross-platform framework available on Windows, macOS, Linux, and more. It was first designed as an open source implementation of the .NET Framework on Linux. From there, it turned into something more, supporting multiple different operating systems.

mono platforms linux

Mono (like .NET) is tied heavily around the C# programming language, known for its high level of portability. For example, the Unity game engine uses C# as a cross-platform way of creating video games. This is in part due to the language's design. C# can be turned into CIL (Common Intermediate Language), which can either be compiled to native code (faster, less portable), or run through a virtual machine (slower, more portable). Mono provides the means to compile, and run C# programs, similar to the .NET Framework.

These days, it's developed by the owners of the software it tried to emulate: Microsoft. With the open sourcing of the .NET framework, Mono is more similar to it than ever before, able to integrate its code into its own design. The project also includes a special IDE (integrated development environment) called MonoDevelop, a bit like the Linux equivalent of Visual Studio.

linux mono monodevelop

Mono and Cross-Platform Applications

With all this in mind, it's quite clear that Mono's cross platform nature is quite useful for people moving to Linux from Windows. It acts as another bridging point between the two operating systems, to cut away one of the larger problems of switching: exclusive software.

There are a number of programs which are written in Mono. These applications have a high chance of being cross platform, available between multiple operating systems. Along with this, Mono actually supports many .NET binaries out of the box (that is, C# EXE files written in Visual Studio). As such, it's possible that .NET programs not yet on Linux may well be in the future.

You might even be using one of these applications without knowing it!

KeePass

KeePass is an excellent offline password manager. This means that unlike, say, LastPass, your information isn't tied to a server for convenience's sake. But this might be a worthy price to pay, for a higher level of control in your hands.

It's also written in Mono, letting it run across multiple different platforms. While its mainly targeted towards Windows, it also means both macOS and Linux are supported by it. Though it might not look very native, it works just fine. Plus, having your passwords accessible is benefit enough.

linux mono keepass

Pinta

The best way to describe Pinta would be a cross-platform version of Paint.NET (which in turn is a better version of Microsoft Paint). It's a fairly simple application, with a fair amount of power to edit and create images. Unlike KeePass, it looks a little better between different operating systems.

pinta linux mono

Sadly, it also demonstrates a few limitations of Mono. Paint.NET, the application which it was inspired by, was, after all, written using the .NET Framework, and yet still remains Windows only. While most things can work between the two, if a program relies on Windows specific components of the framework, you'll need to look for alternatives.

Wine + Mono = Better Compatibility

Mono can also aid Windows switchers by way of extending Wine, a compatibility layer to let users run Windows applications. Wine reverse engineers a lot of Windows functionality, and translates that behavior into their Linux equivalents. As such, it can run many programs not designed for Linux, as if they were.

The actual Mono installation file contains a number of software libraries, components that other programs can build off of. They're designed to implement as much of the .NET Framework as they can (albeit cross-platform). Because of this, a lot of things written for Windows using said framework will work under Mono as well.

linux mono components

Wine can take advantage of all the work that Mono has done through the years, using it to help run .NET applications, or even programs with said components inside them. Some games, for example, rely on the framework to some degree.

Mono in an Open Source .NET World

As mentioned previously, much of the .NET framework is now open source, with more to come. Already, it's possible to (somewhat) take advantage of it on platforms other than Windows. One then, might wonder how Mono might still be useful for people.

The answer to that is quite simple: a lot of the usable components of .NET are invisible to end users. It's still quite difficult to build cross platform graphical applications using only Microsoft's now open source framework. Mono on the other hand, is well established, having multiple ways to write native looking programs, with little hassle. And it will only continue to grow,

Of course, when the open source components of .NET become more established, it will have gained many of the benefits that Mono currently provides. And that can only be a good thing for Linux, as well as for users who might want to switch to it. More portable applications are always welcome, after all.

How do you deal with the application gap on Linux?

Image Credit: OndrejProsicky/Depositphotos