Warum ist Mono so umstritten?

33

Wenn ich über ein Programm lese, sei es GNOME Do oder Banshee oder etwas anderes, sehe ich oft Leute, die schreiben, dass sie Mono verwenden - und die Implikation ist abwertend. Warum ist das? Sind diese Kommentare aus praktischen, ideologischen oder anderen Gründen gemacht?

Richard
quelle
3
Warum fordert niemand, dass Open Office entfernt wird, um Microsoft-Technologien (Dokumentformate) zu implementieren?
Trampster

Antworten:

36

Ideologisch

Von einigen wird angenommen, dass Mono Microsoft und seine .Net-Plattform unterstützt. Einige Leute glauben, dies widerspreche den Zielen von Ubuntu oder zumindest ihren eigenen persönlichen Zielen und wollen dies vermeiden.

Sorry für die wackeligen Worte, aber ich bleibe objektiv. Die Diskussion, ob Mono dies tatsächlich tut und ob es gut oder schlecht ist, Microsoft zu unterstützen, gehört woanders hin .

Praktisch

Programme, die eine virtuelle Maschine verwenden (wie die in Java und C # geschriebenen), belegen nach meiner Erfahrung tendenziell mehr Speicher als entsprechende Programme, die dies nicht tun. Diese Verallgemeinerung gilt nicht immer. Während es Benutzer gibt, für die dies ein berechtigtes Anliegen ist, sorgen sich die Benutzer häufig mehr als notwendig um die Leistung.

Ich verwende zum Beispiel einen Laptop mit nur 1 GB Speicher: Früher war dieser riesig. Die Maschine fängt an, ihr Alter anzuzeigen, aber ich kann die meisten Dinge immer noch bequem ausführen. Benutzer mit 4 GB Arbeitsspeicher werden "Memory Hogs" nicht annähernd so häufig bemerken und sollten sich auf andere Probleme konzentrieren. (Und ich werde in 5 Jahren wieder hierher kommen und über diese 4 GB-Zahl lachen.)


quelle
4
Nun, c # läuft nicht nur auf der virtuellen Maschine. Zumindest nicht auf die normale Art und Weise. Just-in-Time-Kompilierung von Byte- zu Maschinencode wie Java sowie vorzeitige Kompilierung von Maschinencode mit Ausnahmen (normaler Fall) und vollständige Kompilierung nach alter Schule (jedoch nicht auf den meisten Plattformen) . In diesem Sinne ist es nicht dasselbe wie Java oder Parrot. Eher ein Hybrid. Aus diesem Grund ist es in der Praxis sehr wahrscheinlich, dass Ihr kritischer Schwergut-Code in der inneren Schleife zu systemeigenen Maschinenanweisungen in Mono kompiliert wird.
Stefano Palazzo
1
@stefano: Ich erwähnte die Speichernutzung, nicht die Ausführungsgeschwindigkeit. In der Tat wird mehr Arbeitsspeicher benötigt, wenn mehrere Kopien des Codes vorhanden sind, damit die JIT ihre Arbeit erledigen kann.
3
Es ist nicht nur das. Mono könnte sehr wohl einige Patente von Microsoft verletzen, was Microsoft die Möglichkeit gibt, eines Tages jemanden zu verklagen, wie Oracle es gegen Google wegen Java-Patenten tut.
Txwikinger
5
Entschuldigung, aber das "Community Promise" enthält nichts, was rechtlich bindend ist.
txwikinger
2
@txwikinger Es ist rechtlich bindend, die Frage auf dieser Seite zu überprüfen. microsoft.com/interop/cp/default.mspx
trampster
16

Einige Leute glauben, dass Microsoft Softwarepatente für Aspekte von .NET besitzt und dass Mono als Implementierung von .NET diese Patente verletzt. Aus diesem Grund haben diese Leute das Gefühl, dass man mit Mono Patentstreitigkeiten aussetzen kann.

Ich nehme an, Mono ist so umstritten, weil das Patentrecht im Allgemeinen umstritten ist. Es gibt jedoch auch Fälle, in denen Unternehmen, die für Mono werben, Vereinbarungen mit Microsoft getroffen haben, die Patentvereinbarungen sehr ähnlich sehen. Dies könnte das Argument von Microsoft für die Gültigkeit solcher Patente untermauern. (Natürlich hat Microsoft keinen Beweis dafür erbracht, dass die Patente existieren, und damit einen Zustand der Unsicherheit aufrechterhalten, genau wie bei der Behauptung von Patenten, die vom Linux-Kernel verletzt wurden.) Diese Vereinbarungen führen zu einem Gefühl von Verrat und Misstrauen gegenüber anderen Communitys Mitglieder, da die Vereinbarung die Community als Ganzes zu verletzen scheint (durch Erhöhung des wahrgenommenen Patentrisikos) und gleichzeitig dem Unternehmen zugute kommt, das die Vereinbarung mit Microsoft geschlossen hat. Das führt also zu einem anderen Grund, warum Mono umstritten ist:

Übrigens sollte ich erwähnen, dass ich aus der Perspektive eines Zuschauers schreibe und keine detaillierten oder spezifischen Kenntnisse über die gesamte Situation habe. Ich habe versucht, unvoreingenommen zu bleiben und Eigennamen größtenteils zu meiden, um diese Frage nicht in die Kontroverse zu ziehen, nach der sie fragt.

Bearbeiten: In den Kommentaren hat jemand darauf hingewiesen, dass Microsoft ein Community-Versprechen hat, keine Patentrechte gegen .NET-Implementierungen geltend zu machen. Aber das Versprechen enthält genug Rechtsprechung, so dass ich nicht wirklich sicher sein kann, dass das Versprechen luftdichten Schutz bietet, ohne einen Anwalt damit zu beauftragen. Nachdem ich es gelesen habe, kann ich mir einige potenzielle Schlupflöcher vorstellen , durch die Microsoft Patentrechte für Mono geltend machen könnte. Seit IANAL habe ich jedoch keine Ahnung, ob diese Schlupflöcher rechtlich vertretbar sind oder nur mein Missverständnis der gesetzlichen Bestimmungen von Microsoft. Obwohl das Versprechen der Community ermutigend ist, kann es den Streit um Monos mögliche Patenthaftung sicherlich nicht beenden.

Ryan C. Thompson
quelle
3
Dies sollte die wirklich akzeptierte Antwort sein, es ist die einzige, die die Frage tatsächlich beantwortet. Die Leute zögern, Mono zu verwenden, weil sie Angst haben, von Microsoft angeklagt zu werden.
1
Hier ist zu erwähnen, dass Artikel 52 des Europäischen Patentübereinkommens Patente auf Software "als solche" ausdrücklich verbietet (Art. 52/2). Dies bedeutet, dass zumindest Bürger und Organisationen in EU-Mitgliedstaaten grundsätzlich vor Dingen wie der Lizenzkampagne von Microsoft sicher sind . (Diese letzte Aussage steht unter heftigem Streit)
Stefano Palazzo
1
Trotz Kunst. 52/2 gab es erfolgreiche Patentansprüche für Software in Europa.
Txwikinger
Diese Antwort ist nicht vollständig, ohne das rechtsverbindliche "Community Promise" zu diskutieren, das Mono vor Patentstreitigkeiten durch Microsoft schützt.
Trampster
1
@trampster: Der CP deckt ECMA 334 und 335 ab und nicht C #. Da diese im Jahr 2006 veröffentlicht wurden, wird alles, was neu zu C # hinzugefügt wurde, ausdrücklich nicht behandelt. Erwarten Sie, dass Mono 5 Jahre (und länger ) hinter .NET bleibt , um den CP nutzen zu können?
Fred Nurk
5

Mono ist eine offene Portierung von Microsoft .net.

Aus ideologischer Sicht wird dabei eine geschlossene Technologie für offene Technologien verwendet, die möglicherweise nicht mit einigen Idealen von GNU und / oder Linux übereinstimmt.

In der Praxis unterstützt Mono (vorerst) nicht so viele Funktionen wie .NET in der 3.5-Version. Es erlaubt jedoch, in C # (und anderen .NET-Sprachen) für Linux zu programmieren, was ich für eine gute Sache halte und ohne Mono unmöglich wäre.

Popinou
quelle
9
Der grundlegende Kern von .NET ist eine offene Technologie / ein offener Standard (auch wenn die Hauptimplementierung von Microsoft nicht offen ist, werden C #, grundlegende Teile der Standardbibliothek und die Laufzeit als ECMA-Standards veröffentlicht).
29.
@ Popinou: Ich hatte nie ein Problem mit fehlenden Funktionen in 3.5.
@JanC: Teile von Mono (System.Windows.Forms) sind nicht Teil des ECMA-Standards.
Broam
1
Eigentlich ist Mono kein Port, sondern eine von Grund auf freie Software-Implementierung des offenen EMCA-Standards. Und ist durch ein rechtsverbindliches "Versprechen der Gemeinschaft" abgedeckt, Implementierungen dieses offenen Standards nicht zu verklagen.
Trampster
1
@Broam System.Windows.Forms ist standardmäßig nicht in Ubuntu. Und wird von keiner der gängigen Mono-Apps benötigt.
Trampster
5

Wie andere angegeben haben, gibt es zwei Hauptgründe:

1) Ideologie: Benutzer sind mit der Idee, dass Mono auf einem Microsoft-Closed-Source-Produkt basiert, nicht zufrieden. Mono selbst ist jedoch Open Source.

2) Patente: Dies war früher ein wichtiges Anliegen, auf das Microsoft seitdem eingegangen ist, als es das Community Promise auf ECMA 334 und ECMA Specs 335 anwendete. Leider ist dies einem erheblichen Teil der Menschen nicht bewusst.

