Mono (ohjelmistokehys)

**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
# C#-kääntäjän (JIT-tulkin)
# Common Language Infrastructuren, siihen perustuvan kielen CIL:n ja CLR:n, Common Language Runtimen
# 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.

Myöhemmin lähdekoodin lisenssi on muuttunut ja eri osat ovat eri lisensseillä, joita ovat MIT-lisenssi, kolmilauseinen BSD-lisenssi ja Apache 2.0 -lisenssi. Lisäksi on erityismaininta koskien Microsoftin patentteja.

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. Elokuussa 2024 projektin kotisivuilla julkaistiin ilmoitus, että Wine-projekti ottaa Monon haltuunsa.

## 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.

Elokuussa 2024 ilmoitettiin Monon ylläpitämisen siirtyvän Wine-projektille. Wine-projektilla on ennestään oma versio Monosta. Maaliskuussa 2025 julkaistussa versiossa 6.14.0 on mukana ARM64-tuki macOS-alustalle.

## 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