Почему моно так спорно?

33

Часто, когда я читаю о какой-то программе, будь то GNOME Do или Banshee или что-то еще, я вижу людей, пишущих, что они используют моно - и это уничижительно. Почему это? Эти комментарии сделаны на практической основе, идеологических или что-то еще?

Ричард
источник
3
почему никто не призывает к удалению открытого офиса, поскольку он внедряет технологии Microsoft (форматы документов)?
трампстер

Ответы:

36

идеологически

Предполагается, что Mono поддерживает Microsoft и ее платформу .Net. Некоторые люди считают, что это противоречит целям Ubuntu или, по крайней мере, их личным целям, и они хотят этого избежать.

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

Практически

Программы, которые используют виртуальную машину (как написано на Java и C #), по моему опыту, имеют тенденцию использовать больше памяти по сравнению с аналогами, которые этого не делают. Это обобщение не всегда верно. Хотя есть пользователи, для которых это является серьезной проблемой, люди часто беспокоятся о производительности больше, чем необходимо.

Например, я использую ноутбук только с 1 ГБ памяти: раньше это было огромно. Машина начинает показывать свой возраст, но я все равно могу комфортно управлять большинством вещей. Пользователи с 4 ГБ памяти почти не заметят "скачки памяти" и должны сосредоточиться на других проблемах. (И я вернусь сюда через 5 лет и посмеюсь над этим номером 4 ГБ.)


источник
4
Ну, c # не работает чисто на виртуальной машине. По крайней мере, не в обычном порядке. Он может выполнять своевременную компиляцию из байтового кода в машинный код, например, Java, плюс преждевременную компиляцию в машинный код с исключениями (нормальный случай) и полную компиляцию старой школы (однако не на большинстве платформ) , В этом смысле это не то же самое, что Java или Parrot. Больше гибрида. По этой причине в реальном мире очень вероятно, что ваш критический тяжелый код внутреннего цикла будет скомпилирован с собственными машинными инструкциями в моно.
Стефано Палаццо
1
@stefano: я упомянул использование памяти, а не скорость выполнения. Фактически, хранение нескольких копий кода, чтобы JIT мог выполнять свою работу, использует больше памяти.
3
Это не только это. Mono вполне может нарушить некоторые патенты Microsoft, что дает Microsoft возможность подать в суд на кого-то в один прекрасный день, как Oracle против Google по патентам Java.
txwikinger
5
Извините, но в «Обещании сообщества» нет ничего юридически обязательного.
txwikinger
2
@txwikinger Это юридически обязательный вопрос на этой странице. microsoft.com/interop/cp/default.mspx
trampster
16

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

Я полагаю, что Mono настолько противоречив, потому что патентное право в целом противоречиво. Но есть и конкретные случаи, когда организации, занимающиеся продвижением Mono, заключили соглашения с Microsoft, которые во многом похожи на патентные соглашения, что может послужить подтверждением аргумента Microsoft о действительности любых таких патентов. (Конечно, Microsoft фактически не предоставила никаких доказательств того, что патенты существуют, таким образом, сохраняя состояние неопределенности, так же как и в случае их претензий на патенты, нарушенные ядром Linux.) Эти соглашения приводят к чувствам предательства и недоверия со стороны других сообществ. членов, потому что соглашение, кажется, наносит ущерб сообществу в целом (увеличивая воспринимаемый патентный риск), принося пользу организации, заключившей соглашение с Microsoft. Так что это приводит к другой причине, что Mono является спорным:

Кстати, я должен упомянуть, что я пишу с точки зрения зрителя, и у меня нет подробных или конкретных знаний о всей ситуации. Я пытался оставаться непредвзятым и в основном избегал имен собственных, чтобы не втягивать этот вопрос в противоречие, о котором он спрашивает.

Редактировать: В комментариях кто-то указал, что у Microsoft есть обещание сообщества не отстаивать патентные права на реализации .NET. Но обещание имеет достаточно юридического смысла, поэтому я не уверен, что действительно могу гарантировать, что это обещание обеспечивает герметичную защиту, не нанимая адвоката для его рассмотрения. Прочитав его, я могу вспомнить некоторые потенциальные лазейки, которые могут позволить Microsoft отстаивать патентные права на Mono, но после IANAL я понятия не имею, являются ли какие-либо из этих лазеек юридически оправданными, или просто мое неправильное понимание юридического права Microsoft. Таким образом, хотя обещание сообщества обнадеживает, оно, конечно, не может положить конец спорам о возможной патентной ответственности Mono.

Райан К. Томпсон
источник
3
Это должен быть принятый ответ на самом деле, он единственный, который действительно отвечает на вопрос. Люди не решаются использовать Mono, потому что боятся, что Microsoft подаст в суд.
1
Здесь следует упомянуть, что статья 52 Европейской патентной конвенции конкретно запрещает патенты на программное обеспечение «как таковое» (ст. 52/2). Это означает, что по крайней мере граждане и организации в государствах-членах ЕС в основном защищены от таких вещей, как лицензионная кампания Microsoft. (это последнее утверждение подвергается серьезному утверждению)
Стефано Палаццо
1
Несмотря на ст. 52/2 были успешные заявки на патент программного обеспечения в Европе.
txwikinger
Этот ответ не является полным без обсуждения юридически обязывающего «Обещания сообщества», которое защищает моно от патентных исков от Microsoft.
трампстер
1
@trampster: CP охватывает ECMA 334 и 335, а не все C #, и, поскольку они были опубликованы в 2006 году, все новое, добавленное в C #, явно не рассматривается. Ожидаете ли вы, что Mono останется на 5 лет (и будет расти) позади .NET, чтобы использовать CP?
Фред Нурк
5

Mono является открытым портированием Microsoft .net.

На идеологическом уровне это использует закрытую технологию для открытых технологий, которая может не совпадать с некоторыми идеалами GNU и / или Linux.

На практике Mono не поддерживает (пока) столько функций, сколько в .NET в версии 3.5. Тем не менее, он позволяет программировать на C # (и других языках .NET) для Linux, что, на мой взгляд, хорошо и было бы невозможно без Mono.

Popinou
источник
9
Базовое ядро ​​.NET - это открытая технология / стандарт (даже если основная реализация Microsoft не открыта, C #, основные части стандартной библиотеки и среда выполнения публикуются как стандарты ECMA).
Янв
@Popinou: У меня никогда не было проблем с отсутствующими функциями в 3.5.
@JanC: части Mono (System.Windows.Forms) не являются частью стандарта ECMA.
Broam
1
На самом деле моно - это не порт, это основанная на свободном программном обеспечении реализация открытого стандарта EMCA. И подпадает под действие юридически обязывающего «Обещания сообщества», чтобы не подавать в суд на реализацию этого открытого стандарта.
трампстер
1
@Broam System.Windows.Forms по умолчанию отсутствует в Ubuntu. И не требуется ни одним из распространенных моно приложений.
бродяга
5

Как утверждали другие, есть две основные причины:

1) Идеология: пользователям не нравится идея, что Mono основан на продукте Microsoft с закрытым исходным кодом. Тем не менее, Mono сам с открытым исходным кодом.

2) Патенты. Раньше это было серьезной проблемой, которая с тех пор решалась Microsoft, когда они применяли Обещание сообщества к спецификациям ECMA 334 и ECMA 335. К сожалению, значительная часть людей не знает об этом.