Benjamin Dobell
quelle
4
Das Argument ist, dass das Versprechen der Community nicht ausreicht - es ist keine Frage des Bewusstseins.
Broam
1

Ich benutze Mono nicht, weil

  1. Microsoft behauptet, es liege eine IP-Verletzung vor, ohne anzugeben, gegen was verstoßen wird, und sie haben sich geweigert, Mono zu klären, und lediglich darauf hingewiesen, dass Novell-Benutzer geschützt sind. Ich glaube nicht, dass die Community von Microsoft dies verspricht, bis sie es mit Maßnahmen untermauert.
  2. Monolizenzierung ist kompliziert. Es ist für einen Rechtsexperten schwer zu verstehen, geschweige denn für einen normalen Benutzer, dass Teile unterschiedlich lizenziert sind. Nichts in Open Source ist so kompliziert zu verstehen.
  3. Miguel de Icaza hat zugesagt, aber sein Versprechen, ECMA-konformen Quellcode rechtzeitig freizugeben, nicht eingehalten
  4. Die Landschaft ist übersät mit Unternehmen, die den Standards von Microsoft folgen, weil für sie Standards existieren, die gebrochen werden und andere benachteiligen
  5. .NET unter Linux ist weder notwendig noch nachweisbar von Vorteil, es wurde nur wenig von anderen Plattformen portiert, und alles, was für Linux typisch ist, könnte in anderen Sprachen geschrieben werden
  6. Mono ist eine unnötig spaltende Angelegenheit; Es lenkt uns ab und spielt in die Hände von Microsoft, indem es sich von wichtigeren Themen fernhält

Ich denke, dass jeder Mono benutzen kann und sollte, wenn er möchte, aber Benutzer, die es nicht wollen, sollten es nicht standardmäßig anlegen lassen.

LinuxCanuck
quelle
Ich glaube nicht, dass Microsoft jemals Patientenverletzungen in Mono behauptet hat. Es hat jedoch versprochen, nicht in einem rechtsverbindlichen Herrenhaus zu klagen.
Trampster
Für eine unwirkliche Engine sind mehrere Monopakete erforderlich. Ich glaube, alle Open Source zu sein. Vielleicht könnten sie eines Tages durch etwas ersetzt werden, bei dem wir ruhig bleiben könnten.
Aquarius Power