All Topics  
Mono (software)

 

   Email Print
   Bookmark   Link






 

Mono (software)



 
 
Mono is a project led by Novell
Novell

Novell Inc. is a global software corporation based in the United States specializing in enterprise operating systems such as SUSE Linux distributions and Novell NetWare; identity, security and systems management solutions; and collaboration solutions....
 (formerly by Ximian
Ximian

Ximian was a company that provided free software desktop applications for Linux and Unix based on the GNOME platform. Ximian was founded by Miguel de Icaza and Nat Friedman in October 1999, and was bought by Novell on August 4, 2003....
) to create an Ecma
Ecma International

'Ecma International' is an international, private non-profit standards organization for information and communication systems. It acquired its name in 1994, when the European Computer Manufacturers Association changed its name to reflect the organization's international reach....
 standard compliant, .NET
.NET Framework

The Microsoft .NET Framework is a software framework that is available with several Microsoft Windows operating systems. It includes a large Library of coded solutions to prevent common programming problems and a virtual machine that manages the execution of programs written specifically for the Software framework....
-compatible set of tools, including among others a C# compiler
Compiler

A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
 and a Common Language Runtime
Common Language Runtime

The Common Language Runtime is a core component of Microsoft .NET Framework initiative. It is Microsoft's implementation of the Common Language Infrastructure standard, which defines an execution environment for program code....
. Mono can be run on Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
, BSD, UNIX
Unix

Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
, Mac OS X
Mac OS X

Mac OS X is a line of computer operating systems developed, marketed, and sold by Apple Inc., and since 2002 has been included with all new Macintosh computer systems....
, Solaris and Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
 operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s.

Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
 has a version of .NET 2.0 now available only for Windows XP, called the Shared Source CLI (Rotor)
Shared Source Common Language Infrastructure

The Shared Source Common Language Infrastructure , previously codenamed Rotor, is Microsoft's shared source implementation of the Common Language Infrastructure, the core of Microsoft .NET....
. Microsoft's shared source
Shared source

Shared Source is Microsoft's framework for sharing computer program source code with third parties. Microsoft's Shared Source Initiative, launched in May 2007, includes a spectrum of technologies and licenses....
 license may be insufficient for the needs of the community (it explicitly forbids commercial use).






Discussion
Ask a question about 'Mono (software)'
Start a new discussion about 'Mono (software)'
Answer questions from other users
Full Discussion Forum



Encyclopedia


Mono is a project led by Novell
Novell

Novell Inc. is a global software corporation based in the United States specializing in enterprise operating systems such as SUSE Linux distributions and Novell NetWare; identity, security and systems management solutions; and collaboration solutions....
 (formerly by Ximian
Ximian

Ximian was a company that provided free software desktop applications for Linux and Unix based on the GNOME platform. Ximian was founded by Miguel de Icaza and Nat Friedman in October 1999, and was bought by Novell on August 4, 2003....
) to create an Ecma
Ecma International

'Ecma International' is an international, private non-profit standards organization for information and communication systems. It acquired its name in 1994, when the European Computer Manufacturers Association changed its name to reflect the organization's international reach....
 standard compliant, .NET
.NET Framework

The Microsoft .NET Framework is a software framework that is available with several Microsoft Windows operating systems. It includes a large Library of coded solutions to prevent common programming problems and a virtual machine that manages the execution of programs written specifically for the Software framework....
-compatible set of tools, including among others a C# compiler
Compiler

A compiler is a computer program that transforms source code written in a programming language into another computer language . The most common reason for wanting to transform source code is to create an executable program....
 and a Common Language Runtime
Common Language Runtime

The Common Language Runtime is a core component of Microsoft .NET Framework initiative. It is Microsoft's implementation of the Common Language Infrastructure standard, which defines an execution environment for program code....
. Mono can be run on Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
, BSD, UNIX
Unix

Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
, Mac OS X
Mac OS X

Mac OS X is a line of computer operating systems developed, marketed, and sold by Apple Inc., and since 2002 has been included with all new Macintosh computer systems....
, Solaris and Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
 operating system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s.

Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
 has a version of .NET 2.0 now available only for Windows XP, called the Shared Source CLI (Rotor)
Shared Source Common Language Infrastructure

The Shared Source Common Language Infrastructure , previously codenamed Rotor, is Microsoft's shared source implementation of the Common Language Infrastructure, the core of Microsoft .NET....
. Microsoft's shared source
Shared source

