¿Por qué es mono tan controvertido?

33

A menudo, cuando leo sobre algún programa, ya sea GNOME Do o Banshee o algo más, veo personas escribiendo que usan mono, y la implicación es peyorativa. ¿Por qué es esto? ¿Se hacen estos comentarios sobre bases prácticas, ideológicas u otra cosa?

Ricardo
fuente
3
¿Por qué nadie pide que se elimine la oficina abierta para implementar las tecnologías de Microsoft (formatos de documentos)?
Trampster

Respuestas:

36

Ideológicamente

Algunos suponen que Mono es compatible con Microsoft y su plataforma .Net. Algunas personas creen que esto es contrario a los objetivos de Ubuntu, o al menos a sus propios objetivos personales, y quieren evitarlo.

Perdón por las palabras de meneo, pero me mantengo objetivo. La discusión sobre si Mono realmente hace esto, e incluso si apoyar a Microsoft es algo bueno o malo, pertenece a otra parte .

Prácticamente

Los programas que usan una máquina virtual (como los que están escritos en Java y C #) tienden a usar más memoria, en mi experiencia, en comparación con los equivalentes que no lo hacen. Esta generalización no siempre es válida. Si bien hay usuarios para los que esto es una preocupación válida, las personas a menudo se preocupan por el rendimiento más de lo necesario.

Por ejemplo, estoy usando una computadora portátil con solo 1 GB de memoria: esto solía ser enorme. La máquina está comenzando a mostrar su edad, pero aún puedo ejecutar la mayoría de las cosas cómodamente. Los usuarios con 4 GB de memoria no notarán los "cerdos de memoria" casi tanto y deberían centrarse en otras preocupaciones. (Y volveré aquí en 5 años y me reiré de ese número de 4 GB).


fuente
44
Bueno, C # no se ejecuta únicamente en la máquina virtual. Al menos no de la manera normal. Puede hacer una compilación Just in time de byte a código de máquina, como java, más una compilación anticipada de código de máquina con excepciones (caso normal) y una compilación completa de la vieja escuela (sin embargo, en la mayoría de las plataformas) . No es lo mismo que Java o Parrot en ese sentido. Más de un híbrido. Por esta razón, en el mundo real, es muy probable que su código crítico de trabajo pesado de compilación interna se compile con instrucciones de máquina nativas en mono.
Stefano Palazzo
1
@stefano: mencioné el uso de memoria, no la velocidad de ejecución. De hecho, mantener varias copias del código para que el JIT pueda hacer su trabajo usa más memoria.
3
No es solo eso. Mono bien podría infringir algunas de las patentes de Microsoft, lo que le da a Microsoft la posibilidad de demandar a alguien algún día como Oracle lo hace contra Google por las patentes de Java.
txwikinger
55
Lo sentimos, pero no hay nada en la "Promesa de la comunidad" que sea legalmente vinculante.
txwikinger el
2
@txwikinger Es legalmente vinculante, consulte la pregunta en esta página. microsoft.com/interop/cp/default.mspx
trampster el
16

Algunas personas creen que Microsoft posee patentes de software sobre aspectos de .NET y que, como implementación de .NET, Mono viola esas patentes. Por lo tanto, estas personas sienten que usar Mono podría dejarlo abierto a demandas de patentes.

Supongo que Mono es tan controvertido porque la ley de patentes en general es controvertida. Pero luego hay casos específicos en los que las entidades que promueven Mono han hecho acuerdos con Microsoft que se parecen mucho a los acuerdos de patentes, lo que podría verse como un refuerzo del argumento de Microsoft para la validez de tales patentes. (Por supuesto, Microsoft en realidad no ha proporcionado ninguna prueba de que las patentes existan, manteniendo así un estado de incertidumbre, al igual que con su reclamo de patentes violadas por el núcleo de Linux). Estos acuerdos generan sentimientos de traición y desconfianza por parte de otra comunidad miembros, porque el acuerdo parece perjudicar a la comunidad en su conjunto (al aumentar el riesgo de patente percibido) al tiempo que beneficia a la entidad que hizo el acuerdo con Microsoft. Eso lleva a otra razón por la que Mono es controvertido:

Por cierto, debo mencionar que escribo desde la perspectiva de un espectador, y no tengo un conocimiento detallado o específico de toda la situación. He tratado de seguir siendo imparcial y he evitado principalmente los nombres propios para evitar arrastrar esta pregunta a la controversia sobre la que pregunta.

Editar: En los comentarios, alguien señaló que Microsoft tiene una promesa de la comunidad de no hacer valer los derechos de patente contra las implementaciones de .NET. Pero la promesa tiene suficiente jerga legal que no siento que realmente pueda estar seguro de que la promesa brinda protección hermética sin contratar a un abogado para que la revise. Después de leerlo, puedo pensar en algunas lagunas potenciales que podrían permitir a Microsoft hacer valer los derechos de patente sobre Mono, pero desde IANAL , no tengo idea de si alguna de estas lagunas es legalmente defendible, o simplemente mi malentendido de la jerga legal de Microsoft. Entonces, aunque la promesa de la comunidad es alentadora, ciertamente no puede poner fin a la controversia sobre la posible responsabilidad de patente de Mono.

Ryan C. Thompson
fuente
3
Esta debería ser la respuesta aceptada realmente, es la única que realmente responde la pregunta. La gente duda en usar Mono porque temen ser demandados por Microsoft.
1
Debe mencionarse aquí que el artículo 52 del Convenio sobre la Patente Europea prohíbe específicamente las patentes de software "como tal" (Art. 52/2). Lo que significa que al menos los ciudadanos y las organizaciones en los estados miembros de la UE están básicamente a salvo de cosas como la campaña de licencias de Microsoft. (esta última declaración está bajo fuerte discusión)
Stefano Palazzo
1
A pesar del art. 52/2 ha habido reclamos exitosos de patentes de software en Europa.
txwikinger
Esta respuesta no está completa sin una discusión sobre la "Promesa comunitaria" legalmente vinculante que protege a mono de las demandas de patentes de microsoft.
Trampster
1
@trampster: El CP cubre ECMA 334 y 335 en lugar de todo C #, y como se publicaron en 2006, cualquier cosa nueva agregada a C # no está cubierta explícitamente. ¿Espera que Mono permanezca 5 años (y siga creciendo) detrás de .NET para usar el CP?
Fred Nurk
5

Mono es un puerto abierto de Microsoft .net.

En el terreno ideológico, esto hace uso de una tecnología cerrada para tecnologías abiertas y que puede no coincidir con algunos ideales de GNU y / o Linux.

En la práctica, Mono no es (por ahora) compatible con tantas funcionalidades como .NET en su versión 3.5. Sin embargo, permite programar en C # (y otros lenguajes .NET) para Linux, lo que creo que es algo bueno y sería imposible sin Mono.

Popinou
fuente
99
El núcleo básico de .NET es una tecnología / estándar abierto (incluso si la implementación principal de Microsoft no está abierta, C #, las partes básicas de la biblioteca estándar y el tiempo de ejecución se publican como estándares ECMA).
JanC
@Popinou: nunca tuve un problema con las funciones faltantes en 3.5.
@ JanC: partes de Mono (System.Windows.Forms) no son parte del estándar ECMA.
Broam
1
En realidad, mono no es un puerto, es una implementación de software libre desde cero del estándar abierto EMCA. Y está cubierto por una "Promesa comunitaria" legalmente vinculante para no demandar implementaciones de ese estándar abierto.
Trampster
1
@Broam System.Windows.Forms no está en ubuntu por defecto. Y no es requerido por ninguna de las aplicaciones mono comunes.
Trampster
5

Como otros han dicho, hay dos razones principales:

1) Ideología: los usuarios no se sienten cómodos con la idea de que Mono se base en un producto de Microsoft de código cerrado. Sin embargo, Mono en sí es de código abierto.

2) Patentes: Esto solía ser una preocupación importante que desde entonces fue abordada por Microsoft cuando aplicaron la Promesa de la Comunidad a las especificaciones ECMA 334 y ECMA 335. Desafortunadamente, una parte sustancial de las personas no lo saben.

