#android #.net #mono #xamarin.ios #xamarin.android
#Android #.net #mono #xamarin.ios #xamarin.android
Вопрос:
Я пытаюсь узнать больше о разработке мобильных устройств / планшетов, и, как разработчик .NET, меня, естественно, привлекает Mono. Но я в замешательстве — я думал, что Mono является бесплатным и открытым исходным кодом; однако все признаки, похоже, указывают на то, что Mono является сделкой «с оплатой за игру» (https://store.xamarin.com /).
Может кто-нибудь, пожалуйста, помогите мне понять, какой ответ правильный?
Спасибо!
Мэтт
Ответ №1:
Обновление (2016/03/31)
- Mono был повторно лицензирован для MIT;
- Xamarin.iOS, Xamarin.Mac и Xamarin.Android SDK собираются с открытым исходным кодом;
История ответа
Сначала давайте проясним случай Mono 🙂
Mono бесплатный, как и в случае со свободой слова, а не бесплатным пивом. Вы можете получить его бесплатно (т. Е. Без оплаты), поскольку он доступен по лицензиям с открытым исходным кодом, которые позволяют это. Но вы все равно могли бы заплатить и за это (например, люди платили за некоторые версии Mono во времена Novell). Также некоторые люди не могут использовать Mono по бесплатным лицензиям с открытым исходным кодом (например, в качестве игрового движка, где исходный код недоступен …). В таких случаях требуется коммерческая лицензия от правообладателей.
Mono для Android — это коммерческий продукт, основанный на Mono и продаваемый Xamarin (который имеет права на лицензирование Mono). Он повторно использует многое из того, чего достигла Mono, а также предоставляет гораздо больше возможностей, позволяющих разработчикам .NET использовать свои навыки на платформах Android.
Наконец, ознакомительные версии Mono для Android бесплатны и полностью функциональны при использовании с эмулятором Android (не с устройствами). Таким образом, вы все еще можете пробовать, изучать и наслаждаться Mono и Mono для Android, не платя ни копейки Xamarin 🙂
примечание: то же самое относится и к MonoTouch, который позволяет создавать приложения для iPhone / iPad (iOS) на основе .NET с компьютера Mac OSX.
Отказ от ответственности: я работаю в Xamarin
Комментарии:
1. Библиотеки доступны в одном из LGPL v2 или MIT / X11, поэтому проприетарные игровые движки, вероятно, могут ссылаться на него. Им просто может быть неудобно это делать из-за определенных положений, касающихся обратного проектирования и тому подобного.
2. @MatthewFlaschen да, они могут , лицензия предлагает способы (например, перелинковку) включить практически все, если вы соблюдаете несколько основных правил, но если нет, есть альтернатива
3. Не забывайте Unity, для android / ios большая часть движка — mono.
4. Каков статус ванильного Mono с открытым исходным кодом на Android / iOS? Сколько изменений требуется, чтобы заставить его запускать фрагмент кода C #, не относящийся к пользовательскому интерфейсу, на Android? Очевидно, что привязки пользовательского интерфейса не существуют в версии с открытым исходным кодом, но чего еще не хватает?
5. но если вы хотите просто выполнить некоторый .net-код на Android или ios, без встроенного материала. Что-то, что при необходимости может быть скомпилировано как переносимая библиотека классов. Вам все еще нужен Xamarin для этого? Предположим, у вас есть . чистый серверный код и хотите создать пользовательский интерфейс на основе html. В этом случае вам просто нужны стандартные библиотеки mono, которые в основном бесплатны, верно? Не уверен точно, как все это будет связано вместе в проекте, но мой вопрос остается в силе.
Ответ №2:
Как давний .Разработчик Net (начиная с версии 1.0), я могу сказать вам, что если вы не любитель, любые деньги, которые вы потратите на MonoTouch и MonoDroid, принесут огромные дивиденды в очень краткосрочной перспективе.
Пользовательский интерфейс, безусловно, нуждается в обучении, а среда управления сторонних производителей далеко не так надежна, как для платформ Windows, но возможность программирования против .Net framework (даже если язык C #) — это неописуемое преимущество, и оно стоит каждого пенни, потраченного на Xamarin.
Мы смогли перенести VB на 500 000 строк.Приложение Net, написанное для планшетной ОС и PocketPC для iPad менее чем за 3 месяца, включая поддержку локальной базы данных, взаимодействие с веб-службами и т. Д. И теперь, когда у нас есть общий уровень сервисов, нам потребуется меньше месяца, чтобы создать пользовательский интерфейс для Android. На этом этапе у нас будет приложение, которое будет иметь аналогичную функциональность для iOS, Android, Windows desktop, Windows tablet и Windows Phone. Я, конечно, не могу этого сделать с десятками тысяч долларов, которые я трачу в год в экосистеме Microsoft.
Комментарии:
1. Это не ответ на вопрос. «Это не бесплатно» было бы достаточно. Тем не менее, полезно услышать ваши настоятельные рекомендации.
2. @Ragu: Извините, но вы ошибаетесь; «это не бесплатно» не поможет OP «понять, какой ответ правильный», как они задали в вопросе. Все, что он мог бы сделать, это указать, каким был правильный ответ, не помогая им понять его так, как они просили.
3. Я согласен, что «это не бесплатно» не будет полным ответом. Но этот ответ — скорее рекомендация о том, почему стоит платить, чем разъяснение бизнес-модели MonoTouch / MonoDroid. Может быть, это просто перефразировка.
4. Если я захочу разрабатывать на iOS, Android и Windows Phone, это обойдется мне в 3000 долларов — это действительно принесет дивиденды?
5. @noelicus: только вы можете ответить на этот вопрос. Для нас 3000 долларов — это около 20 часов разработки, поэтому дивиденды были огромными по сравнению с написанием двух разных собственных приложений с нуля и поддержкой двух совершенно разных кодовых баз. Если у вас больше времени, чем денег, и вы не берете плату за свое приложение, то ответ для вас может быть совершенно другим.
Ответ №3:
Старый пост, но ответ пупу требует некоторых разъяснений и некоторой дополнительной информации.
Прежде всего, с момента публикации Poupou Xamarin добавил новую лицензию Community Edition ко всему стеку Mono / Android / iOS, которая позволяет распространять приложения с закрытым исходным кодом, но эта лицензия ограничена тем, насколько большими могут быть двоичные файлы. На практике даже некоторые приложения Hello World превышают ограничения на размер двоичных файлов community edition, поэтому, на мой взгляд, это не реальный вариант по любому практическому определению.
При этом основные библиотеки Mono runtime и runtime лицензированы по LGPL. Это затрудняет выпуск программного обеспечения с закрытым исходным кодом в app Store с использованием среды выполнения mono без покупки коммерческой лицензии у Xamarin, но не делает невозможным. Насколько я понимаю, одним из вариантов, который позволяет LGPL, является предоставление объектных файлов для вашего приложения. Это позволит пользователю повторно связать объектные файлы вашего приложения с другой версией среды выполнения mono, а затем установить это повторно связанное приложение на свое устройство. У них все равно будет доступ к объектным файлам, но вы все равно можете закрыть свой исходный код, если пожелаете. Я не юрист, но я думаю, что вы можете взимать плату за эти объектные файлы и распространять их только по запросу.
Если вы хотите выпустить приложение с открытым исходным кодом, используя mono, у вас будут все возможности для этого, потому что вы, конечно, можете выпустить не только объектный код, но и полный исходный код вашего приложения, что позволит пользователям повторно связать mono с их собственной версией вашего приложения и, таким образом, выполнить требования LGPL.
Теперь вот в чем проблема. Хотя то, что я сказал выше, верно, это относится ТОЛЬКО к основной среде выполнения mono. Это потому, что core mono runtime имеет лицензию с открытым исходным кодом. Вы можете быть удивлены, узнав, что ни одна из ПРИВЯЗОК к конкретной платформе, которые представляют собой библиотеки и инструменты разработчика, предоставляемые Xamarin для подключения вашего кода .net mono, скажем, к пользовательским / системным библиотекам платформы android и iOS, вообще не является открытым исходным кодом. Итак, Mono для Android и MonoTouch (и monomac?) Не являются ни бесплатными, как в free speech, ни бесплатными, как в free beer. Они оба на 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 (или просто выпустить код, если это приложение с открытым исходным кодом).
Если вы сделаете еще один ГИГАНТСКИЙ шаг вперед — если вы посмотрите на разбивку лицензирования core mono, вы заметите, что только среда выполнения core mono и ее библиотеки лицензированы по LGPL. Почти все библиотеки классов уже используют разрешительную лицензию, такую как MIT / X11 или какую-либо форму Apache или MS-PL. Это означает, что если гипотетически, в дополнение к созданию некоторых разрешительных привязок с открытым исходным кодом для android / iOS, кто-то должен был начать с нуля и переписать ядро mono runtime и библиотеки времени выполнения (все LGPL’ed части mono), используя более разрешительную лицензию, то гипотетическая версия mono (я называюон «монолибровый», когда я мечтаю об этом) может быть встроен в приложение с закрытым исходным кодом бесплатно, без выпуска объектных файлов, открытых источников вашего приложения, оплаты Xamarin чего-либо или необходимости запрашивать у Xamarin разрешение на распространение вашего приложения с открытым исходным кодом. Xamarin может продолжать продавать «коммерциализированную» среду выполнения mono, но MonoLibre может продолжать использовать все те же библиотеки классов и даже тот же компилятор.
Комментарии:
1. > «Xamarin не предоставит вам лицензию, совместимую с открытым исходным кодом, для проекта с открытым исходным кодом. Вместо этого они предоставят вам (например, разработчику, желающему выпустить сборку приложения с открытым исходным кодом в одном из магазинов приложений) бесплатную полную лицензию Xamarin, если они смогут убедиться, что ваше приложение законно с открытым исходным кодом «. Не могли бы вы, пожалуйста, рассказать об этом подробнее? Может быть, ссылка для подтверждения? Я заинтересован в этом.
2. Я задал вопрос в списке рассылки mono-dev и получил там ответ. У меня нет прямой ссылки, но вы можете либо выполнить поиск в архивах, либо отправить электронное письмо кому-нибудь из команды напрямую. Последнее желательно — поскольку это не документально оформленное соглашение о лицензировании, с тех пор их политика могла измениться.
3. Многие ребята здесь, похоже, не понимают LGPL и ссылки, вероятно, потому, что ребята, комментирующие здесь, имеют опыт работы с .net. Я некоторое время разрабатывал на C , могу сказать вам, что вы в полной безопасности с LGPL, если LGPL применяется к динамически связанной сборке. Я предполагаю, что это то, что они лицензируют, среда выполнения как DLL (.so в системах nix). Пока кто-то может добавить свою собственную скомпилированную версию, и она все еще работает, вы в безопасности. Конечно, IANAL.
4. @Technik Empire: Я понимаю требования LGPL и проверен как Xamarin, так и фондом свободного программного обеспечения. Критическая часть, которой не хватает, — «пока кто-то может добавить свою собственную скомпилированную версию, и она все еще работает». Это невозможно на iOS, большинстве порталов распространения консольных приложений или на Android для не
5. … или на Android для многих некорневых телефонов. Я бы сказал, что Android, вероятно, самая спорная из современных платформ, но, учитывая требования к подписанию, вам может не повезти с коммерческим программным обеспечением.
Ответ №4:
Сам Mono бесплатный. Это не значит, что все, написанное с помощью mono, бесплатно. Как и в случае с mono для Android. Кто-то нашел время, чтобы написать программное обеспечение, которое позволяет mono работать с Android. То, что он написан на mono, не означает, что они должны делиться им бесплатно. Единственное, чем они должны были бы поделиться, — это любые изменения, внесенные в саму mono. То, что Android является бесплатным и открытым, не означает, что я не могу создавать приложения и требовать, чтобы люди покупали их, чтобы использовать их.
Комментарии:
1. Ну, вы не можете заставить людей покупать их. Но вы можете запретить им использовать их, если они не платят.
2. @MatthewFlaschen достаточно справедливо. Исправлено.
3. Спасибо, Куртис. Это имеет смысл.
4. «Единственное, чем они должны были бы поделиться, это любые изменения, внесенные в саму mono» В данном случае False. Xamarain, авторы MonoTouch и Mono для Android, владеют авторскими правами на Mono. Им не нужно следовать LGPL, поскольку они владеют им и, следовательно, могут делать с ним все, что им заблагорассудится. Если бы кто-то еще захотел сделать то же самое, ему пришлось бы либо следовать LGPL — в этом случае им пришлось бы лицензировать изменения в Mono в соответствии с LGPL-совместимым способом, либо вести переговоры (т. е. оплатите) другую лицензию с помощью Xamarin.
5. Xamarain владеет Mono? Я этого не знал.
Ответ №5:
Прошло некоторое время с тех пор, как этот вопрос был впервые задан, но я наткнулся на полностью открытый вариант с открытым исходным кодом под названием Monocross http://monocross.net /
Не использовал его, поэтому я не знаю, насколько он хорош.
Комментарии:
1. Я не думаю, что это отвечает на вопрос, который задавал ОП.
2. Monocross позволяет создавать MVC-приложения для различных платформ и использует mono. В принципе, если вы хотите использовать его для создания приложения для Android или iOS, применяются те же ограничения. Сам Monocross может быть с открытым исходным кодом и все такое, но вам все равно нужен Xamarin. Android.
3. Я действительно не вижу смысла в монокроссе… для платформ, на которые вы ориентируетесь, по-прежнему требуются лицензии Xamarin…