Моно для iOS / Android Открыто или Закрыто? Платный или бесплатный? - PullRequest
18 голосов
/ 29 октября 2011

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

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

Спасибо!

Мэтт

Ответы [ 5 ]

36 голосов
/ 29 октября 2011

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

История ответа

Сначала давайте разберем случай Mono: -)

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

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

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

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

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

17 голосов
/ 29 октября 2011

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

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

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

11 голосов
/ 29 апреля 2013

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

Прежде всего, с момента публикации 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 может продолжать использовать все те же библиотеки классов и даже тот же компилятор.

6 голосов
/ 29 октября 2011

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

0 голосов
/ 07 марта 2015

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

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

...