Бенджамин Добелл
источник
4
Аргумент в том, что обещания сообщества недостаточно - это не вопрос осведомленности.
Broam
1

Я не использую моно, потому что

  1. Microsoft заявляет о нарушении прав интеллектуальной собственности, не уточняя, что именно нарушается, и они отказались дать разъяснения по Mono, лишь заявив, что пользователи Novell защищены. Я не верю обещаниям сообщества Microsoft, пока они не подкрепят его действиями.
  2. Моно лицензирование сложное. Юридическому эксперту трудно, не говоря уже о обычном пользователе, понять, как части лицензируются по-разному. Ничто в открытом исходном коде не так сложно понять.
  3. Мигель де Иказа пообещал, но не выполнил свое обещание своевременно выпустить совместимый с ECMA исходный код
  4. ландшафт усеян компаниями, которые следуют стандартам Microsoft, потому что для них стандарты существуют, чтобы их нарушать и держать других в невыгодном положении.
  5. Нет необходимости или очевидной выгоды иметь .NET в Linux, мало что было перенесено с других платформ и все, что является родным для Linux, может быть написано на других языках.
  6. Моно - это бесполезный спор; это отвлекает нас и играет на руку Microsoft, избегая более важных вопросов

Я думаю, что любой может и должен использовать Mono, если он хочет, но пользователи, которые не хотят его, не должны включать его по умолчанию.

LinuxCanuck
источник
Я не верю, что Microsoft когда-либо заявляла о нарушении прав пациента в монофоническом режиме. Однако он пообещал не судиться с юридически обязывающим имением.
трампстер
нереальный движок требует нескольких моно пакетов; Я полагаю, что все это с открытым исходным кодом; однажды, может быть, они могли быть заменены чем-то, о чем мы могли бы оставаться спокойными.
Водолей Сила