**Mono** on Xamarinin kehittämä, aiemmin Novellin tukema ja Microsoftin 2016 ostama ohjelmistokehys. Projektin tavoitteena on luoda ECMA-standardiin perustuva alusta- ja käyttöjärjestelmäriippumaton pohja Microsoftin kehittämälle .NET Framework-alustalle. Se sisältää kolme osaa

1. C#-kääntäjän (JIT-tulkin)
2. Common Language Infrastructuren, siihen perustuvan kielen CIL:n ja CLR:n, Common Language Runtimen
3. Luokkakirjaston

Monoa voidaan käyttää Linux-, BSD-variantti-, Mac OS X-, Sun Solaris- ja Windows-käyttöjärjestelmissä ja niissä järjestelmäarkkitehtuureissa, joissa edellä mainitut käyttöjärjestelmät toimivat, mukaan lukien Nokia 770 -internet-laitteessa.

Novell on kaksoislisensoinut Monon; Monon C#-kääntäjä ja -työkalut on julkaistu GNU GPL -lisenssillä, ajonaikaiset kirjastot GNU LGPL -lisenssillä ja luokkakirjastot MIT-lisenssillä. Koska nämä kaikki ovat avoimen lähdekoodin lisenssejä, on Monokin avoimen lähdekoodin ohjelmisto. Muokatessaan Monon lähdekoodia kehittäjän on suostuttava Novellin oikeuteen uudelleenlisensoida lähdekoodi muilla lisensseillä, mikä säilyttää Novellin mahdollisuuden Monon kaupalliseen hyödyntämiseen.

Microsoft muutti .NET-ympäristön ytimen (core) avoimen lähdekoodin marraskuussa 2014 ja lupasi myös patenttihaastesuojan avauksen yhteydessä. Tämä mahdollistaa teknologian käytön ilman aiempaa riskiä, jonka Microsoftin patentit aiheuttivat.

Historiaa
---------

Miguel de Icaza kiinnostui .NET-teknologiasta heti kun sen dokumentointi julkistettiin joulukuussa 2000. De Icaza aloitti tavukooditulkkiin tutustumisen, mutta innostus koki kolauksen kun dokumenteissa ei ollut määritelty metadataa. Helmikuussa 2001 de Icaza pyysi puuttuvaa dokumentointia .NET-postituslistalla ja samaan aikaan aloitti työskentelyn C#-kääntäjän ohjelmoimiseksi kielellä itsellään harjoituksena C#-kieleen. Kun huhtikuussa 2001 ECMA julkisti puuttuvan tiedostoformaatin dokumentit, de Icaza esitteli ohjelmoimansa kääntäjän ominaisuuksia vuosittaisessa GNOME-työpöytäympäristön kehittäjien konferenssissa.
Miguel de Icaza ja Nat Friedman perustivat vuonna 1999 Ximian-yrityksen (aluksi Helix Code) kehittämään Linux-ohjelmistoja. Novell osti Ximianin 2003 ja jatkoi sen toimintaa. Lisäksi Ximianin ohjelmistoihin lisättiin tuki Novellin GroupWise ja ZENworks -ohjelmistoille.

Ximianilla oli useita sisäisiä keskusteluja tuottavuuden parantamiseen käytettävien työkalujen kehittämiseksi; tarkoituksena saada tuottaa enemmän sovelluksia vähemmässä ajassa ja siten vähentää käytetyn ajan ja kustannusten määrää kehitystyössä. Kun Ximianilla oli tutkittu, että projekti oli kannattava aloittaa, henkilökuntaa siirrettiin muualta osallistumaan Monon kehitykseen. Koska ryhmällä ei kuitenkaan ollut riittävästi resursseja täydellisen .NET-ympäristön kehittämiseen 19. heinäkuuta 2001 Mono julkaistiin avoimen lähdekoodin projektina, ja kolme vuotta myöhemmin 30. kesäkuuta 2004 julkaistiin sen ensimmäinen vakaa versio 1.0.