Shared Source is Microsoft's framework for sharing computer program source code with third parties. Microsoft's Shared Source Initiative, launched in May 2007, includes a spectrum of technologies and licenses....
 license may be insufficient for the needs of the community (it explicitly forbids commercial use). The Mono project has many of the same goals as the Portable.NET
Portable.NET

Part of the DotGNU project, Portable.NET is a free software and open source software initiative aiming to build a portability toolchain and runtime for Common Language Infrastructure applications....
 project, part of the similar but separate project DotGNU
DotGNU

DotGNU is a part of the GNU Project that aims to provide a free software replacement for Microsoft's .NET Framework. Other goals of the project are better support for non-Microsoft Windows platforms and support for more processors....
 run by Free Software Foundation
Free Software Foundation

The Free Software Foundation is a non-profit corporation founded by Richard Stallman on 4 October 1985 to support the free software movement, a copyleft-based movement which aims to promote the universal freedom to distribute and modify computer software without restriction....
.

History

Miguel de Icaza
Miguel de Icaza

Miguel de Icaza is a Mexico free software programmer, best known for starting the GNOME and Mono projects....
 became interested in .NET technology as soon as the .NET documents were released in December 2000. After looking at the byte code interpreter, he realized that there were no specifications for the metadata. In February 2001 de Icaza asked for the missing information on the metadata file format in the .NET mailing lists and at the same time started to work on a C# compiler written in C#, as an exercise in C#. In April 2001 ECMA published the missing file format, and at GUADEC
GUADEC

The GNOME Users And Developers European Conference, is an annual conference taking place in Europe, whose topic is the development of the GNOME desktop environment....
 (April 6 – April 8, 2001) de Icaza demonstrated the features of his compiler (which by then was able to parse itself).

Internally at Ximian
Ximian

Ximian was a company that provided free software desktop applications for Linux and Unix based on the GNOME platform. Ximian was founded by Miguel de Icaza and Nat Friedman in October 1999, and was bought by Novell on August 4, 2003....
 there was much discussion about building tools to increase productivity: making it possible to create more applications in less time and therefore reduce time and cost of development. After a feasibility study, which clearly stated that it was possible to build the technology, Ximian reassigned staff from other projects and created the Mono team. Lacking the resources to build a full .NET replacement on their own, they formed the Mono open source project, which was announced on July 19 2001 at the O'Reilly
O'Reilly Media

O'Reilly Media is an American Mass media company established by Tim O'Reilly that publishes books and web sites and produces conferences on computer technology topics....
 conference.

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

The logo of Mono is a monkey's
Monkey

A monkey is a nonhuman primate mammal with the exception usually of the lemurs and tarsiers. More specifically, the term monkey refers to a subset of monkeys: any of the smaller longer-tailed catarrhine or platyrrhine primates as contrasted with the apes....
 face, mono being Spanish
Spanish language

Spanish or Castilian is a Romance languages that originated in northern Spain, and gradually spread in the Kingdom of Castile and evolved into the principal language of government and trade....
 for monkey. The name relates to the monkeys and apes that are a central theme within Ximian, such as the GNOME Project's logo (a monkey's footprint), the Bonobo project (bonobo
Bonobo

The Bonobo , which, until recently, usually was called the Pygmy Chimpanzee and less often, the Dwarf or Gracile Chimpanzee, is a great ape and one of the two species making up the genus, chimpanzee....
s are a species related to chimpanzees), the Novell Evolution
Novell Evolution

