Часто, когда я читаю о какой-то программе, будь то GNOME Do или Banshee или что-то еще, я вижу людей, пишущих, что они используют моно - и это отрицательно. Почему это? Эти комментарии сделаны на практической основе, идеологических или что-то еще?
Некоторые считают, что Mono поддерживает Microsoft и ее платформу .Net. Некоторые люди считают, что это противоречит целям Ubuntu или, по крайней мере, их личным целям, и они хотят этого избежать.
Извините за слова покачивания, но я остаюсь объективным. Обсуждение того, действительно ли Mono делает это, и даже является ли поддержка Microsoft хорошей или плохой вещью , принадлежит в другом месте .
Программы, которые используют виртуальную машину (как написано на Java и C #), имеют тенденцию использовать больше памяти, по моему опыту, по сравнению с аналогами, которые не делают. Это обобщение не всегда верно. Хотя есть пользователи, для которых это является серьезной проблемой, люди часто беспокоятся о производительности больше, чем необходимо.
Например, я использую ноутбук только с 1 ГБ памяти: раньше это было огромно. Машина начинает показывать свой возраст, но я все равно могу комфортно управлять большинством вещей. Пользователи с 4 ГБ памяти почти не заметят "скачки памяти" и должны сосредоточиться на других проблемах. (И я вернусь сюда через 5 лет и посмеюсь над этим номером 4 ГБ.)
Как уже говорили другие, есть две основные причины:
1) Идеология: пользователям не нравится идея, что Mono основан на продукте Microsoft с закрытым исходным кодом. Тем не менее, Mono сам с открытым исходным кодом.
2) Патенты. Раньше это было серьезной проблемой, которая с тех пор была решена Microsoft, когда они применили Promise Community к спецификациям ECMA 334 и ECMA 335. К сожалению, значительная часть людей не знает о это.
Я не использую Mono, потому что
Я думаю, что любой может и должен использовать Mono, если он хочет, но пользователи, которые не хотят его, не должны надевать его по умолчанию.
Некоторые люди считают, что Microsoft имеет патенты на программное обеспечение в отношении аспектов .NET, и что, как реализация .NET, Mono нарушает эти патенты. Таким образом, эти люди чувствуют, что использование Mono может оставить открытым для патентных исков.
Я полагаю, что Mono настолько противоречив, потому что патентное право в целом противоречиво. Но есть и конкретные случаи, когда организации, занимающиеся продвижением Mono, заключили с Microsoft соглашения, которые во многом похожи на патентные соглашения, что в дальнейшем может усилить аргумент Microsoft в отношении действительности любых таких патентов. (Конечно, Microsoft фактически не предоставила никаких доказательств того, что патенты существуют, таким образом, сохраняя состояние неопределенности, так же как и в случае их претензий на патенты, нарушенные ядром linux.) Эти соглашения вызывают чувство предательства и недоверия со стороны других сообществ. членов, потому что соглашение, кажется, наносит ущерб сообществу в целом (увеличивая предполагаемый патентный риск), принося пользу организации, заключившей соглашение с Microsoft. Так что это приводит к еще одной причине, по которой Mono является спорным: потому что некоторые из основных сторонников Mono заключили спорные соглашения с Microsoft.
Кстати, я должен упомянуть, что я пишу с точки зрения зрителя, и у меня нет подробных или конкретных знаний о всей ситуации. Я пытался оставаться непредвзятым и в основном избегал имен собственных, чтобы не втягивать этот вопрос в противоречие, о котором он спрашивает.
Редактировать: В комментариях кто-то указал, что у Microsoft есть обещание сообщества не отстаивать патентные права на реализации .NET. Но в обещании достаточно юридического, так что я не могу быть уверенным, что обещание обеспечивает надежную защиту, не нанимая адвоката. Прочитав его, я могу вспомнить некоторые потенциальные лазейки, которые могут позволить Microsoft отстаивать патентные права на Mono, но после IANAL я понятия не имею, являются ли какие-либо из этих лазеек юридически оправданными, или просто мое недопонимание Microsoft легальный. Таким образом, хотя обещание сообщества обнадеживает, оно, конечно, не может положить конец спорам о возможной патентной ответственности Моно.
Mono является открытым портированием Microsoft .net.
На идеологической основе это использует закрытую технологию для открытых технологий, и это может не совпадать с некоторыми идеалами GNU и / или Linux.
С практической точки зрения, Mono (на данный момент) не поддерживает столько функциональных возможностей, как .NET в своей версии 3.5. Тем не менее, он позволяет программировать на C # (и других языках .NET) для Linux, что, на мой взгляд, хорошо и было бы невозможно без Mono.