Mono (software)

from Wikipedia, the free encyclopedia

Mono logo
Basic data

developer Xamarin (previously Novell )
Publishing year June 30, 2004
Current  version 6.8.0
( January 15, 2020 )
operating system Unix / BSD derivatives, Linux , Windows , macOS and Solaris  8
programming language C , C # , Extensible Markup Language
category Framework
License MIT / X11 ; partially: GPLv2 / LGPLv2

Mono (Spanish for “monkey” or from the Greek monos for “alone” or “only”) is an alternative, open-source implementation of Microsoft's .NET Framework . It enables the development of platform-independent software based on the standards of the common language infrastructure and the programming language C # . The Mono project was created in 2001 under the leadership of Miguel de Icaza from the Ximian company, which Novell bought in 2003 . The developers were taken over into a new company Xamarin in 2011 , which became a Microsoft subsidiary in 2016. As a result, Microsoft became the main sponsor of the project.

Background and technical details

Mono supports a large number of platforms and architectures. By licensing under MIT license there are practically no restrictions for developers and users, so that high license costs for the server operating system can be avoided if .NET-based software is to be used. However, .NET Core can now also often be used for this purpose . In addition, when developing smartphone apps, there is a need to maintain code for different platforms ( Android , iOS , Windows Phone ) on a common basis.

Microsoft, on the other hand, offered its .NET runtime environment only for its own Windows operating systems for a long time . Originally there was an open source version of .NET from Microsoft called Rotor , which was also available for FreeBSD and macOS in addition to Windows . Nevertheless, the company Xamarin was once of the opinion that it could be successful with its own development in this area, especially because the license conditions offered by Microsoft seemed too restrictive for many areas. Since November 12, 2014 Microsoft began to publish subsets of the .NET Framework via GitHub under the MIT license . In addition to .NET Core and the open C # and Visual Basic compiler platform Roslyn, there is also a cross-platform runtime environment under development, the .NET Core CLR. With these projects, Microsoft would like to support the development of the Mono project, among other things.

With Mono it is possible to run programs that have been created for the Microsoft .NET environment even without recompilation under Unix-like operating systems . The advantage of such a cross-platform development is to use the comfort and functionality of the Microsoft development environment ( Microsoft Visual Studio ). Also SharpDevelop is only available on Windows. Conversely, with MonoDevelop, programs can be developed on other operating systems that can also run with Microsoft .NET .

From version 2.10, Mono offers compatibility with the non-Windows-specific libraries of .NET-2.0. Applications based on .NET 3.0 or higher may not currently run under Mono, as only a subset has been implemented so far. Windows Presentation Foundation , Windows Workflow Foundation and partly Windows Communication Foundation are missing . Furthermore, access to Windows-specific functionalities is possible using P-Invoke or COM Interop, i. H. the use of libraries that are not in IL code but in normal, processor-specific assembler code is not permitted. Mono can also access libraries written in C or C ++ , but most of these libraries are platform-dependent.

Applications based on the .NET 4.7.2 profile from Mono can currently be executed (as of January 2019). However, there are restrictions in various sub-areas of the framework. Support for the Windows Presentation Foundation, which will not be reimplemented in the foreseeable future, was explicitly excluded. XAML should be supported in the context of Moonlight, but its development was discontinued, later also that of the original Silverlight. However, Xaml was later used in the context of Xamarin Forms.

Special features of mono

Compared to .NET, Mono also has a small number of additional functions that are in the namespace Mono.*, for example interfaces for operating system-related functions under Unix (Mono.Unix.Native) or Mono.Cecil.dll, with which changes are made to code that has already been compiled can.

Furthermore, the generation of native code (from the .exe or .dll) is --aot=fulleasy and transparent with the help of mono . With classic .NET, however, an AOT compilation could be achieved in an unofficial way, using the NGEN tool (for which administrator rights were required) for the application program, and the result then ended up in a native image cache with a cryptic file name. For .NET Core version 3 and higher, the Ready to Run Images (R2R) offer a new option for AOT compilation.