Evolution or Novell Evolution is the official personal information manager and workgroup information management tool for GNOME. It combines e-mail, calendar, address book, and task list management functions....
 (formerly Ximian Evolution) Project, and the Ximian logo itself (a monkey's silhouette). The Mono FAQ claims that the origin of the name is "We like monkeys."

Current status and roadmap

Mono's current version is 2.2 (as of January 13, 2009). This version provides the core API of the .NET Framework
.NET Framework

The Microsoft .NET Framework is a software framework that is available with several Microsoft Windows operating systems. It includes a large Library of coded solutions to prevent common programming problems and a virtual machine that manages the execution of programs written specifically for the Software framework....
 as well as support for Visual Basic.NET and C# versions 2.0 and (partially) 3.0. LINQ to objects and XML is part of the distribution, but not LINQ to SQL
Language Integrated Query

Language Integrated Query is a Microsoft .NET Framework component that adds native data Query language capabilities to List of .NET languages....
. C# 3.0 is now the default mode of operation for the C# compiler. Windows Forms
Windows Forms

Windows Forms is the name given to the graphical user interface application programming interface included as a part of Microsoft .NET Framework, providing access to the native Microsoft Windows interface elements by wrapping the existing Windows API in managed code....
 2.0 is also now supported.

Implementation of .NET Framework
.NET Framework

The Microsoft .NET Framework is a software framework that is available with several Microsoft Windows operating systems. It includes a large Library of coded solutions to prevent common programming problems and a virtual machine that manages the execution of programs written specifically for the Software framework....
 3.0
.NET Framework

The Microsoft .NET Framework is a software framework that is available with several Microsoft Windows operating systems. It includes a large Library of coded solutions to prevent common programming problems and a virtual machine that manages the execution of programs written specifically for the Software framework....
 is under development under an experimental Mono subproject called "Olive", but the availability of a Mono framework supporting .NET 3.0 is still not planned yet.

An open source implementation of Silverlight, called Moonlight
Moonlight (runtime)

Moonlight is a free software and open-source software implementation of the Microsoft Silverlight which was originally developed by Microsoft. Moonlight is currently being developed by the Mono Project....
, is now underway and has been included since Mono 1.9. Moonlight 1.0, which supports the Silverlight 1.0 APIs, was released January 20, 2009. A Moonlight 2.0 alpha
Development stage

A software release is the distribution of an initial or upgraded Software versioning of a computer software product. The software engineering and company doing the work decide on how to distribute the program or system, or changes to that program or system....
 release, which will support Silverlight 2.0 content (first version which is scriptable with .NET), is planned for June 2009.

Mono components

Mono consists of three groups of components:
  1. Core components
  2. Mono/Linux/GNOME development stack
  3. Microsoft compatibility stack.


The core components include the C# compiler, the virtual machine, and the base class libraries. These components are based on the and standards, allowing Mono to provide a standards compliant, free and open source CLI virtual machine
Virtual machine

In computer science, a virtual machine is a software implementation of a machine that executes programs like a real machine.Definitions...
.

The Mono/Linux/GNOME development stack provide tools for application development while leveraging existing GNOME
Gnome

A gnome is a mythical creature characterized by its extremely small size and wiktionary:subterranean lifestyle. The word gnome is derived from the New Latin gnomus....
 and Free and Open Source
Free and open source software

Free and open source software, also F/OSS, FOSS, or FLOSS is software which is liberally software licence to grant the right of users to study, change, and improve its design through the availability of its source code....
 libraries. These include: Gtk#
Gtk Sharp

Gtk# is a set of .NET Framework binding s for the GTK+ Graphical user interface Widget toolkit and assorted GNOME Library . The library facilitates building graphical GNOME applications using Mono or any other compliant Common Language Runtime....
 for GUI
Gui

Gui or guee is a generic term to refer to grillinged dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients....
 development, Mozilla libraries for working with the Gecko rendering engine
Gecko (layout engine)

Gecko is a layout engine currently developed by Mozilla Corporation, known as the layout engine of the Mozilla Firefox web browser, Mozilla Application Suite, Nvu, Mozilla Thunderbird and many more....
, Unix integration libraries, database connectivity libraries, a security stack, and the XML schema language RelaxNG. Gtk# allows Mono applications to integrate into the Gnome desktop as native applications. The database libraries provide connectivity to MySQL
MySQL

MySQL is a relational database management system which has more than 11 million installations. The program runs as a server providing multi-user access to a number of databases....
, SQLite
SQLite

SQLite is an ACID-compliant relational database management system contained in a relatively small C programming library .Unlike client-server database management systems, the SQLite engine is not a standalone process with which the program communicates....
, PostgreSQL
PostgreSQL

PostgreSQL is an object-relational database management system . It is released under a BSD licenses and is thus free software. As with many other open-source programs, PostgreSQL is not controlled by any single company, but has a global community of developers and companies to develop it....
, Firebird
Firebird (database server)

Firebird is an open source relational database management system that runs on Linux, Microsoft Windows, and a variety of Unix platforms. The database fork from Borland's open source edition of InterBase in 2000, but since Firebird 1.5 the code has been largely rewritten....
, Open Database Connectivity
Open Database Connectivity

In computing, Open Database Connectivity provides a standard software application programming interface method for using database management systems ....
 (ODBC), Microsoft SQL Server
Microsoft SQL Server

Microsoft SQL Server is a relational database management system produced by Microsoft. Its primary query languages are SQL and Transact-SQL....
 (MSSQL), Oracle
Oracle database

The Oracle Database consists of a relational database management system produced and marketed by Oracle Corporation. , Oracle had become a major presence in database computing....
, the object-relational database db4o
Db4o

db4o is an object database, available under a dual-licensing, the GNU General Public License and a propietary commercial license. db4o is available both for Java and .NET_Framework....
, and many others. The Mono project tracks developing .

The Microsoft compatibility stack provides a pathway for porting Windows .NET applications to Linux. This group of components include ADO.NET
ADO.NET

ADO.NET is a set of computer software components that can be used by programmers to access data and data services. It is a part of the base class library that is included with the .NET Framework....
, ASP.NET
ASP.NET

ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites, web applications and web services....
, and Windows.Forms
Windows Forms

Windows Forms is the name given to the graphical user interface application programming interface included as a part of Microsoft .NET Framework, providing access to the native Microsoft Windows interface elements by wrapping the existing Windows API in managed code....
, among others. As these components are not covered by ECMA
Ecma International

'Ecma International' is an international, private non-profit standards organization for information and communication systems. It acquired its name in 1994, when the European Computer Manufacturers Association changed its name to reflect the organization's international reach....
 standards, some of them remain subject to patent fears and concerns.

Framework architecture


Just-in-time engine

The Mono runtime contains a just-in-time compilation
Just-in-time compilation

In computing, just-in-time compilation , also known as dynamic translation, is a technique for improving the runtime performance of a computer program....
 (JIT) engine for a number of processors: x86, SPARC
SPARC

SPARC is a Reduced Instruction Set Computer microprocessor instruction set Computer architecture originally designed in 1985 by Sun Microsystems....
, PowerPC
PowerPC

PowerPC is a RISC instruction set architecture created by the 1991 Apple Inc.?IBM?Motorola alliance, known as AIM alliance. Originally intended for personal computers, PowerPC CPUs have since become popular embedded system and high-performance processors....
, ARM
ARM architecture

The ARM architecture is a 32-bit RISC central processing unit architecture developed by ARM Limited that is widely used in embedded system designs....
, S390 (in 32-bit and 64-bit mode), and x86_64, IA64 and SPARC for 64-bit modes. The runtime will perform a just-in-time compilation to the machine's native code which is cached as the application runs. It is also possible to precache the native image before execution. For other supported systems not listed, an interpreter performs each byte code one by one without compiling the image to native code. In almost every condition the JIT method will outperform the interpreted method.

However, the current conservative garbage collector (the "Boehm-Demers-Wiser Conservative Garbage Collector") presents a serious drawback compared to commercial garbage collected runtimes, like the Java Virtual Machine
Java Virtual Machine

A Java Virtual Machine is a set of computer software programs and data structures which use a virtual machine model for the execution of other computer programs and Scripting language....
 or the .NET framework's runtime. There is a theoretical chance of running into memory leaks that may even result in an abrupt end of an application's execution due to an out-of-memory condition. This is especially a grave concern for server applications meant to run for a long time. Development of a modern, "real" garbage collector is under way (called "Simple Generational GC"), but a date for incorporation into a production release seems not yet to have been set.

Class library

The class library provides a comprehensive set of facilities for application development. They are primarily written in C#, but due to the Common Language Specification they can be used by any .NET language. The class library is structured into namespaces, and deployed in shared libraries known as assemblies. Speaking of the .NET framework is primarily referring to this class library.

Namespaces and assemblies
Namespaces are a mechanism for logically grouping similar classes into a hierarchical structure. This prevents naming conflicts. The structure is implemented using dot-separated words, where the most common top-level namespace is System, such as System.IO and System.Net (a complete list can be found in ). There are other top-level namespaces as well, such as Accessibility and Windows. A user can define a namespace by placing elements inside a .

Assemblies are the physical packaging of the class libraries. These are .dll files, just as (but not to be confused with) Win32 shared libraries. Examples of assemblies are mscorlib.dll, System.dll, System.Data.dll and Accessibility.dll. Namespaces are often distributed among several assemblies and one assembly can be composed of several files.

Common Language Infrastructure and Common Language Specification

The Common Language Infrastructure (CLI), or more commonly known as the Common Language Runtime, is implemented by the Mono executable. The runtime is used to execute compiled .NET applications. The common language infrastructure is defined by the ECMA standard . To run an application, you must invoke the runtime with the relevant parameters.

The Common Language Specification (CLS) is specified in chapter 6 of ECMA-335 and defines the interface to the CLI, such as conventions like the underlying types for Enum. The Mono compiler generates an image that conforms to the CLS. This is the Common Intermediate Language. The Mono runtime takes this image and runs it. The ECMA standard formally defines a library that conforms to the CLS as a framework.

Managed and unmanaged code

Within a native .NET/Mono application, all code is managed
Managed code

Managed code is Source code that executes under the management of a virtual machine, unlike unmanaged code, which is executed directly by the computer's Central processing unit....
; that is, it is governed by the CLI's style of memory management and thread safety. Other .NET or Mono applications can use legacy code, which is referred to as unmanaged, by using the System.Runtime.InteropServices libraries to create C# bindings. Many libraries which ship with Mono use this feature of the CLI, such as Gtk#.

Related projects

There exist lots of projects related to Mono that extend Mono and allows developers to use Mono in their development environment. These projects include:
  • Cocoa#
    Cocoa Sharp

    Cocoa# is a bridge framework on Mac OS X to allow applications developed with the Mono to access the Cocoa API. It provides direct access to the Cocoa API using a dot notation familiar to languages working on the Mono runtime such as C#....
      wrappers around the native Mac OS X toolkit (Cocoa
    Cocoa (API)

    Cocoa is one of Apple Inc.'s native object-oriented application program environment for the Mac OS X operating system. It is one of four major Application programming interfaces available for Mac OS X; the others are Carbon , POSIX , and Java platform....
    ).
  • Gecko#, bindings for embedding the layout engine used in Mozilla (Gecko
    Gecko (layout engine)

    Gecko is a layout engine currently developed by Mozilla Corporation, known as the layout engine of the Mozilla Firefox web browser, Mozilla Application Suite, Nvu, Mozilla Thunderbird and many more....
    ).
  • Gtk#
    Gtk Sharp

    Gtk# is a set of .NET Framework binding s for the GTK+ Graphical user interface Widget toolkit and assorted GNOME Library . The library facilitates building graphical GNOME applications using Mono or any other compliant Common Language Runtime....
    , C# wrappers around the underlying GTK+
    GTK+

    GTK+, or The GIMP Toolkit, is a cross-platform widget toolkit for creating graphical user interfaces. It is one of the most popular toolkits for the X Window System, along with Qt ....
     and GNOME
    Gnome

    A gnome is a mythical creature characterized by its extremely small size and wiktionary:subterranean lifestyle. The word gnome is derived from the New Latin gnomus....
     libraries, written in C
    C (programming language)

    C is a general-purpose computer programming language originally developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system....
    .
  • Tao, a collection of graphics and gaming bindings (OpenGL, SDL, Glut, Cg).
  • tool.


