Mono — это бесплатная и открытая программная среда , предназначенная для запуска программного обеспечения, созданного для .NET Framework на Linux и других ОС. Первоначально разработанная Ximian , которая была приобретена Novell , она позже была разработана Xamarin , которая была приобретена Microsoft . [4] В августе 2024 года Microsoft передала право собственности на Mono компании WineHQ . [5]
Когда Microsoft впервые анонсировала свой .NET Framework в июне 2000 года, он был описан как «новая платформа, основанная на стандартах Интернета» [6] , а в декабре того же года базовая Common Language Infrastructure была опубликована как открытый стандарт «ECMA-335» [7] , открыв потенциал для независимых реализаций. [8] Мигель де Икаса из Ximian считал, что .NET имеет потенциал для повышения производительности программистов, и начал исследовать, осуществима ли версия для Linux. [9] Понимая, что их небольшая команда не может рассчитывать на создание и поддержку полноценного продукта, они запустили проект Mono с открытым исходным кодом 19 июля 2001 года на конференции O'Reilly .
После трех лет разработки 30 июня 2004 года был выпущен Mono 1.0. [10] Mono эволюционировал от своей первоначальной направленности на платформу разработки для настольных приложений Linux до поддержки широкого спектра архитектур и операционных систем, включая встроенные системы. [11]
Novell приобрела Ximian в 2003 году. После того, как Novell была приобретена Attachmate в апреле 2011 года, Attachmate объявила о сотнях увольнений среди сотрудников Novell, [12] поставив под вопрос будущее Mono. [13] [14]
16 мая 2011 года Мигель де Икаса объявил в своем блоге, что Mono будет продолжать поддерживаться Xamarin , компанией, которую он основал после увольнения из Novell. Первоначальная команда Mono также перешла в новую компанию. Xamarin планировала продолжить работу над Mono и планировала переписать фирменные стеки .NET для iOS и Android с нуля, поскольку в то время Novell все еще владела MonoTouch и Mono для Android. [15] После этого объявления будущее проекта было поставлено под сомнение, поскольку MonoTouch и Mono для Android находились в прямой конкуренции с существующими коммерческими предложениями, которые теперь принадлежат Attachmate , и учитывая, что команде Xamarin будет трудно доказать, что они не использовали технологии, которые они ранее разработали, когда они были наняты Novell для той же работы. [16] Однако в июле 2011 года Novell, теперь дочерняя компания Attachmate, и Xamarin объявили, что предоставили бессрочную лицензию Xamarin на Mono, MonoTouch и Mono для Android, которая официально взяла на себя управление проектом. [17] [18]
24 февраля 2016 года Microsoft объявила о подписании окончательного соглашения о приобретении Xamarin. [19]
27 августа 2024 года Microsoft передала право собственности на Mono компании WineHQ, команде разработчиков Wine , совместимого с Windows уровня. [5]
Текущая версия Mono — 6.12.0 (по состоянию на июнь 2024 г. [update]). Эта версия предоставляет основной API .NET Framework и поддержку Visual Basic.NET и C# 7.0. LINQ to Objects , XML и SQL являются частью дистрибутива. Windows Forms 2.0 также поддерживается, но не разрабатывается активно, и поэтому его поддержка в Mono неполна. [20] Версия 4.0 была первой версией, которая включает оригинальный исходный код Microsoft, выпущенный Microsoft как часть проекта .NET Core .
По состоянию на 14 января 2021 года Mono полностью поддерживает все функции .NET 4.7, за исключением Windows Presentation Foundation (WPF) (который команда Mono не планирует поддерживать из-за объема необходимой для этого работы) [20] и Windows Workflow Foundation (WF), а также с ограниченной поддержкой Windows Communication Foundation (WCF) и асинхронного стека ASP.NET. Однако System.Web и WCF являются кандидатами на «почти немедленное» портирование из исходного кода .NET обратно в Mono. [21] Некоторые недостающие части .NET Framework находятся в стадии разработки в экспериментальном подпроекте Mono под названием Olive. [22]
Проект Mono также создал компилятор Visual Basic .NET и среду выполнения, предназначенную для запуска приложений VB.NET. В настоящее время ее разрабатывает Рольф Бьярне Квинге.
Реализация Microsoft Silverlight с открытым исходным кодом , называемая Moonlight , была включена с Mono 1.9. [23] Moonlight 1.0, поддерживающая API Silverlight 1.0, была выпущена 20 января 2009 года. Moonlight 2.0 поддерживает Silverlight 2.0 и некоторые функции Silverlight 3.0. [24] Предварительный выпуск Moonlight 3.0 был анонсирован в феврале 2010 года и содержит обновления поддержки Silverlight 3. [25]
Проект Moonlight был заброшен 29 мая 2012 года. [26] По словам Мигеля, судьбу проекта решили два фактора: Microsoft добавила «искусственные ограничения», которые «сделали его бесполезным для программирования на десктопе», и технология не получила достаточной поддержки в Интернете. Кроме того, сам Silverlight был объявлен устаревшим Microsoft к 2012 году.
Моно состоит из трех групп компонентов:
Основные компоненты включают компилятор C#, виртуальную машину для Common Language Infrastructure и основные библиотеки классов. Эти компоненты основаны на стандартах Ecma-334 и Ecma-335 , [27] что позволяет Mono предоставлять соответствующую стандартам, бесплатную и открытую виртуальную машину CLI . Microsoft выпустила заявление, которое охватывает оба стандарта в рамках своей лицензии Community Promise . [28]
Стек разработки Mono/Linux/GNOME предоставляет инструменты для разработки приложений с использованием существующего GNOME и бесплатных и открытых библиотек. К ним относятся: Gtk# для разработки графического пользовательского интерфейса (GUI), библиотеки Mozilla для работы с движком рендеринга Gecko , библиотеки интеграции Unix (Mono.Posix), библиотеки подключения к базам данных, стек безопасности и язык XML-схем RelaxNG . Gtk# позволяет приложениям Mono интегрироваться в рабочий стол Gnome как собственные приложения. Библиотеки баз данных обеспечивают подключение к объектно-реляционной базе данных db4o , Firebird , Microsoft SQL Server (MSSQL), MySQL , Open Database Connectivity (ODBC), Oracle , PostgreSQL , SQLite и многим другим. Проект Mono отслеживает разработку компонентов базы данных на своем веб-сайте. [29]
Стек совместимости Microsoft предоставляет путь для переноса приложений Windows .NET на Linux . Эта группа компонентов включает ADO.NET , ASP.NET и Windows Forms , среди прочих. Поскольку эти компоненты не охватываются стандартами Ecma , некоторые из них остаются предметом патентных страхов и опасений.
Основные компоненты Mono включают в себя:
Среда выполнения Mono содержит механизм выполнения кода, который транслирует байт-коды ECMA CIL в машинный код и поддерживает ряд процессоров: ARM , MIPS (только в 32-разрядном режиме), SPARC , PowerPC , z/Architecture , IA-32 , x86-64 и IA-64 для 64-разрядных режимов.
Генератор кода доступен в трех режимах:
Начиная с Mono 2.6, можно настроить Mono на использование LLVM в качестве движка генерации кода вместо собственного движка генерации кода Mono. Это полезно для высокопроизводительных вычислительных нагрузок и других ситуаций, когда производительность выполнения важнее производительности запуска.
Начиная с Mono 2.7 preview, больше нет необходимости выбирать один движок вместо другого во время конфигурации. Движок генерации кода можно выбрать при запуске с помощью аргументов командной строки --llvm
или --nollvm
, и по умолчанию используется быстрозапускающийся движок генерации кода Mono.
Начиная с Mono 5.18, поддержка LLVM является опцией конфигурации по умолчанию. Предыдущие версии требовали специального форка LLVM, но теперь mono может вернуться к своему собственному генератору кода, когда сталкивается с чем-то, что не обрабатывается LLVM. [30]
Начиная с Mono 2.8, среда выполнения Mono поставляется с двумя сборщиками мусора : сборщиком поколений и консервативным сборщиком мусора Boehm–Demers–Weiser . Сборщик мусора Boehm может вызывать утечки памяти в определенных классах приложений, что делает его непригодным для некоторых долго работающих серверных приложений. [31] [32] Mono перешла на Simple Generation GC (SGen-GC) в качестве сборщика по умолчанию в версии 3.1.1.
Сборщик мусора SGen имеет много преимуществ по сравнению с традиционным консервативным сканером. Он использует сборку мусора поколений , при которой новые объекты выделяются из питомника, во время цикла сборки мусора все выжившие объекты переносятся в пул памяти старого поколения. Идея заключается в том, что многие объекты являются временными и могут быть быстро собраны, и только несколько объектов являются долгосрочными объектами, которые живут в течение всей жизни приложения. Для повышения производительности этот сборщик назначает пулы памяти каждому потоку, чтобы потоки могли выделять новые блоки памяти без необходимости координировать действия с другими потоками. Миграция объектов из питомника в старое поколение выполняется путем копирования данных из питомника в пул старого поколения и обновления любых живых указателей, которые указывают на данные, чтобы они указывали на новое местоположение. Это может быть затратно для больших объектов, поэтому SGen от Mono использует отдельный пул памяти для больших объектов (раздел больших объектов) и использует алгоритм пометки и очистки для этих объектов. [31]
Библиотека классов предоставляет полный набор возможностей для разработки приложений. Они в основном написаны на C#, но благодаря спецификации Common Language они могут использоваться любым языком .NET. Библиотека классов структурирована в пространства имен и развернута в общих библиотеках, известных как сборки. Говоря о .NET Framework, мы в первую очередь имеем в виду эту библиотеку классов. [33]
Пространства имен — это механизм для логической группировки схожих классов в иерархическую структуру. Это предотвращает конфликты имен. Структура реализуется с использованием слов, разделенных точками, где наиболее распространенным пространством имен верхнего уровня является System, например System.IO и System.Net. Существуют также другие пространства имен верхнего уровня, например Accessibility и Windows. Пользователь может определить пространство имен, поместив элементы внутрь блока пространства имен.
Сборки — это физическая упаковка библиотек классов. Это файлы .dll, как и (но не путать) разделяемые библиотеки Win32. Примерами сборок являются mscorlib.dll, System.dll, System.Data.dll и Accessibility.dll. Пространства имен часто распределяются между несколькими сборками, и одна сборка может состоять из нескольких файлов.
Common Language Infrastructure (CLI), реализованная Common Language Runtime (CLR) , реализуется исполняемым файлом Mono. Среда выполнения компилирует и выполняет приложения .NET. Common Language Infrastructure определяется стандартом ECMA. [27] Чтобы запустить приложение, необходимо вызвать среду выполнения с соответствующими параметрами.
Спецификация Common Language (CLS) указана в главе 6 ECMA-335 и определяет интерфейс CLI, например соглашения, такие как базовые типы для Enum. Компилятор Mono генерирует образ, который соответствует CLS. Это Common Intermediate Language. Среда выполнения Mono берет этот образ и запускает его. Стандарт ECMA формально определяет библиотеку, которая соответствует CLS, как фреймворк.
В родном приложении .NET/Mono весь код управляется ; то есть он регулируется стилем управления памятью и потокобезопасностью CLI. Другие приложения .NET или Mono могут использовать устаревший код, который называется неуправляемым, используя библиотеки System.Runtime.InteropServices для создания привязок C#. Многие библиотеки, которые поставляются с Mono, используют эту функцию CLI, например Gtk# .
Mono внес новшества в некоторые области, внедрив новые расширения в основные спецификации C# и CLI:
Кроме того, Mono доступен на различных операционных системах и архитектурах. [40]
Windows 7, Windows 8, Windows 8.1, Windows 10, macOS или Linux
Несколько проектов расширяют Mono и позволяют разработчикам использовать его в своей среде разработки. Эти проекты включают:
Кроссплатформенность:
macOS:
Мобильные платформы:
Окна:
У Microsoft есть версия .NET 2.0, доступная только для Windows XP , которая называется Shared Source CLI (Rotor) . Лицензия Microsoft на общий исходный код может оказаться недостаточной для нужд сообщества (она явно запрещает коммерческое использование).
Проект Portable.NET , закрытый Фондом свободного программного обеспечения . [44]
MonoDevelop — это бесплатная интегрированная среда разработки, в первую очередь разработанная для C# и других языков .NET, таких как Nemerle , Boo и Java (через IKVM.NET ), хотя она также поддерживает такие языки, как C , C++ , Python и Vala . MonoDevelop изначально был портом SharpDevelop на Gtk#, но с тех пор он развился, чтобы удовлетворить потребности разработчиков Mono. IDE включает в себя управление классами, встроенную справку, автодополнение кода, Stetic (дизайнер графического интерфейса), поддержку проектов и встроенный отладчик.
Браузер MonoDoc обеспечивает доступ к документации API и примерам кода. Браузер документации использует управление контентом в стиле вики, что позволяет разработчикам редактировать и улучшать документацию.
Xamarin.iOS и Xamarin.Android, оба разработанные Xamarin , являются реализациями Mono для iPhone и смартфонов на базе Android . Ранее доступная только для коммерческого лицензирования, [45] после приобретения Microsoft Xamarin в 2016 году, сама среда выполнения Mono была перелицензирована под лицензией MIT [46] и как Xamarin.iOS, так и Xamarin.Android стали бесплатными и с открытым исходным кодом. [47]
Xamarin.iOS (ранее называвшаяся MonoTouch) — это библиотека, которая позволяет разработчикам создавать приложения на основе C# и .NET, которые работают на устройствах iPhone, iPod и iPad. Она основана на фреймворке Mono и разработана совместно с Novell. В отличие от приложений Mono, «приложения» Xamarin.iOS компилируются в машинный код, предназначенный специально для Apple iPhone и iPad . [48] Это необходимо, поскольку ядро iOS не позволяет компиляторам JIT выполняться на устройстве.
Стек Xamarin.iOS состоит из:
В качестве основной среды разработки используется Xamarin Studio, однако были написаны дополнительные ссылки на Xcode и симулятор iOS.
С апреля по начало сентября 2010 года будущее MonoTouch было поставлено под сомнение, поскольку Apple ввела новые условия для разработчиков iPhone, которые, по-видимому, запрещают им разрабатывать на языках, отличных от C, C++ и Objective-C , а также использовать промежуточный слой между платформой iOS и приложениями iPhone. Это сделало будущее MonoTouch и других технологий, таких как Unity , неопределенным. [49] Затем, в сентябре 2010 года, Apple отменила это ограничение, заявив, что они ослабляют ограничения языка, которые они ввели ранее в том году. [50] [51]
Xamarin.Android (ранее известный как Mono для Android), изначально разработанный Novell и продолженный Xamarin , является запатентованной [ требуется ссылка ] [68] реализацией Mono для смартфонов на базе Android . [69] [70] [71] Впервые был выпущен 6 апреля 2011 года. [72] Mono для Android был разработан, чтобы позволить разработчикам проще писать кроссплатформенные приложения, которые будут работать на всех мобильных платформах. [73] В интервью H-Online Мигель де Икаса заявил: «Наша цель — позволить разработчикам повторно использовать свой движок и код бизнес-логики на всех мобильных платформах и заменить код пользовательского интерфейса на API, специфичный для платформы». [74]
В августе 2010 года представитель Microsoft Том Ханрахан из Центра технологий с открытым исходным кодом Microsoft заявил, ссылаясь на иск, поданный Oracle против Google из-за использования Android Java, что «Такого рода действия, которые Oracle предпринимает против Google из-за Java, не будут иметь место. Если бы порт .NET на Android осуществлялся через Mono, он подпадал бы под Соглашение Microsoft Community Promise ». [75] [76]
Стек Xamarin.Android состоит из следующих компонентов:
Cocoa# (также известный как CocoaSharp) был мостовым фреймворком для Mac OS X , который позволял приложениям, разработанным с использованием среды выполнения Mono, получать доступ к API Cocoa . Первоначально он был выпущен 12 августа 2004 года [78] и был включен в дистрибутив Mono, начиная с версии 1.0.6, выпущенной 18 февраля 2005 года. [ требуется ссылка ] Он не развивался с 2008 года [ требуется ссылка ] и в настоящее время устарел. [79]
Monobjc был заменой CocoaSharp. Он позволяет разработчикам .NET использовать большую часть API Mac OS X, включая Cocoa, без собственного кода, при этом сохраняя собственный пользовательский интерфейс. [ необходима цитата ]
Xamarin.Mac — это библиотека, которая позволяет разработчикам запускать приложения .NET и C# на Mac . [80]
Mono имеет двойную лицензию от Xamarin, подобно другим продуктам, таким как Qt и Mozilla Application Suite . Компилятор и инструменты Mono C# выпускаются под лицензией GNU General Public License (только GPLv2) (начиная с версии 2.0 Mono, исходный код компилятора Mono C# также доступен под лицензией MIT X11 License ), [81] библиотеки времени выполнения под лицензией GNU Lesser General Public License (только LGPLv2), а библиотеки классов под лицензией MIT License . Все они являются лицензиями свободного программного обеспечения и программного обеспечения с открытым исходным кодом , и, следовательно, Mono является свободным программным обеспечением с открытым исходным кодом .
Лицензия компилятора C# была изменена с GPL на лицензию MIT X11 [82], чтобы разрешить повторное использование кода компилятора в некоторых случаях, когда GPL это запрещала:
18 марта 2016 года приобретение Xamarin корпорацией Microsoft было официально закрыто. [83] 31 марта 2016 года на конференции Microsoft Build компания Microsoft объявила , что полностью повторно лицензирует Mono по лицензии MIT даже в тех случаях, когда ранее требовалась коммерческая лицензия, [84] и заявила, что не будет заявлять о каких-либо «применимых патентах» против сторон, которые «используют, продают, предлагают для продажи, импортируют или распространяют Mono». [85] [86] Также было объявлено, что Xamarin внесла проект Mono в .NET Foundation. [85]
6 июля 2009 года Microsoft объявила, что она помещает свои спецификации ECMA 334 и ECMA 335 в свое Community Promise, пообещав, что они не будут отстаивать свои патенты против кого-либо, кто реализует, распространяет или использует альтернативные реализации .NET. [87] Реализация Mono тех компонентов стека .NET, которые не были представлены в ECMA для стандартизации, была источником беспокойства о нарушении патентов на протяжении большей части жизни проекта. [88] В частности, обсуждался вопрос о том, может ли Microsoft уничтожить проект Mono посредством патентных исков. [89]
Базовые технологии, представленные в ECMA, а следовательно, и специфичные для Unix/GNOME части, считаются безопасными, поскольку Microsoft явно поместила стандарты ECMA 334 ( C# ) и ECMA 335 ( CLI ) в Microsoft Community Promise . Проблемы в первую очередь касаются технологий, разработанных Microsoft поверх .NET Framework, таких как ASP.NET , ADO.NET и Windows Forms (см. нестандартизированные пространства имен ), т. е. частей, составляющих стек совместимости Mono с Windows. Эти технологии сегодня [ когда? ] не полностью реализованы в Mono и не требуются для разработки приложений Mono, они просто предназначены для разработчиков и пользователей, которым нужна полная совместимость с системой Windows.
В июне 2009 года Технический совет Ubuntu заявил, что «не видит причин исключать Mono или приложения на его основе из архива или из установочного набора по умолчанию». [90]
Ричард Столлман из Free Software Foundation заявил 2 июня 2009 года, что «[...] мы должны отговаривать людей от написания программ на C#. Поэтому мы не должны включать реализации C# в стандартную установку дистрибутивов GNU/Linux или в их основные способы установки GNOME». [91] 1 июля 2009 года Бретт Смит (также из FSF) заявил, что «патенты Microsoft гораздо опаснее: это единственная крупная софтверная компания, которая объявила себя врагом GNU/Linux и заявила о своем намерении атаковать наше сообщество с помощью патентов», «C# представляет для нас уникальную угрозу» и «The Community Promise ничего не делает, чтобы изменить что-либо из этого». [92]
Руководитель проекта Fedora Пол Фрилдс заявил: «У нас есть серьезные опасения по поводу Mono, и мы продолжим изучать его с нашим юридическим консультантом, чтобы понять, нужны ли какие-либо шаги с нашей стороны», однако «мы не пришли к юридическому заключению, которое было бы достаточно убедительным для нас, чтобы принять решение об исключении Mono». [93]
В ноябре 2011 года на саммите разработчиков Ubuntu разработчики проголосовали за удаление медиаплеера Banshee на основе Mono из стандартной установки Ubuntu, начиная с Ubuntu 12.04 ; хотя в качестве причин были указаны проблемы с производительностью на архитектуре ARM , проблемы с блокировкой в версии GTK+ 3 и то, что, по их мнению, он «не очень хорошо поддерживается», также появились предположения, что на решение также повлияло желание удалить Mono из базового дистрибутива, поскольку оставшиеся программы, зависящие от Mono, gbrainy и Tomboy , также должны были быть удалены. Разработчик Mono Джозеф Майкл Шилдс защищал производительность Banshee на ARM, а также утверждения о том, что Banshee не очень хорошо поддерживается, как «прямое личное оскорбление» одного из его основных участников. [94]Многие программы, охватывающие целый ряд приложений, были разработаны с использованием интерфейса программирования приложений (API) Mono и C#. Некоторые программы, написанные для рабочего стола Linux, включают Banshee , Beagle , F-Spot , Gbrainy , Docky / GNOME Do , MonoTorrent , Pinta и Tomboy . Программа, Logos 5 Bible Study Software (OS X Version) , была написана для MacOS.
Ряд видеоигр, таких как The Sims 3 и Second Life (для их скриптовых языков ), сервер виртуального мира OpenSimulator или игры, созданные на игровых движках Unity или MonoGame , также используют Mono. [95] OpenRA объединяет свои Apple Disk Image и Linux AppImages с Mono, по сути, удаляя почти все зависимости из игры. [96]
Даже если они его не поддерживают, они владеют продуктом, который напрямую конкурирует с будущими предложениями Xamarin. Без какого-либо юридического соглашения между Attachmate и Xamarin, последний столкнулся бы с пугающей перспективой доказательства того, что их новая разработка не использует ни одной из технологий, которые использовала старая. Учитывая, что это на самом деле просто оболочка вокруг собственного API, было бы трудно доказать, что у вас была реализация чистой комнаты, даже для команды, которая не была близко знакома с кодом Attachmate.
Соглашение предоставляет Xamarin широкую бессрочную лицензию на всю интеллектуальную собственность, охватывающую Mono, MonoTouch, Mono для Android и Mono Tools для Visual Studio. Xamarin также будет оказывать техническую поддержку клиентам SUSE, использующим продукты на базе Mono, и возьмет на себя управление проектом сообщества с открытым исходным кодом Mono.
У нас нет планов по созданию WPF. У нас просто нет рабочей силы, чтобы создать реализацию в разумные сроки (...) Для инструментов, которые в основном основаны на OpenGL/DirectX, используйте Windows.Forms, имея в виду, что может потребоваться исправление некоторых ошибок или обходные пути с их стороны, поскольку наша Windows.Forms не разрабатывается активно.
MonoTouch — это коммерческий продукт, основанный на проекте Mono с открытым исходным кодом и лицензируемый на основе индивидуального разработчика.
Сегодня мы объявляем о нашем обязательстве открыть исходный код Xamarin SDK для Android, iOS и Mac по лицензии MIT в ближайшие месяцы
Приложения, созданные с помощью MonoTouch, являются нативными приложениями, неотличимыми от других нативных приложений.
На основе их предложений сегодня мы вносим некоторые важные изменения в нашу лицензию iOS Developer Program в разделах 3.3.1, 3.3.2 и 3.3.9, чтобы ослабить некоторые ограничения, введенные нами ранее в этом году. В частности, мы ослабляем все ограничения на инструменты разработки, используемые для создания приложений iOS, при условии, что полученные приложения не будут загружать какой-либо код. Это должно дать разработчикам необходимую им гибкость, сохраняя при этом необходимую нам безопасность.
С этими новыми терминами двусмысленность исчезает, и любители и энтузиасты C# могут вернуться к использованию MonoTouch. Разработчики, которым нравится сборка мусора и их строго типизированные языки, могут возобновить свою работу.
Это упростит разработчикам создание кроссплатформенных приложений, а также позволит перенести некоторые из существующих приложений, созданных с использованием MonoTouch, на Android.
Наше видение — позволить разработчикам повторно использовать свой движок и код бизнес-логики на всех мобильных платформах и заменить код пользовательского интерфейса на API, специфичный для платформы.
Действия, которые Oracle предпринимает против Google из-за Java, не будут иметь место. Если бы порт .NET на Android осуществлялся через Mono, он подпадал бы под Соглашение Microsoft Community Promise.
14 мая Xamarin анонсировала Mono для Android 4.2.
соответствии с Community Promise компания Microsoft гарантирует, что не будет предъявлять свои Необходимые требования к любому, кто создает, использует, продает, предлагает для продажи, импортирует или распространяет любую Охваченную реализацию в рамках любого типа модели разработки или распространения, включая модели лицензирования с открытым исходным кодом, такие как LGPL или GPL.
В индустрии программного обеспечения принято регистрировать патенты в качестве защиты от судебных разбирательств, а не как намерение вести судебный процесс. Таким образом, само существование патента без заявления о нарушении не является достаточным основанием для исключения из проекта Ubuntu.
Мы не пришли к юридическому выводу, который был бы достаточно хорош для нас, чтобы принять решение об исключении Mono