Por que o mono é tão controverso?

33

Muitas vezes, quando estou lendo sobre algum programa, seja o GNOME Do ou o Banshee ou qualquer outra coisa, vejo pessoas escrevendo que usam mono - e a implicação é pejorativa. Por que é isso? Esses comentários são feitos por motivos práticos, ideológicos ou algo mais?

Richard
fonte
3
por que ninguém pede a remoção do escritório aberto para implementar as tecnologias da Microsoft (formatos de documento)?
#

Respostas:

36

Ideologicamente

Para alguns, o Mono deve suportar a Microsoft e sua plataforma .Net. Algumas pessoas acreditam que isso é contrário aos objetivos do Ubuntu, ou pelo menos seus próprios objetivos pessoais, e eles querem evitar isso.

Desculpe pelas palavras, mas estou sendo objetivo. A discussão sobre se o Mono realmente faz isso, e mesmo se o suporte à Microsoft é uma coisa boa ou ruim, pertence a outro lugar .

Praticamente

Programas que usam uma máquina virtual (como os escritos em Java e C #) tendem a usar mais memória, na minha experiência, em comparação com equivalentes que não. Essa generalização nem sempre é válida. Embora existam usuários cuja preocupação é válida, as pessoas geralmente se preocupam com o desempenho mais do que o necessário.

Por exemplo, estou usando um laptop com apenas 1 GB de memória: isso costumava ser enorme. A máquina está começando a mostrar sua idade, mas ainda posso executar a maioria das coisas confortavelmente. Os usuários com 4 GB de memória não perceberão quase "devoradores de memória" e devem se concentrar em outras preocupações. (E voltarei aqui em 5 anos e rirei daquele número de 4 GB.)


fonte
4
Bem, o c # não está sendo executado puramente na máquina virtual. Pelo menos não da maneira normal. Ele pode fazer compilação Just in time do byte ao código da máquina, como java, além da compilação antecipada ao código da máquina com exceções (caso normal) e compilação completa da velha escola (no entanto, na maioria das plataformas) . Não é o mesmo que Java ou Parrot nesse sentido. Mais de um híbrido. Por esse motivo, no mundo real, é muito provável que seu código de levantamento pesado de loop interno seja compilado com instruções nativas da máquina em mono.
Stefano Palazzo
1
@stefano: mencionei o uso da memória, não a velocidade de execução. De fato, manter várias cópias do código por perto para que o JIT possa fazer seu trabalho usa mais memória.
3
Não é só isso. O Mono pode muito bem infringir algumas das patentes da Microsoft, o que dá à Microsoft a possibilidade de processar alguém um dia, como a Oracle faz contra o Google por patentes java.
txwikinger
5
Desculpe, mas não há nada na "Promessa da Comunidade" que seja juridicamente vinculativo.
Txwikinger 02/11/10
2
@txwikinger É juridicamente vinculativo, confira a pergunta nesta página. microsoft.com/interop/cp/default.mspx
trampster
16

Algumas pessoas acreditam que a Microsoft detém patentes de software sobre aspectos do .NET e que, como uma implementação do .NET, o Mono viola essas patentes. Assim, essas pessoas acham que o uso do Mono poderia deixar um aberto a processos de patentes.

Suponho que Mono seja tão controverso porque a lei de patentes em geral é controversa. Mas há casos específicos em que as entidades que promovem o Mono fizeram acordos com a Microsoft que se parecem muito com acordos de patentes, o que poderia então fortalecer o argumento da Microsoft sobre a validade de tais patentes. (É claro que a Microsoft não forneceu nenhuma prova de que as patentes existam, mantendo assim um estado de incerteza, assim como com a reivindicação de patentes violadas pelo kernel do linux.) Esses acordos resultam em sentimentos de traição e desconfiança de outras comunidades. membros, porque o contrato parece prejudicar a comunidade como um todo (aumentando o risco de patente percebido) enquanto beneficia a entidade que fez o acordo com a Microsoft. Então, isso leva a outro motivo pelo qual Mono é controverso:

A propósito, devo mencionar que escrevo da perspectiva de um espectador e não tenho conhecimento detalhado ou específico de toda a situação. Tentei permanecer imparcial e evitei nomes próprios para evitar arrastar essa questão para a controvérsia sobre a qual ela pergunta.

Edit: Nos comentários, alguém apontou que a Microsoft tem uma promessa da comunidade de não reivindicar direitos de patente contra implementações do .NET. Mas a promessa tem juridicamente suficiente para que eu não sinta que possa ter certeza de que a promessa fornece proteção hermética sem a contratação de um advogado para analisá-la. Depois de ler, posso pensar em algumas brechas em potencial que poderiam permitir à Microsoft reivindicar direitos de patente sobre o Mono, mas desde a IANAL , não tenho idéia se alguma dessas brechas é legalmente defensável ou apenas o meu mal-entendido sobre o juridico da Microsoft. Portanto, embora a promessa da comunidade seja animadora, certamente não pode acabar com a controvérsia entre a possível responsabilidade de patente de Mono.

Ryan C. Thompson
fonte
3
Essa deve ser a resposta aceita, na verdade, é a única que realmente responde à pergunta. As pessoas hesitam em usar o Mono porque temem ser processadas pela Microsoft.
1
Deve-se mencionar aqui que o Artigo 52 da Convenção Européia de Patentes proíbe especificamente patentes de software "como tal" (Art. 52/2). O que significa que pelo menos cidadãos e organizações nos estados membros da UE estão basicamente a salvo de coisas como a campanha de licenciamento da Microsoft. (esta última declaração está sob forte contenção)
Stefano Palazzo
1
Apesar do art. 52/2 houve reivindicações de patentes de software bem-sucedidas na Europa.
txwikinger
Esta resposta não está completa sem uma discussão sobre a "Promessa da Comunidade" juridicamente vinculativa que protege mono de processos de patentes pela Microsoft.
#
1
@trampster: O CP cobre ECMA 334 e 335 em vez de todo o C #, e como foram publicados em 2006, qualquer coisa nova adicionada ao C # não é explicitamente abordada. Você espera que o Mono fique 5 anos (e crescendo) atrás do .NET para usar o CP?
Fred Nurk 14/05
5

Mono é uma portabilidade aberta do Microsoft .net.

No campo ideológico, isso faz uso de uma tecnologia fechada para tecnologias abertas e que pode não coincidir com alguns ideais do GNU e / ou Linux.

Em termos práticos, o Mono (por enquanto) não oferece suporte a tantas funcionalidades quanto o .NET em sua versão 3.5. No entanto, ele permite programar em C # (e outras linguagens .NET) para Linux, o que eu acho bom e seria impossível sem o Mono.

Popinou
fonte
9
O núcleo básico do .NET é uma tecnologia / padrão aberto (mesmo que a implementação principal da Microsoft não seja aberta, C #, partes básicas da biblioteca padrão e o tempo de execução são publicados como padrões ECMA).
janc
@ Popinou: Nunca tive um problema com os recursos ausentes no 3.5.
@JanC: Partes do Mono (System.Windows.Forms) não fazem parte do padrão ECMA.
Broam 30/10/10
1
Na verdade mono não é uma porta, é uma implementação de software livre desde o início do padrão aberto EMCA. E é coberto por uma "Promessa da Comunidade" juridicamente vinculativa para não processar implementações desse padrão aberto.
#
1
@Broam System.Windows.Forms não está no ubuntu por padrão. E não é exigido por nenhum dos aplicativos mono comuns.
Novinho
5

Como outros já declararam, existem duas razões principais:

1) Ideologia: os usuários não se sentem confortáveis ​​com a ideia de que o Mono é baseado em um produto Microsoft de código fechado. No entanto, o próprio Mono é de código aberto.

2) Patentes: essa costumava ser uma das principais preocupações abordadas pela Microsoft quando aplicaram a Promessa da Comunidade às especificações ECMA 334 e ECMA 335. Infelizmente, uma parcela substancial das pessoas não tem conhecimento disso.