MonoDevelop: the Mono IDE

MonoDevelop is a free GNOME integrated development environment
Integrated development environment

An integrated development environment also known as integrated design environment or integrated debugging environment is a software application that provides comprehensive facilities to computer programmers for software development....
 primarily designed for C# and other .NET languages such as Nemerle
Nemerle

Nemerle is a high level language static typing programming language for the Microsoft .NET platform. It offers functional programming, object-oriented and imperative programming features....
, Boo
Boo programming language

Boo is an Object oriented programming, Type system#Static and dynamic typing programming language in active development since 2003, which seeks to make use of the Common Language Infrastructure's support for Unicode, I18n and web applications, while using a Python -inspired syntax and a special focus on language and compiler extensibility....
, and Java
Java (programming language)

Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java ....
 (via IKVM.NET
IKVM.NET

IKVM.NET is an implementation of Java for Mono and the Microsoft .NET Framework. IKVM is free software, distributed under a permissive free software licence....
). MonoDevelop was originally a port of SharpDevelop
SharpDevelop

SharpDevelop is a free and open source Integrated development environment for the C Sharp programming language, Visual Basic .NET , Boo , and F Sharp and IronPython programming languages....
 to Gtk#, but it has since evolved to meet the needs of Mono developers. The IDE includes class management, built-in help, code completion, Stetic (a GUI designer), project support, and an integrated debugger.

