Pourquoi mono est-il si controversé?

33

Souvent, lorsque je lis quelque chose sur un programme, que ce soit GNOME Do ou Banshee ou autre chose, je vois des personnes écrire qu’elles utilisent le mono - et l’implication est péjorative. Pourquoi est-ce? Ces commentaires sont-ils faits pour des raisons pratiques, idéologiques ou autres?

Richard
la source
3
pourquoi personne ne réclame-t-il Open Office pour le supprimer puisqu'il implémente les technologies Microsoft (formats de document)?
Trampster

Réponses:

36

Idéologiquement

Mono est supposé supporter Microsoft et sa plate-forme .Net. Certaines personnes pensent que cela va à l'encontre des objectifs d'Ubuntu, ou du moins de leurs objectifs personnels, et elles souhaitent éviter cela.

Désolé pour les mots agités, mais je reste objectif. La discussion sur la question de savoir si Mono fait réellement cela, et même si soutenir Microsoft est une bonne ou une mauvaise chose, appartient ailleurs .

Pratiquement

Les programmes qui utilisent une machine virtuelle (comme ceux écrits en Java et C # le font) ont tendance à utiliser plus de mémoire, selon mon expérience, par rapport à leurs équivalents. Cette généralisation ne tient pas toujours. Bien qu'il existe des utilisateurs pour lesquels cela est une préoccupation valable, les gens s'inquiètent souvent de la performance plus que nécessaire.

Par exemple, j'utilise un ordinateur portable avec seulement 1 Go de mémoire: c'était autrefois énorme. La machine commence à montrer son âge, mais je peux toujours gérer la plupart des choses confortablement. Les utilisateurs disposant de 4 Go de mémoire ne remarqueront presque pas autant de "problèmes de mémoire" et devraient se concentrer sur d'autres préoccupations. (Et je reviendrai dans 5 ans et je me moquerai de ce chiffre de 4 Go.)


la source
4
Eh bien, c # ne fonctionne pas uniquement sur la machine virtuelle. Du moins pas de façon normale. Il peut faire une compilation Just in Time de code machine en octets, comme Java, plus une compilation anticipée en code machine avec des exceptions (cas normal) et une compilation complète old-school (cependant, sur la plupart des plates-formes). . Ce n'est pas la même chose que Java ou Parrot en ce sens. Plus d'un hybride. Pour cette raison, dans le monde réel, il est très probable que votre code de levage lourd de la boucle interne critique soit compilé en instructions machine natives en mono.
Stefano Palazzo
1
@stefano: J'ai parlé de l'utilisation de la mémoire, pas de la vitesse d'exécution. En fait, conserver plusieurs copies du code pour que le JIT puisse s’acquitter de sa tâche utilise davantage de mémoire.
3
Ce n'est pas que ça. Mono pourrait très bien enfreindre certains brevets de Microsoft, ce qui donne à Microsoft la possibilité de poursuivre un jour quelqu'un comme Oracle le fait contre Google pour des brevets Java.
Txwikinger
5
Désolé, mais rien dans la "promesse de la communauté" n’est juridiquement contraignant.
Txwikinger
2
@txwikinger C'est juridiquement contraignant, consultez la question sur cette page. microsoft.com/interop/cp/default.mspx
Trampster
16

Certaines personnes pensent que Microsoft détient des brevets logiciels sur des aspects de .NET et que, en tant qu'implémentation de .NET, Mono enfreint ces brevets. Ainsi, ces personnes estiment que l'utilisation de Mono pourrait laisser la porte ouverte à des poursuites en matière de brevets.

Je suppose que Mono est tellement controversé parce que le droit des brevets en général est controversé. Mais il existe des cas spécifiques dans lesquels des entités qui promeuvent Mono ont passé des accords avec Microsoft qui ressemblent beaucoup à des accords de brevets, ce qui pourrait alors être considéré comme renforçant l'argument de Microsoft en faveur de la validité de tels brevets. (Bien entendu, Microsoft n’a en réalité fourni aucune preuve de l’existence des brevets, ce qui a permis de maintenir un état d’incertitude, tout comme pour la revendication de brevets violés par le noyau Linux.) Ces accords génèrent des sentiments de trahison et de méfiance de la part des autres communautés. membres, parce que l'accord semble nuire à la communauté dans son ensemble (en augmentant le risque de brevet perçu) tout en bénéficiant à l'entité qui a conclu l'accord avec Microsoft. Cela conduit donc à une autre raison pour laquelle Mono est controversé:

En passant, je devrais mentionner que j’écris du point de vue d’un spectateur et que je n’ai aucune connaissance détaillée ou spécifique de la situation dans son ensemble. J'ai essayé de rester impartial et j'ai surtout évité les noms propres afin d'éviter de traîner cette question dans la controverse à propos de laquelle elle est posée.

Edit: Dans les commentaires, quelqu'un a souligné que Microsoft avait une promesse de la communauté de ne pas revendiquer les droits de brevet contre les implémentations .NET. Mais la promesse a suffisamment de jargon juridique pour que je ne sois pas vraiment sûr que cette promesse offre une protection hermétique sans engager un avocat. Après l'avoir lu, je peux imaginer des échappatoires qui pourraient permettre à Microsoft de revendiquer des droits de brevet sur Mono, mais depuis IANAL , je ne sais pas du tout si ces échappatoires sont légalement défendables, ou si je comprends mal le jargon juridique de Microsoft. Ainsi, bien que la promesse de la communauté soit encourageante, elle ne peut certainement pas mettre fin à la controverse concernant la responsabilité éventuelle de Mono en matière de brevets.

Ryan C. Thompson
la source
3
Cela devrait être la réponse acceptée vraiment, c'est le seul qui répond réellement à la question. Les gens hésitent à utiliser Mono car ils craignent d'être poursuivis par Microsoft.
1
Il convient de mentionner ici que l'article 52 de la Convention sur le brevet européen interdit spécifiquement les brevets sur les logiciels "en tant que tels" (art. 52/2). Ce qui signifie qu'au moins les citoyens et les organisations des États membres de l'UE sont fondamentalement à l' abri d'éléments comme la campagne de licence de Microsoft. (cette dernière affirmation fait l’objet d’une vive controverse)
Stefano Palazzo
1
Malgré l'art. 52/2, les brevets de logiciels ont été revendiqués avec succès en Europe.
Txwikinger
Cette réponse n'est pas complète sans une discussion de la "promesse communautaire", juridiquement contraignante, qui protège Mono contre les poursuites en justice par Microsoft.
Trampster
1
@trampster: Le CP couvre les ECMA 334 et 335 plutôt que la totalité de C #, et comme ceux-ci ont été publiés en 2006, toute nouveauté ajoutée à C # n'est pas explicitement couverte. Pensez-vous que Mono restera 5 ans (et plus) derrière .NET pour pouvoir utiliser le CP?
Fred Nurk
5

Mono est un portage ouvert de Microsoft .net.

Sur le plan idéologique, cela fait appel à une technologie fermée pour les technologies ouvertes et qui peut ne pas coïncider avec certains idéaux de GNU et / ou de Linux.

Sur le plan pratique, Mono ne supporte pas (pour le moment) autant de fonctionnalités que .NET dans sa version 3.5. Cependant, cela permet de programmer en C # (et autres langages .NET) pour Linux, ce qui, à mon avis, est une bonne chose et serait impossible sans Mono.

Popinou
la source
9
Le noyau de base de .NET est une technologie / norme ouverte (même si l'implémentation principale de Microsoft n'est pas ouverte, C #, les composants de base de la bibliothèque standard et le moteur d'exécution sont publiés en tant que normes ECMA).
Janv
@Popinou: Je n'ai jamais eu de problème avec des fonctionnalités manquantes dans la version 3.5.
@JanC: Certaines parties de Mono (System.Windows.Forms) ne font pas partie du standard ECMA.
Broam
1
En réalité, mono n’est pas un port, c’est une implémentation logicielle libre du standard ouvert EMCA. Et est couvert par une "promesse de la communauté" juridiquement contraignante de ne pas poursuivre en justice les implémentations de cette norme ouverte.
Trampster
1
@Broam System.Windows.Forms n'est pas dans Ubuntu par défaut. Et n’est requis par aucune des applications mono courantes.
Trampster
5

Comme d'autres l'ont dit, il y a deux raisons principales:

1) Idéologie: les utilisateurs ne sont pas à l'aise avec l'idée que Mono est basé sur un produit Microsoft à source fermée. Cependant, Mono lui-même est open-source.

2) Brevets: C’était une préoccupation majeure à laquelle Microsoft a tenu compte lorsqu’elle a appliqué la promesse faite par la Communauté aux spécifications ECMA 334 et ECMA 335. Malheureusement, une grande partie de la population n’en est pas consciente.