That of Miguel de Icaza co-founded company Ximian (acquired by Novell on August 4, 2003), the development began a series of .NET-compatible development tools to target, including a C # - compiler and a Common Language Runtime for operation under Windows , Linux , various Unix derivatives and macOS .

Miguel de Icaza has been interested in .NET technology since the first .NET information became available in December 2000. In February 2001 he began to write a C # compiler of the programming language in C # for practice purposes. In April 2001 he was able to present a first version at a Gnome conference.

There has been a lot of internal discussion at Ximian about developing productivity tools to build more applications in less time and reduce development costs. The Mono team was created after a feasibility study. Due to the limited number of employees, however, it was not possible for Ximian to write a full .NET replacement, so the Mono Open Source project, which was announced at the O'Reilly conference in July 2001, was founded.

Three years later, on June 30, 2004, Mono 1.0 was released.

With version 2.0 published on October 6th, 2008, the most important properties of .NET 2.0 were added and there is also an initiative with the Olive project to implement the newer technologies of .NET 3.0 and .NET 3.5. In addition, the C # compiler to the language features of C # 3.0 has been extended (this is primarily to support LINQ ), and a new XAML - parser developed. However, the developers expressly point out that the Windows Presentation Foundation will probably not be implemented for the time being because of its enormous complexity. With version 2.0, a Visual Basic 8.0 compiler is now also on board.

With version 2.4.3 published on December 9th, 2009 - in addition to some bug fixes - the free C # compiler was supplemented with all the essential functions of C # 4.0.

At the beginning of 2011 the new Novell owner Attachmate stopped the further development of the Mono project and on May 2, 2011 fired 30 Mono developers. Nils Brauckmann (the new Suse boss) named the low demand from customers as the reason. A few days after the Mono project stopped at Novell, Miguel de Icaza founded the Xamarin company , which is to be devoted to the development of Mono in the future. Most of the Mono developers previously employed by Suse switched to Xamarin.

Subsequently, SUSE granted Xamarin an unlimited license for the use and commercial exploitation of Mono, MonoTouch for iOS and Android and the Mono Tools for Visual Studio.

With its acquisition by Microsoft in 2016, the Xamarin tools in Microsoft Visual Studio have been integrated and based on the Xamarin IDE Xamarin Studio was Visual Studio for Mac developed. Mono was placed under the umbrella of the .NET Foundation and reissued under the MIT license.

By providing the .NET Core platform as open source under a compatible license, the mutual transfer of code for both projects is significantly simplified. As of May 2017, the official Mono packages also contain a version of the C # compiler (Roslyn) and MSBuild . With the current version of Mono, the compiler also supports C # 8.0.

As part of the Blazor framework, which is still under development, a mono environment is currently used that was compiled as a WebAssembly .

As of version 5.12, IBM i and IBM AIX are also supported.

Standardization and Patents

Prior to Microsoft's takeover of Xamarin, there were significant concerns about Mono in the open source community because parts of the class library might be touching on Microsoft's software patents . Microsoft then concluded a reciprocal patent agreement with Novell which protects Novell and its customers from Microsoft's legal claims. This also includes patent protection for Mono. However, the risk persisted for (almost) all other users. Linus Torvalds summed up the developer's view of the problem when he was confronted with the issue of patent claims from SCO: “In principle, I don't pay attention to patents, because that would be a waste of time.” It is not without reason that software patents are highly controversial and in formally not permitted by the EU .

The basic technologies have been partially standardized by Microsoft at Ecma International and the ISO . Microsoft guarantees licensing of the ECMA parts on a RAND basis. However, other parts such as Windows Forms , ADO.NET and ASP.NET are excluded from this.

The Open Invention Network defends Mono in patent law disputes.

Due to the risk of patent lawsuits from Microsoft, Richard Stallman , the ideological leader of the free software movement , warned against mono after some distributions began to include mono in the standard installation. Microsoft has now irrevocably placed .NET and C # under the Community Promise Agreement and wants to waive patent lawsuits.

