Mono
By the Mono project (originally Ximian/Novell)
NET application development to Linux and other non-Windows platforms. NET became officially cross-platform, Mono remains widely used today as the runtime underlying Unity game engine scripting and Xamarin-derived mobile app development.
Definition
Mono is an open-source implementation of Microsoft's .NET framework, including a C# compiler, a common language runtime, and class libraries, originally built to bring .NET application development to Linux and other non-Windows platforms. Historically significant as the technology that enabled cross-platform .NET development before Microsoft's own .NET became officially cross-platform, Mono remains widely used today as the runtime underlying Unity game engine scripting and Xamarin-derived mobile app development.
Overview
Mono was created at a time when Microsoft's .NET framework ran only on Windows, and developers on Linux and other Unix-like systems who wanted to write applications in C# against the .NET class libraries had no first-party option available to them. The Mono project, started by Ximian and later carried forward by Novell and then independently, implemented the ECMA and ISO standards that formally specify C# and the Common Language Infrastructure, producing a runtime and compiler that could run .NET-style applications on Linux, macOS, and other platforms years before Microsoft made its own .NET runtime officially cross-platform. Technically, Mono provides its own virtual machine that executes Common Intermediate Language bytecode, the same intermediate representation that Microsoft's .NET compilers produce, along with a substantially compatible reimplementation of the .NET class libraries and its own C# compiler. This standards-based approach meant that, in principle, code compiled for Mono could often run on Microsoft's .NET and vice versa, since both targeted the same publicly specified intermediate language and a largely overlapping set of standard libraries. Mono's position shifted significantly once Microsoft released .NET Core, and later unified .NET, as an officially supported, open-source, cross-platform runtime; much of Mono's original reason for existing, cross-platform .NET, is now served directly by Microsoft's own runtime. Mono has instead found a durable niche as the underlying execution engine for Unity, one of the most widely used game engines, which used Mono to let developers write game logic in C# and run it across Unity's many target platforms, and as the technology base that Xamarin, later acquired by Microsoft, built cross-platform mobile development on top of. In practice, most developers encounter Mono indirectly today, through Unity's C# scripting environment or through mobile applications built with Xamarin-derived tooling, rather than by installing Mono directly to run general-purpose .NET server applications, a role Microsoft's own cross-platform .NET now fills more directly. The main consideration when evaluating Mono today is that it is largely a legacy or specialized-use technology rather than a general-purpose choice for new cross-platform .NET projects: teams starting fresh server or desktop .NET work are generally better served by Microsoft's own current .NET runtime, and Mono's continued relevance is concentrated specifically in Unity game scripting and in maintaining older Xamarin-based mobile codebases that have not yet migrated to newer frameworks. Even within Unity, the engine has been introducing its own newer ahead-of-time compilation options as alternatives to Mono's runtime execution, so its role there is also gradually narrowing to specific build configurations rather than being the only execution path available.
Key Features
- Implements the ECMA/ISO C# and Common Language Infrastructure standards
- Provides its own virtual machine executing Common Intermediate Language
- Includes a substantially compatible reimplementation of .NET class libraries
- Originally enabled cross-platform .NET development before .NET Core existed
- Serves as the underlying C# scripting engine for the Unity game engine
- Formed the technology base underlying Xamarin's mobile development tools
- Ships its own independent C# compiler
- Maintained as an open-source project since its Ximian and Novell origins