Benjamin Dobell
la source
4
L'argument est que la promesse de la communauté ne suffit pas - ce n'est pas une question de sensibilisation.
Broam
1

Je n'utilise pas Mono parce que

  1. Microsoft allègue une atteinte à la propriété intellectuelle sans préciser ce qui est enfreint et a refusé de fournir des précisions sur Mono, affirmant simplement que les utilisateurs de Novell sont protégés. Je ne crois pas que la communauté de Microsoft ait promis de s’en tenir à des actions concrètes.
  2. La licence mono est compliquée. Il est difficile pour un expert juridique, et encore moins pour un utilisateur ordinaire, de comprendre, car les pièces sont concédées sous licence différemment. Rien dans l'open source n'est si compliqué à comprendre.
  3. Miguel de Icaza a promis mais n'a pas tenu sa promesse de publier rapidement le code source conforme à l'ECMA
  4. le paysage est encombré de sociétés qui ont suivi les normes de Microsoft, car pour elles, il existe des normes qui doivent être brisées et qui désavantagent les autres
  5. Avoir .NET sous Linux ne présente aucun avantage ni aucun avantage démontrable. Peu de choses ont été transférées depuis d'autres plates-formes et tout ce qui est natif de Linux pourrait être écrit dans d'autres langues.
  6. Mono est une question de division inutile; il nous distrait et joue entre les mains de Microsoft en évitant des problèmes plus importants

Je pense que tout le monde peut et doit utiliser Mono s’il le souhaite, mais les utilisateurs qui ne le souhaitent pas ne devraient pas le faire activer par défaut.

LinuxCanuck
la source
Je ne crois pas que Microsoft ait jamais allégué une violation patient en mono. Il a toutefois promis de ne pas poursuivre en justice dans un manoir juridiquement contraignant.
Trampster
unreal engine nécessite plusieurs packages mono; Quoique, je crois, étant tous opensource; un jour, peut-être, ils pourraient être remplacés par quelque chose qui nous permettrait de rester tranquille.
Aquarius Power