Старый пост, но ответ Пупу нуждается в пояснениях и дополнительной информации.
Прежде всего, с момента публикации Poupou Xamarin добавил новую лицензию Community Edition для всего стека Mono / Android / iOS, которая позволяет распространять приложения с закрытым исходным кодом, но эта лицензия ограничена размером двоичных файлов. На практике даже некоторые приложения Hello World выходят за пределы размера двоичного файла, выпущенного сообществом, так что, на мой взгляд, это нереальный вариант по любому практическому определению.
При этом основные библиотеки времени выполнения и библиотеки Mono лицензированы по лицензии LGPL. Это затрудняет выпуск программного обеспечения с закрытым исходным кодом в магазине приложений с использованием монофонической среды выполнения без приобретения коммерческой лицензии у Xamarin, но не невозможно. Согласно моему пониманию, LGPL может предоставить объектные файлы для вашего приложения. Это позволит пользователю повторно связать объектные файлы вашего приложения с другой версией моно среды выполнения, а затем установить связанное приложение на свое устройство. Они по-прежнему будут иметь доступ к объектным файлам, но вы все равно можете держать свой источник закрытым, если хотите. Я не юрист, но я думаю вы можете взимать плату за эти объектные файлы и распространять их только по запросу.
Если вы хотите выпустить приложение с открытым исходным кодом, используя моно, вы будете в состоянии сделать это, потому что вы, конечно, можете выпустить не только объектный код, но и полный исходный код вашего приложения, позволяя пользователям связывать моно с собственными версия вашего приложения и, таким образом, соответствует требованиям LGPL.
Теперь вот проблема. Хотя то, что я сказал выше, верно, это относится ТОЛЬКО к основному моно времени выполнения. Это потому, что ядро моно среды выполнения имеет лицензию с открытым исходным кодом. Вы можете быть удивлены, узнав, что ни одна из специфических для платформы BINDINGS, которые являются библиотеками и инструментами разработчика, которые Xamarin предоставляет для подключения вашего моно-кода .net, скажем, к системным библиотекам пользовательского интерфейса / системы Android и iOS, не имеет открытого источника. совсем. Итак, Mono для Android и MonoTouch (и monomac?) Не являются ни свободными, как в свободе слова, ни бесплатными, как в бесплатном пиве. Они оба на 100% коммерческие продукты. Теперь мне сказали, что вы можете запросить лицензию на совместимость с открытым исходным кодом в частном порядке, но ваш проект с открытым исходным кодом должен быть предварительно одобрен, что означает, что вы не сможете воспользоваться опцией объектного кода для проекта с закрытым исходным кодом, и я не знаю, какие ограничения Xamarin наложил бы на такую лицензию (я подозреваю, что подобные ограничения распространяются на редакцию сообщества).
РЕДАКТИРОВАТЬ: Исправление к вышесказанному - Xamarin не даст вам совместимую лицензию с открытым исходным кодом для проекта с открытым исходным кодом. Вместо этого они предоставят вам (как, например, разработчику, желающему выпустить сборку приложения с открытым исходным кодом в одном из магазинов приложений) бесплатную полную лицензию Xamarin, если они смогут подтвердить, что ваше приложение является законно открытым исходным кодом. Это по-прежнему коммерческая лицензия (для одного разработчика), а не лицензия, совместимая с открытым исходным кодом, поэтому эта лицензия не распространяется на других разработчиков, которые загружают код для вашего проекта и создают его. Им нужно будет приобрести собственную лицензию Xamarin, чтобы опубликовать свою версию приложения с открытым исходным кодом.
Это означает, что, единственный способ воспользоваться опцией объектного кода LGPL для распространения с закрытым исходным кодом (или, действительно, выпустить LGPL-совместимое приложение с открытым исходным кодом без разрешения Xamarin), вам нужно будет написать все привязки вашей платформы, чтобы приложение могло взаимодействовать с системой или пользовательским интерфейсом любым значимым способом. Кошик Датта из ClockworkMod изначально запустил такой проект, по крайней мере, для привязки к Android, перед выпуском 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) с использованием более разрешительноголицензию, то эта гипотетическая версия mono (я называю ее «MonoLibre», когда я мечтаю об этом) может быть встроена в приложение с закрытым исходным кодом бесплатно, без освобождения объектных файлов, с открытым исходным кодом вашего приложения, платой Xamarin чего-либо или необходимостиспросите у Xamarin разрешения на распространение вашего приложения с открытым исходным кодом.Xamarin может продолжать продавать «коммерческую» моно среду выполнения, но MonoLibre может продолжать использовать все те же библиотеки классов и даже тот же компилятор.