The MonoDoc browser provides access to API documentation and code samples. The documentation browser uses wiki-style content management, allowing developers to edit and improve the documentation.

License

Mono is dual license
Dual license

Dual-licensing is the practice of distributing software under two different sets of terms and conditions. This may mean two different licenses, or two different sets of licenses....
d by Novell, similar to other products such as Qt
Qt (toolkit)

Qt is a cross-platform application development framework, widely used for the development of graphical user interface programs , and also used for developing non-GUI programs such as console tools and servers....
 and the Mozilla Application Suite
Mozilla Application Suite

The Mozilla Application Suite is a cross-platform integrated Internet suite. Its development was initiated by Netscape Communications Corporation, before their acquisition by AOL....
. Mono's C# compiler and tools are released under the GNU General Public License
GNU General Public License

The GNU General Public License is a widely used free software license, originally written by Richard Stallman for the GNU project. The GPL is the most popular and well-known example of the type of strong copyleft license that requires derived works to be available under the same copyleft....
 (GPLv2 only) (starting with version 2.0 of Mono, the Mono C# compiler source code will also be available under the MIT X11 license), the runtime libraries under the GNU Lesser General Public License
GNU Lesser General Public License

The GNU Lesser General Public License or LGPL is a free software license published by the Free Software Foundation . It was designed as a compromise between the strong-copyleft GNU General Public License and permissive licenses such as the BSD licenses and the MIT License....
 (LGPLv2 only) and the class libraries under the MIT License
MIT License

The MIT License is a free software license originating at the Massachusetts Institute of Technology , used by the MIT X Consortium.It is a Permissive_free_software_licence license, meaning that it permits reuse within proprietary software on the condition that the license is distributed with that software....
. These are all free software
Free software

Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
 and open-source license
Open-source license

An open source license is a copyright license for computer software that makes the source code available under terms that allow for modification and redistribution without having to pay the original author....
s and hence Mono is free
Free software

Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
 and open-source software
Open-source software

Open source software is defined as computer software for which the source code and certain other rights normally reserved for copyright holders are provided under a computer software license that meets the Open Source Definition or that is in the public domain....
.

Mono and Microsoft’s patents

Mono’s implementation of those components of the .NET stack not submitted to the ECMA
ECMA

Ecma or ECMA may refer to one of the following:Ecma is short for*Ecma International , formerly : the European Computer Manufacturers Association , an international standards organization for Information Communication Technology and Consumer Electronics ...
 for standardization has been the source of patent violation concerns for much of the life of the project. In particular, discussion has taken place about whether Microsoft could destroy the Mono project through patent suits.

The base technologies submitted to the ECMA, and therefore also the Unix/GNOME-specific parts, may be non-problematic. The concerns primarily relate to technologies developed by Microsoft on top of the .NET Framework, such as ASP.NET
ASP.NET

ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites, web applications and web services....
, ADO.NET
ADO.NET

ADO.NET is a set of computer software components that can be used by programmers to access data and data services. It is a part of the base class library that is included with the .NET Framework....
 and Windows Forms
Windows Forms

Windows Forms is the name given to the graphical user interface application programming interface included as a part of Microsoft .NET Framework, providing access to the native Microsoft Windows interface elements by wrapping the existing Windows API in managed code....
 (see Non standardized namespaces
Base Class Library

The Base Class Library is a standard library available to all languages using the .NET Framework. .NET includes the BCL in order to encapsulate a large number of common functions, such as file reading and writing, graphic rendering, database interaction, and XML document manipulation, which makes the programmer's job easier....
), i.e. parts composing Mono’s Windows compatibility stack. These technologies are today not fully implemented in Mono and not required for developing Mono-applications. Richard Stallman
Richard Stallman

Richard Matthew Stallman , often abbreviated "rms","'Richard Stallman' is just my mundane name; you can call me 'rms'"|last= Stallman...
 has claimed it may be "dangerous" to use Mono because of the possible threat of Microsoft patents.

On November 2 2006, Microsoft and Novell announced a joint agreement whereby Microsoft agreed to not sue Novell’s customers for patent infringement. According to Mono project leader Miguel de Icaza, this agreement extends to Mono but only for Novell developers and customers. It was criticized by some members of the free software community
Free software community

The free software community is an informal term referring to the users and developers of free software as well as supporters of the free software movement....
 because it violates the principles of giving equal rights to all users of a particular program (see Novell and their Patent Agreement with Microsoft
Novell

Novell Inc. is a global software corporation based in the United States specializing in enterprise operating systems such as SUSE Linux distributions and Novell NetWare; identity, security and systems management solutions; and collaboration solutions....
).

Software developed with Mono

Screenshot Albumpic
F Spot Screenshot
The following are programs that use the Mono API
Application programming interface

An application programming interface is a set of subroutine, data structures, class and/or Protocol provided by library and/or operating system Service s in order to support the building of applications....
 and C#.
  • Banshee
    Banshee (music player)

    Banshee is a Media player that is built upon Mono and Gtk Sharp. It uses the GStreamer multimedia platform for encoding, and decoding various media formats, including Vorbis, MP3 and FLAC....
     music management and playback software for GNOME
    Gnome

    A gnome is a mythical creature characterized by its extremely small size and wiktionary:subterranean lifestyle. The word gnome is derived from the New Latin gnomus....
  • Beagle
    Beagle (software)

    Beagle is a desktop search for Linux and other such modern Unix-like systems, enabling the user to search documents, chat logs, email and contact lists in a similar way to Spotlight in Mac OS X, and Windows Search or Google Desktop under Microsoft Windows....
     is a desktop search
    Desktop search

    Desktop search is the name for the field of search tools which search the contents of a user's own computer files, rather than searching the Internet....
     tool.
  • Blam!
    Blam!

    Blam! is an outdated RSS /Atom feed reader for the GNOME written in C Sharp for Mono and Gtk Sharp, originally developed by Imendio. A new developer has since taken over the project....
     is an RSS
    RSS (file format)

    RSS is a family of Web feed formats used to publish frequently updated works?such as blog entries, news headlines, audio, and video?in a standardized format....
    -news aggregator especially good for reading Planet
    Planet aggregator

    In computing, Planet is a feed aggregator application designed to collect posts from the weblogs of members of an Internet community and display them on a single page....
    -feeds like .
  • Diva video editing application for GNOME.
  • GNOME Do
    GNOME Do

    GNOME Do is a popular, Free and open source software application launcher for Linux by David Siegel. Unlike other application launchers, it not only allows you to search for applications and files but it also allows you to specify actions to perform on search results by providing instantaneous, action-oriented search results that adapt to re...
     desktop application launching software (similar to Quicksilver
    Quicksilver (software)

    Quicksilver is a computer utility software program for Mac OS X, made by Blacktree Software and distributed freely. It allows users to use the keyboard to rapidly perform tasks such as launching application softwares, manipulating computer file and data, running scripts, or sending e-mail....
    ).
  • F-Spot
    F-Spot

    F-Spot is an , designed to provide personal photo management for the GNOME desktop....
     is a photo management program.
  • iFolder
    IFolder

    iFolder is an open source application, developed by Novell, Inc., intended to allow cross-platform file sharing across computer networks.iFolder operates on the concept of shared Directory , where a folder is marked as shared and the contents of the folder are then synchronized to other computers over a network, either directly between comp...
     3 (by Novell) lets you share files across multiple computers and with other users through peer-to-peer or Novell's groupware server products.
  • KeePass
    KeePass

    KeePass Password Safe is an open source Password manager for Microsoft Windows....
     2 (preview release!) is an open source password management utility.
  • libsecondlife
    Libsecondlife

    libsecondlife is a Library that can be used in a third party application to communicate with the Server that control the virtual world of Second Life....
     is an open source implementation of the Second Life
    Second Life

    Second Life is a virtual world developed by Linden Lab that launched on June 23, 2003 and is accessible via the Internet. A free Client called the Second Life Viewer enables its users, called Resident , to interact with each other through avatar ....
     networking protocol written in C# that will run under Mono or .NET.
  • MonoDevelop
    MonoDevelop

    MonoDevelop is an open source integrated development environment for the Linux platform, primarily targeted for the development of software that uses both the Mono and Microsoft .NET framework....
     is an IDE
    Integrated development environment

    An integrated development environment also known as integrated design environment or integrated debugging environment is a software application that provides comprehensive facilities to computer programmers for software development....
     for creating Mono applications. It was originally a port of SharpDevelop
    SharpDevelop

    SharpDevelop is a free and open source Integrated development environment for the C Sharp programming language, Visual Basic .NET , Boo , and F Sharp and IronPython programming languages....
     to Gtk#, but is today developed on its own. A Windows installer is not provided, but it can be built and run on Windows.
  • Muine
    Muine

    Muine is an audio player for the GNOME desktop environment which runs on Linux, Solaris , Berkeley Software Distribution and other Unix and UNIX-like systems....
     is a music player with a user interface
    User interface

    The user interface is the aggregate of means by which people—the User s—Interaction with the system—a particular machine, device, computer program or other complex tools....
     designed to be intuitive, developed by Jorn Baayen who also worked on Rhythmbox
    Rhythmbox

    Rhythmbox is an audio player that plays and helps organize digital music. Originally inspired by Apple Computer's iTunes, it is free software, designed to work well under the GNOME Desktop using the GStreamer media framework....
    .
  • Second Life
    Second Life

    Second Life is a virtual world developed by Linden Lab that launched on June 23, 2003 and is accessible via the Internet. A free Client called the Second Life Viewer enables its users, called Resident , to interact with each other through avatar ....
    , the virtual world created by Linden Lab
    Linden Lab

    Linden Lab is a privately held American Internet company that is best known as the creator of Second Life and the virtual world platform Second Life Grid....
    , began offering Mono compilation for their Linden Scripting Language
    Linden Scripting Language

    Linden Scripting Language, or LSL, is the programming language used by residents of Second Life, a virtual world by Linden Lab. LSL scripts can control the behavior of in-world objects....
     in August 2008.
  • Tomboy
    Tomboy (software)

    Tomboy is a free and open-source desktop notetaking application. It is for Unix-like and Microsoft Windows systems written in C Sharp using Gtk Sharp....
     is a desktop note-taking application which uses a wiki-like
    Wiki

    A wiki is a page or collection of Web pages designed to enable anyone who accesses it to contribute or modify content , using a simplified markup language....
     linking system.
  • Unity
    Unity (game engine)

    Unity is an integrated authoring tool for creating 3D video games or other interactive content such as architectural visualizations or real-time 3D animations....
     is a game engine
    Game engine

    A game engine is a software system designed for the creation and development of video games. There are many game engines that are designed to work on video game consoles and desktop operating systems such as Microsoft Windows, Linux, and Mac OS X....
     using Mono for game scripting.
  • MonoTorrent (previously named bitsharp) a bittorrent library written with Mono.
  • is a Wii console game built on top of Mono.
  • is Cartoon Network's video game for kids is built on top of Mono.
  • and a .


See also


  • MonoDevelop
    MonoDevelop

    MonoDevelop is an open source integrated development environment for the Linux platform, primarily targeted for the development of software that uses both the Mono and Microsoft .NET framework....
     - an open source IDE
    Integrated development environment

    An integrated development environment also known as integrated design environment or integrated debugging environment is a software application that provides comprehensive facilities to computer programmers for software development....
     targeting both Mono and Microsoft .NET framework
    .NET Framework

    The Microsoft .NET Framework is a software framework that is available with several Microsoft Windows operating systems. It includes a large Library of coded solutions to prevent common programming problems and a virtual machine that manages the execution of programs written specifically for the Software framework....
     platforms.
  • DotGNU
    DotGNU

    DotGNU is a part of the GNU Project that aims to provide a free software replacement for Microsoft's .NET Framework. Other goals of the project are better support for non-Microsoft Windows platforms and support for more processors....
     and Portable.NET
    Portable.NET

    Part of the DotGNU project, Portable.NET is a free software and open source software initiative aiming to build a portability toolchain and runtime for Common Language Infrastructure applications....
    - another open source Microsoft.NET implementations.
  • Monoppix
    Monoppix

    Monoppix is a "Live CD" Linux distribution , that works without installing anything on your hard drive, running completely off the Compact Disc and Random access memory....
    , a "Live CD
    Live CD

    A live CD or live DVD is a CD or DVD containing a booting computer operating system. Live CDs are unique in that they have the ability to run a complete, modern operating system on a computer lacking Computer_storage , such as a hard disk drive....
    " Linux distribution
    Linux distribution

    A Linux distribution is a member of the family of Unix-like software distributions built on top of the Linux kernel. Such distributions consist of a large collection of software applications such as word processors, spreadsheets, media players and database applications....
     , which main purpose of this distribution is to showcase and spread Mono technology
  • mod mono
    Mod mono

    mod_mono is a module for the Apache HTTP Server that allows for hosting of ASP.NET pages and other assemblies on multiple platforms by use of the Mono ....
    , a module for the Apache HTTP Server
    Apache HTTP Server

    The Apache HTTP Server, commonly referred to simply as Apache , is a web server notable for playing a key role in the initial growth of the World Wide Web....
     that allows for hosting of ASP.NET
    ASP.NET

    ASP.NET is a web application framework developed and marketed by Microsoft to allow programmers to build dynamic web sites, web applications and web services....
     pages and other assemblies on multiple platforms by use of the Mono.
  • Comparison of application virtual machines
    Comparison of Application Virtual Machines

    This comparison lists some software virtual machines that implement the concept of application virtualization, typically for the purpose of allowing application bytecode to be portably run on many different computer architectures and operating systems....


External links

  • Main Page
  • Mono community homepage


International

  • , A Brazilian Mono Website
  • , A French Mono Website
  • , A German Mono WebSite
  • A Hungarian Mono Community
  • , A Spanish Mono Community