Моно для iOS / Android Open или Closed? Платные или бесплатные?

Я пытаюсь узнать больше о разработке мобильных / планшетов и, как разработчик .NET, я, естественно, обращается к Mono. Но я смущен – я думал, что Моно был свободным и открытым исходным кодом; Однако все признаки, похоже, указывают на то, что Mono является сделкой с оплатой за игру (https://store.xamarin.com/).

Может кто-то, пожалуйста, помогите мне понять, какой правильный ответ?

Благодаря!

Matt

Обновление (2016/03/31)

  • Mono была повторно лицензирована для MIT ;

  • Xamarin.iOS, Xamarin.Mac и Xamarin.Android SDK идут с открытым исходным кодом ;

Ответ истории

Сначала давайте проясним случай Моно 🙂

Моно бесплатно, как в свободной речи , а не бесплатное пиво . Вы можете получить его бесплатно (то есть без оплаты), поскольку он доступен под лицензиями с открытым исходным кодом, которые позволяют это. Но вы все равно можете заплатить за это (например, люди платили за некоторые версии Mono в дни Novell). Также некоторые люди не могут использовать Mono под бесплатными лицензиями с открытым исходным кодом (например, в качестве игрового движка, где источник недоступен …). В таких случаях необходима коммерческая лицензия от владельцев авторских прав.

Mono для Android – это коммерческий продукт на базе Mono и проданный Xamarin (у которого есть права на лицензию Mono). Он повторно использует много того, что Mono достигло, а также предоставляет гораздо больше возможностей, чтобы разработчики .NET могли использовать свои навыки на платформах Android.

Наконец, оценочные версии Mono для Android бесплатны и полностью функциональны при использовании с эмулятором Android (а не с устройствами). Таким образом, вы все еще можете попробовать, научиться и наслаждаться Mono и Mono для Android, не заплатив ни копейки за Xamarin 🙂

Note: то же самое относится и к MonoTouch, который позволяет вам создавать приложения iPhone / iPad (iOS) на базе .NET с компьютера Mac OSX.

Отказ от ответственности: я работаю на Xamarin

Будучи разработчиком долгого времени .Net (начиная с версии 1.0), я могу сказать вам, что если вы что-то другое, кроме любителя, любые деньги, которые вы тратите на MonoTouch и MonoDroid, будут выплачивать огромные дивиденды за очень короткий срок.

Конечно, есть кривая обучения для пользовательского интерфейса, а внешняя среда управления не так уж и надежна, как и для платформ Windows, но возможность программирования с использованием инфраструктуры .NET (даже если язык C #), Является неописуемым преимуществом и стоит каждой пенни, потраченной на Xamarin.

Мы смогли перенести приложение на 500 000 строк VB.Net, написанное для планшетных ПК и PocketPC на iPad менее чем за 3 месяца, включая поддержку локальной базы данных, взаимодействие с веб-сервисами и т. Д. И это должно занять менее одного месяца, чтобы создать Пользовательский интерфейс для Android теперь, когда у нас есть общий уровень сервиса. В этот момент у нас будет приложение, которое будет иметь аналогичную функциональность в iOS, Android, Windows, Windows Tablet и Windows Phone. Я, конечно, не могу этого сделать с десятками тысяч долларов, которые я трачу в год в экосистеме Microsoft.

Старый пост, но ответ poupou нуждается в уточнении и некоторой дополнительной информации.

Прежде всего, начиная с публикации Poupou, Xamarin добавила новую лицензию Community Edition на весь стек Mono / Android / iOS, который позволяет закрывать исходные дистрибутивы приложений, но эта лицензия ограничивается тем, насколько большими могут быть двоичные файлы. На практике даже некоторые приложения Hello World превышают ограничения размера бинарных файлов сообщества, поэтому, на мой взгляд, это не реальный вариант с помощью какого-либо практического определения.

При этом основные исполняемые библиотеки Mono и библиотеки времени исполнения лицензируются в соответствии с LGPL. Это затрудняет выпуск программного обеспечения с закрытым исходным кодом в хранилище приложений с использованием моно исполнения без покупки коммерческой лицензии от Xamarin, но не невозможно. Один из вариантов, который LGPL позволяет, по моему мнению, предоставить объектные файлы для вашего приложения. Это позволит пользователю повторно связать объектные файлы приложения с другой версией моно исполняемой программы, а затем установить это повторно подключенное приложение на свое устройство. Они все равно будут иметь доступ к объектным файлам, но вы все равно можете сохранить ваш источник закрытым, если хотите. Я не юрист, но я думаю, что вы можете взимать плату за эти объектные файлы и распространять их только по запросу.

Если вы хотите выпустить приложение с открытым исходным кодом с помощью моно, вы бы хорошо сделали это, потому что вы можете, конечно, выпускать не только объектный код, но и полный источник вашего приложения, позволяя пользователям переводить моно в свою собственную версию вашего Приложения и, таким образом, отвечают требованиям LGPL.

Теперь вот проблема. Хотя то, что я сказал выше, верно, оно ТОЛЬКО относится к основной среде исполнения. Это связано с тем, что у ядра mono runtime есть лицензия с открытым исходным кодом. Вы можете быть удивлены, узнав, что ни одна из специфичных для платформы BINDINGS, которые являются библиотеками и инструментами разработчика, которые Xamarin обеспечивает для подключения вашего моно-кода .net, например, к пользовательским интерфейсам UI / системных библиотек android и iOS, являются open source вообще. Итак, Mono для Android и MonoTouch (и monomac?) Не являются ни свободными, ни свободными, ни бесплатными, как в бесплатном пиве. Они также являются 100% коммерческими продуктами. Теперь мне говорят, что вы можете запросить лицензию на совместимость с открытым исходным кодом в частном порядке, но ваш проект с открытым исходным кодом должен быть предварительно одобрен, что означает, что вы не сможете воспользоваться опцией объектного кода для проекта с закрытым исходным кодом, а я Не знаю, какие ограничения Xamarin поместили бы на такую ​​лицензию (я подозреваю подобные ограничения для издания сообщества).

EDIT: Исправление к вышеизложенному – Xamarin не даст вам совместимую с открытым исходным кодом лицензию для проекта с открытым исходным кодом. Вместо этого они предоставят вам (как разработчику, желающему выпустить сборку приложения с открытым исходным кодом в одном из магазинов приложений), бесплатную полную лицензию Xamarin, если они смогут проверить, что ваше приложение является законным с открытым исходным кодом. Это все еще коммерческая лицензия (для одного разработчика), а не совместимая с открытым исходным кодом лицензия, поэтому эта лицензия не распространяется на других разработчиков, которые загружают код для вашего проекта и создают его. Им нужно будет приобрести собственную лицензию Xamarin, чтобы опубликовать свою версию приложения с открытым исходным кодом.

Это означает, что единственный способ воспользоваться опцией объектного кода LGPL для распространения с закрытым исходным кодом (или, действительно, выпустить приложение с открытым исходным кодом LGPL без разрешения Xamarin), вам нужно будет написать всю свою собственную платформу Привязки, чтобы ваше приложение могло взаимодействовать с системой или пользовательским интерфейсом каким-либо значимым образом. Koushik Dutta, от ClockworkMod, первоначально начал такой проект, по крайней мере, для привязок к андроидам, до выхода Xamarin для Mono для Android. Он отказался от проекта после выпуска Xamarin, но код по-прежнему доступен здесь: https://github.com/koush/androidmono

Если бы кто-то создавал набор привязок android / iOS для Mono и выпускал их под разрешительной лицензией с открытым исходным кодом, такой как MIT / X11, тогда приложения могли обойти Xamarin и выпускать приложения под опцией объектного файла для соответствия LGPL (или просто выпустить код , Если это приложение с открытым исходным кодом).

Переход на один шаг GIANT далее – если вы посмотрите на основную разбивку на монографию, вы заметите, что только лицензионная версия ядра и ее библиотеки лицензируются под LGPL. Почти все библиотеки классов уже используют разрешительную лицензию, такую ​​как MIT / X11, или другую форму Apache или MS-PL. Это означает, что если гипотетически, помимо создания каких-либо разрешительных привязок с открытым исходным кодом для android / iOS, кто-то должен был начать с нуля и переписать основные моно исполняемые и исполняемые библиотеки (все части LGPL), используя более разрешительные Лицензию, то гипотетическая версия моно (я называю это «MonoLibre», когда я мечтаю об этом) может быть встроена в приложение с закрытым исходным кодом бесплатно, не выпуская объектные файлы, открывать источники вашего приложения, оплачивать Xamarin что угодно или иметь Попросите Xamarin получить разрешение на распространение вашего приложения с открытым исходным кодом. Xamarin может продолжать продавать «коммерциализованную» моно исполняемую среду, но MonoLibre может продолжать использовать все те же библиотеки классов и даже тот же самый компилятор.

Моно бесплатно. Это не значит, что все написанное с помощью моно бесплатно. Как и для mono для android. Кто-то нашел время, чтобы написать программное обеспечение, которое делает моно работу с Android. Просто потому, что он написан в моно, это не значит, что они должны делиться им бесплатно. Единственное, что им нужно поделиться, это любые изменения, внесенные в моно . Просто потому, что андроид является бесплатным и открытым, не означает, что я не могу создавать приложения и требовать, чтобы люди покупали их, чтобы использовать их.

Прошло некоторое время с тех пор, как эти вопросы были заданы впервые, но я столкнулся с полностью открытым исходным кодом под названием Monocross http://monocross.net/

Не использовал его, поэтому я не знаю, насколько он хорош.