Benjamin Dobell
fonte
4
O argumento é que a promessa da comunidade não é suficiente - não é uma questão de conscientização.
Broam 30/10/10
1

Eu não uso Mono porque

  1. A Microsoft alega violação de IP sem especificar o que está sendo violado e eles se recusaram a esclarecer sobre o Mono, dizendo apenas que os usuários da Novell estão protegidos. Não acredito na promessa da comunidade da Microsoft até que eles façam backup.
  2. O licenciamento mono é complicado. É difícil para um especialista jurídico e muito menos para um usuário comum entender como as peças são licenciadas de maneira diferente. Nada no código aberto é tão complicado de entender.
  3. Miguel de Icaza prometeu, mas não cumpriu sua promessa de lançar o código fonte compatível com ECMA em tempo hábil
  4. o cenário está repleto de empresas que seguiram os padrões da Microsoft porque, para eles, os padrões existem para serem quebrados e manter os outros em desvantagem
  5. não há necessidade ou benefício demonstrável de ter o .NET no Linux, pouco foi portado de outras plataformas e qualquer coisa nativa do Linux poderia ser escrita em outros idiomas
  6. Mono é uma questão desnecessariamente divisória; ele nos distrai e joga nas mãos da Microsoft, mantendo-se longe de questões mais importantes

Eu acho que qualquer pessoa pode e deve usar o Mono, se quiser, mas os usuários que não o desejam não devem usá-lo por padrão.

LinuxCanuck
fonte
Não acredito que a Microsoft tenha alegado violações de pacientes em mono. No entanto, prometeu não processar uma mansão juridicamente vinculativa.
#
mecanismo irreal requer vários pacotes mono; eu acredito, sendo todo de código aberto; um dia, pode ser, eles poderiam ser substituídos por algo sobre o qual pudéssemos ficar tranquilos.
Aquarius Power