Microsoft fundamentally changed its strategy regarding .NET in 2013 and is working on making the source code of .NET completely open as open source. For this purpose, the .NET Foundation was founded by Microsoft, Xamarin and others , which has received the rights to the .NET Framework . By disclosing the source code under the MIT license or Apache 2.0 license, the source code of the .NET Framework can be used in almost any way - i.e. also in closed source projects. Licensing and patent law disputes were hardly possible and therefore no longer to be feared. Microsoft and Xamarin have been working together since 2015 to provide .NET on different platforms. This led to the takeover of Xamarin by Microsoft in 2016, which of course makes patent lawsuits against Xamarin (and Mono) even more pointless.

In May 2019, Microsoft announced that by November 2020 .NET Framework, .NET Core and Mono would be merged into a unified platform .NET 5.0, whereby Mono is to take over the executability on iOS and Android as well as support for AOT compilation . This has since been put into perspective and the full integration was only announced for .NET 6.

See also

  • MonoDevelop , a development environment based on Mono for Linux
  • SharpDevelop , an open source development environment for Windows, from whose source code MonoDevelop arose
  • C # , the primary mono language
  • DotGNU , another project for an open source .NET implementation


Web links

Individual evidence

  1. . (accessed on January 27, 2020).
  2. ^ The mono Open Source Project on Open Hub: Languages ​​Page . In: Open Hub . (accessed on July 18, 2018).
  4. .NET Core Repository (English) - Home repository of the .NET Core project
  5. Roslyn (English) - Home repository of the compiler platform "Roslyn"
  6. .NET Core CLR (English) - Home repository of the .NET Core CLR
  7. Mono Compatibility (English) - Announcement of the Mono project from March 20, 2011
  8. Mono compatibility overview
  9. dotnet-bot: XamlCompilationAttribute Class (Xamarin.Forms.Xaml). Retrieved on January 23, 2019 (German).
  10. Thraka: What's new in .NET Core 3.0. Retrieved on July 9, 2019 (German).
  11. .NET clone Mono in version 2.0 published - article at Heise online , October 6, 2008
  12. Mono learns C # 4.0 - Article at , December 10, 2009
  13. Layoffs at Novell - Aus für Mono - Article in Linux-Magazin , May 4, 2011
  14. The new Suse takes off - article at Heise online , from May 19, 2011
  15. Miguel de Icaza founds mono company - Article at , from May 17, 2011
  16. Announcing Xamarin (English), Miguel de Icaza, accessed February 17, 2012
  17. Mono: Suse and Xamarin work together - article at Heise online , from July 18, 2011
  18. Mono Relicensed MIT - Mono News, March 31, 2016
  19. Mono 5.0 Rolls Out With Roslyn C # Compiler, Concurrent Garbage Collection , May 20, 2017
  20. Mono 6.4.0 Release Notes | Mono. Retrieved October 3, 2019 .
  21. aspnet core / Blazor Framework. In: Github. Microsoft, accessed July 25, 2018 .
  22. Laurent Samsonetti: Mono and WebAssembly - Updates on Static Compilation | Mono. Retrieved June 9, 2018 .
  23. Microsoft announces Linux support - Article at , November 3, 2006
  24. Microsoft and Novell: the thing with the patents - article at Heise online , from November 3, 2006
  25. Joint letter to the Open Source Community - Announcement from Novell and Microsoft
  26. Novell and Microsoft Collaborate (English) - FAQ on the collaboration between Microsoft and Novell
  27. Microsoft and Novell: The Pact in Detail - Article at , November 3, 2006
  28. SCO attacks Linus Torvalds - article at Heise online , from June 18, 2003
  29. Richard Stallman considers mono dangerous - Article at , from June 29, 2009
  30. Microsoft: No patent suits for .NET and C # - Article at , July 7, 2009
  31. .NET Framework Blog - Announcing .NET 2015 Preview: A New Era for .NET. Microsoft, accessed November 13, 2014 .
  32. heise online: Build 2019: Microsoft brings Mono and .NET Core together to .NET 5.0. Retrieved May 6, 2019 .
  33. Announcing .NET 5 Preview 4 and our journey to one .NET. May 19, 2020, accessed May 20, 2020 (American English).