Huhtikuussa 2011 Attachmate osti Novellin 2,2 miljardin US-dollarin hintaan, erotti Novellin aiemmin ostaman SUSE:n Novellista ja erotti satoja Novellin työntekijöitä Yhdysvalloissa.
Attachmaten lakkautettua Monon kehityksen se myönsi ohjelmiston lisenssit de Icazan uudelle yritykselle Xamarin.
Microsoft ilmoitti helmikuussa 2016 ostavansa Xamarinin.

Patenttiongelmat
----------------

Richard Stallman ja Free Software Foundation ovat useita kertoja varoitelleet Monon käytön olevan vaarallista Microsoftin hakemien patenttien vuoksi. FSF on suositellut ettei vapaata ohjelmistoa rakenneta Monon tai C#:n varaan.

2. marraskuuta 2006 Microsoft ja Novell tekivät sopimuksen, jonka mukaan Microsoft ei haasta Novellin asiakkaita patenttirikkomuksista.

9. heinäkuuta 2009 Microsoft ilmoitti että ECMA 334 (C#) ja ECMA 335 (CLI) -standardit saa toteuttaa vapaasti ilman lisenssivaatimuksia.
.NET käsittää kuitenkin myös muita teknologioita, kuten ASP.NET, ADO.NET ja Windows Forms, joista tätä lupausta ei ole tehty.

Linux-jakelijoista:

* Novellin sponsoroima OpenSUSE päätti siirtyä Easy-LTSP-sovelluksen osalta C#:sta C++:lle ja Pythoniin.
* Fedora poisti Mono-sovellukset oletusasennuksesta jakeluversiossa Fedora 12.
* Debian on ilmoittanut ettei asenna mitään Mono-sovelluksia GNOMEn perusasennuksessa.

12. marraskuuta 2014 Microsoft vapautti .NET -ympäristön ytimen ja keskeisten kirjastojen koodin avoimeksi. Lähdekoodissa Microsoft takasi suojan oikeustoimia vastaan, joita heidän patenttinsa olisivat voineet aiemmin aiheuttaa .NET Runtimea (ajonaikainen ympäristö) käytettäessä.

Maaliskuussa 2016 Microsoftin Build-blogissa ilmoitettiin että Mono uudelleenlisensoitaisiin MIT-lisenssille.
Uudessa patenttilupauksessa luvattiin että mitään patentteja ei käytetä Monon käyttäjiä vastaan.

Monolla toteutettuja ohjelmia
-----------------------------

* Beagle
* Muine
* Banshee
* Tomboy
* F-spot
* SkyNET
* Blam

Lähteet
-------

1. ↑  .NET Blog *.NET Blog*. Viitattu 21.8.2015.
2. ↑
3. ↑
4. ↑
5. ↑
6. ↑
7. ↑
8. ↑
9. ↑
10. ↑
11. ↑
12. ↑  dotnet/corefx *GitHub*. Viitattu 21.8.2015.
13. ↑
14. ↑

.NET Framework

|  |  |
| --- | --- |
| Arkkitehtuuri: | 
* Common Language Infrastructure
* .NET assembly
* .NET metadata
* Base Class Library

 |
| Yhteisen kielen perusrakenne: | 
* Common Language Runtime
* Common Type System
* Common Intermediate Language
* Virtual Execution System

 |
| Kielet: | 
* C#
* Visual Basic .NET
* C++/CLI (Managed)
* J#
* JScript .NET
* Windows PowerShell
* IronPython
* F#

 |
| Windows Foundations: | 
* Presentation
* Communication
* Workflow
* CardSpace

 |
| Aiheeseen liittyviä: | 
* Windows Forms
* ASP.NET
* ADO.NET
* .NET Remoting
* XAML

 |
| Muita toteutuksia: | 
* .NET Compact Framework
* .NET Micro Framework
* Shared Source CLI
* Portable.NET
* Mono

 |
| Kehitysympäristöjä: | 
* Visual Studio
* SharpDevelop
* Delphi

 |