Benjamin Dobell
fuente
44
El argumento es que la promesa de la comunidad no es suficiente, no es una cuestión de conciencia.
Broam
1

No uso Mono porque

  1. Microsoft alega una infracción de IP sin especificar qué se está infringiendo y se han negado a aclarar sobre Mono, solo diciendo que los usuarios de Novell están protegidos. No creo en la promesa de la comunidad de Microsoft hasta que la respalden con acciones.
  2. Las licencias mono son complicadas. Es difícil para un experto legal, y mucho menos para un usuario común, comprender que las partes tienen una licencia diferente. Nada en código abierto es tan complicado de entender.
  3. Miguel de Icaza prometió pero no cumplió su promesa de lanzar el código fuente compatible con ECMA de manera oportuna
  4. el panorama está plagado de compañías que siguieron los estándares de Microsoft porque para ellos existen estándares que deben romperse y mantener a otros en desventaja
  5. no hay necesidad o beneficio demostrable de tener .NET en Linux, se ha transferido poco de otras plataformas y cualquier cosa nativa de Linux podría escribirse en otros idiomas
  6. Mono es un tema innecesariamente divisivo; nos distrae y juega en las manos de Microsoft al evitar problemas más importantes

Creo que cualquiera puede y debe usar Mono si lo desea, pero los usuarios que no lo desean no deberían tenerlo puesto de forma predeterminada.

LinuxCanuck
fuente
No creo que Microsoft haya alegado alguna vez la infracción del paciente en mono. Sin embargo, ha prometido no demandar en una mansión legalmente vinculante.
Trampster
el motor irreal requiere varios paquetes mono; aunque, creo, siendo todo de código abierto; un día, puede ser, podrían ser reemplazados por algo sobre lo que podamos estar tranquilos.
Acuario Power