MonoЧасть 2. Что такое Mono?

Вторая часть рассказа о технологиях Mono/.Net (первая тут). Описываются юридические вопросы и общая структура проекта.

Mono — проект по созданию полноценного воплощения системы .Net на базе свободного программного обеспечения. В основе проекта лежат спецификации на С# и CLI, переданные Microsoft в организации по стандартизации. Но Mono — это не просто клон .Net, здесь есть свои собственные технологии и библиотеки, которых нет в MS .NET. Цель Mono — помочь в переносе написанных для Windows .Net-программ под Linux и другие ОС.

Компилятор С# и инструментарий Mono предоставляются по лицензии GNU General Public License (GPL), библиотеки исполняющей среды — по лицензии GNU Lesser General Public License (LGPL), а библиотеки классов — по лицензии MIT.

Проект Mono разрабатывается довольно долгое время — с 2001 года, но до сих пор окончательно не ясен правовой статус этого программного продукта. В 2003 г. корпорация Microsoft получила патент США 20030028685, фактически охватывающий весь каркас .NET Framework. И с тех пор ситуация с патентами на С# и CLI остается неоднозначной. Эта причина сдерживает широкое и повсеместное использование платформы.

За реализацию С# и CLI отвечают стандарты ЕСМА-334, ЕСМА-335, наличие которых подразумевает свободу на использование описанного функционала и отсутствие всяческих ограничений (использование на не дискриминационных условиях, не требующих авторских выплат — royalty-free, reasonable, non-discriminatory terms).

Но вышеупомянутые «не дискриминационные условия» нигде не описаны, а неоднократные попытки выяснить этот вопрос (в ЕСМА, в Microsoft и у разработчиков Mono) были безуспешны (возможно, компания Microsoft сознательно затягивала предоставление необходимой информации). В июле 2009 года все же было опубликовано Community Promise (Обещание Сообществу), официально заявляющего отсутствие патентных или иных притязаний на стандартизированные таким образом разработки.

После этого события Mono был разделен на две ветки: одна, занимающаяся реализацией ECMA стандартов и попадающая под действие Community Promise; вторая, реализующая свободные версии ASP.NET, ADO.NET, Winforms и других технологий (которые не были стандартизированы ECMA/ISO). Тем не менее, многие считают, что Community Promise не дает полной гарантии от возможных патентных претензий. Разработчики Mono рекомендуют обходить нестандартизированные API, а на случай изменения лицензии .NET, параллельно разрабатывается API, являющийся полностью собственной разработкой Mono.

Как уже было упомянуто выше, .Net генерирует код, который, теоретически, может исполняться на различных операционных системах. Но на практике совместимость между платформами (Mono и .Net) не полная и использование их на различных операционных системах связана с рядом проблем.

Условно Mono можно разделить на три части — ядро, стек разработки для Mono/Linux и стек компонент Microsoft:
? К компонентам ядра относятся компилятор С# (mcs), виртуальная машина (mono) и библиотеки классов. Эти компоненты основаны на стандартах ЕСМА-334 и ЕСМА-335 и предоставляют соответствующую стандартам свободную версию платформы .Net.
? Стек разработки для Mono/Linux предоставляет инструменты для разработки приложений с использованием различных свободных библиотек. К ним относится: библиотеки для разработки графических интерфейсов пользователя (Gtk#), обертки к OpenGL (Tao Framework) и Mac OS X toolkit (Cocoa#), библиотеки Mozilla для работы с системой рендеринга Gecko (Gecko#), библиотеки Unix, библиотеки для работы с базами данных (Mono. Data), стек компонент безопасности и язык описания XML-схем RelaxNG
? Стек компонент Microsoft предоставляет средства переноса приложений для Windows .NET на Linux-платформу. К этим компонентам относятся ADO.NET, ASP.NET, Windows.Forms и другие.

Копия на xgu.ru
  • +8
  • fog
  • 25 марта 2010, 09:33

Комментарии (12)

Как по заказу Мигель сегодня опубликовал в блоге свои мысли о Microsoft и .Net.
В общем на данный момент Моно — это глючное фигзнаетчто фигзнаетдлячего =)
А можно поинтересоваться — какой у вас имеется опыт программирования под mono?
А можно поинтересоваться — какая мне польза программировать под это нечто? А то под соусом стандартизации наломано таких дров и такие дебри нагорожены, что я сильно сомневаюсь в этом проекте.
какая мне польза программировать под это нечто?
Какая тебе польза программировать под .Net, пускай рассказывает Microsoft. А Mono нужен для тех, кто решил перенести .Net-программы на другие ОС. =)
А ты тут такого понаписал, что я сомневаюсь сильно, что
Mono нужен для тех, кто решил перенести .Net-программы на другие ОС.
какая мне польза программировать под это нечто?
Вам видней;)
Я тоже не вижу пользы для себя в программировании на С++ и что, С++ — «нечто»?
А то под соусом стандартизации наломано таких дров и такие дебри нагорожены
Считаете что для проектов такого уровня стандартизация не нужна? Или вам что-то другое не нравится (архитектура например)? Советую хотя бы посмотреть стандартную библиотеку в mono. Там есть вкусности, которых нет в стандартной библиотеки от MS.
а правда… чем эта платформа лучше чем что-угодно-но-точно-без-патентных-разбирательств?
Например, очень обширной стандартной библиотекой. Или, еще лучше, огромным количеством поддерживаемых языков.
А вообще, лучше сравнивать с конкретными платформами, а то говоря слишком общо тяжело найти области, по которым какая-то платформа неопровержимо лучше остальных. Уж где-то да есть равные, или может даже лучшие.
У меня косяк в своё время был:
Console.Readline немного по-другому работал, по сравнению с реализацией майкрософта(не считывал строки).

А ещё в monoevelop нельзя(или я плохо искал?) создавать winforms. Только Gtk#, который не так очевиден.
Winforms делать можно, правда пока не удобно. Нашел у моно проект, но раньше делал это чем-то другим. Правда тогда та программа работала только под windows, поэтому смысле в ней я не видел.

Ну а Gtk# конечно кому-то удобен (писал на Gtk — проблем вообще не будет), но их модель с итераторами в .Net вообще никаким боком не вписывается. Приходится лепить свои обертки. Так что на мой взгляд, с гуи в моно пока проблемы.
Забыл сказать — никто не мешает писать код winforms самому. Автодополнение и все прелести редактора работают. Так что если есть хорошее воображение...;)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.