Perché il mono è così controverso?


33

Spesso quando sto leggendo di qualche programma, sia esso GNOME Do o Banshee o qualcos'altro, vedo le persone che scrivono che usano il mono - e le implicazioni sono peggiorative. Perchè è questo? Questi commenti sono fatti su basi pratiche, ideologiche o qualcos'altro?


3
perché nessuno chiede la rimozione di open office in quanto implementa le tecnologie Microsoft (formati di documenti)?
trampster

Risposte:


36

Ideologicamente

Mono suppone che alcuni supportino Microsoft e la sua piattaforma .Net. Alcune persone credono che ciò sia contrario agli obiettivi di Ubuntu, o almeno ai propri obiettivi personali, e vogliono evitarlo.

Scusate le parole mosse, ma rimango obiettivo. La discussione sul fatto che Mono lo faccia effettivamente, e anche se supportare Microsoft è una cosa buona o cattiva, appartiene altrove .

In pratica

I programmi che usano una macchina virtuale (come fanno quelli scritti in Java e C #), nella mia esperienza, tendono ad usare più memoria rispetto agli equivalenti che non lo fanno. Questa generalizzazione non è sempre valida. Mentre ci sono utenti per i quali questa è una preoccupazione valida, le persone spesso si preoccupano delle prestazioni più del necessario.

Ad esempio, sto usando un laptop con solo 1 GB di memoria: questo era enorme. La macchina sta iniziando a mostrare l'età, ma posso ancora eseguire la maggior parte delle cose comodamente. Gli utenti con 4 GB di memoria non noteranno i "maiali della memoria" quasi altrettanto e dovrebbero concentrarsi su altre preoccupazioni. (E tornerò qui tra 5 anni e riderò per quel numero di 4 GB.)


4
Bene, c # non è puramente in esecuzione sulla macchina virtuale. Almeno non nel modo normale. Può eseguire la compilazione Just in time dal codice byte alla macchina, come java, oltre alla compilazione anticipata al codice della macchina con eccezioni (caso normale) e la compilazione completa di vecchia scuola (non tuttavia sulla maggior parte delle piattaforme) . In questo senso non è lo stesso di Java o Parrot. Più di un ibrido. Per questo motivo, nel mondo reale, è molto probabile che il tuo codice di sollevamento pesante ad anello interno sarà compilato su istruzioni native della macchina in mono.
Stefano Palazzo

1
@stefano: ho menzionato l'utilizzo della memoria, non la velocità di esecuzione. In effetti, mantenere più copie del codice in modo che JIT possa fare il proprio lavoro utilizza più memoria.

3
Non è solo quello. Mono potrebbe benissimo violare alcuni dei brevetti di Microsoft, il che dà a Microsoft la possibilità di far causa a qualcuno un giorno come Oracle fa contro Google per i brevetti Java.
txwikinger,

5
Siamo spiacenti, ma nella "Community Promise" non è giuridicamente vincolante.
txwikinger,

2
@txwikinger È giuridicamente vincolante Consulta la domanda in questa pagina. microsoft.com/interop/cp/default.mspx
trampster

16

Alcune persone credono che Microsoft detenga brevetti software su aspetti di .NET e che, come implementazione di .NET, Mono violi tali brevetti. Pertanto, queste persone ritengono che l'uso di Mono potrebbe lasciare aperta una causa per brevetti.

Suppongo che Mono sia così controverso perché la legge sui brevetti in generale è controversa. Ma poi ci sono casi specifici in cui le entità che promuovono Mono hanno stipulato accordi con Microsoft che assomigliano molto agli accordi sui brevetti, che potrebbero quindi essere visti per rafforzare l'argomento di Microsoft sulla validità di tali brevetti. (Naturalmente, Microsoft non ha effettivamente fornito alcuna prova dell'esistenza dei brevetti, mantenendo così uno stato di incertezza, proprio come con la loro richiesta di brevetti violati dal kernel di Linux.) Questi accordi provocano sentimenti di tradimento e sfiducia nei confronti di altre comunità membri, poiché l'accordo sembra danneggiare l'intera comunità (aumentando il rischio di brevetto percepito) a vantaggio dell'entità che ha stipulato l'accordo con Microsoft. Questo porta ad un altro motivo per cui Mono è controverso:

A proposito, dovrei menzionare che scrivo dal punto di vista di uno spettatore e non ho una conoscenza dettagliata o specifica dell'intera situazione. Ho cercato di rimanere imparziale e per lo più ho evitato i nomi propri in modo da evitare di trascinare questa domanda nella controversia che essa pone.

Modifica: Nei commenti, qualcuno ha sottolineato che Microsoft ha una promessa della comunità di non far valere i diritti di brevetto contro le implementazioni di .NET. Ma la promessa ha abbastanza legalese in esso che non credo di poter davvero essere sicuro che la promessa fornisca una protezione a tenuta d'aria senza assumere un avvocato per andare oltre. Dopo averlo letto, posso pensare ad alcune potenziali scappatoie che potrebbero consentire a Microsoft di far valere i diritti di brevetto su Mono, ma da IANAL , non ho idea se una di queste scappatoie sia legalmente difendibile, o solo il mio malinteso sul legale di Microsoft. Quindi, sebbene la promessa della comunità sia incoraggiante, certamente non può porre fine alla controversia tra la possibile responsabilità sui brevetti di Mono.


3
Questa dovrebbe essere davvero la risposta accettata, è l'unica che effettivamente risponde alla domanda. Le persone sono titubanti nell'usare Mono perché hanno paura di essere citate in giudizio da Microsoft.

1
Va menzionato qui che l'articolo 52 della Convenzione sul brevetto europeo vieta espressamente i brevetti sul software "in quanto tale" (articolo 52/2). Ciò significa che almeno i cittadini e le organizzazioni degli Stati membri dell'UE sono sostanzialmente al sicuro da cose come la campagna di licenze di Microsoft. (quest'ultima affermazione è in forte contesa)
Stefano Palazzo

1
Nonostante l'arte. 52/2 ci sono state richieste di brevetto di software di successo in Europa.
txwikinger,

Questa risposta non è completa senza una discussione sulla "promessa della comunità" legalmente vincolante che protegge il mono dalle cause di brevetto di Microsoft.
trampster

1
@trampster: il CP copre ECMA 334 e 335 piuttosto che tutto C #, e poiché quelli sono stati pubblicati nel 2006, qualsiasi cosa nuova aggiunta a C # non è esplicitamente coperta. Prevedi che Mono rimarrà 5 anni (e in crescita) dietro .NET per utilizzare il CP?
Fred Nurk,

5

Mono è un porting aperto di Microsoft .net.

Sul piano ideologico, questo fa uso di una tecnologia chiusa per tecnologie aperte e che potrebbe non coincidere con alcuni ideali di GNU e / o Linux.

Sul piano pratico, Mono non supporta (per ora) tante funzionalità come .NET nella sua versione 3.5. Tuttavia, consente di programmare in C # (e altri linguaggi .NET) per Linux, che penso sia una buona cosa e che sarebbe impossibile senza Mono.


9
Il nucleo di base di .NET è una tecnologia / standard aperti (anche se l'implementazione principale di Microsoft non è aperta, C #, le parti di base della libreria standard e il runtime sono pubblicati come standard ECMA).
JanC

@Popinou: non ho mai avuto problemi con le funzionalità mancanti in 3.5.

@JanC: Parti di Mono (System.Windows.Forms) non fanno parte dello standard ECMA.
Broam,

1
In realtà, mono non è una porta, è un'implementazione software gratuita da zero dello standard aperto EMCA. Ed è coperto da una "promessa della comunità" giuridicamente vincolante di non intentare causa per l'attuazione di tale standard aperto.
trampster

1
@Broam System.Windows.Forms non in Ubuntu per impostazione predefinita. E non è richiesto da nessuna delle app mono comuni.
vagabondo

5

Come altri hanno affermato, ci sono due ragioni principali:

1) Ideologia: gli utenti non si sentono a proprio agio con l'idea che Mono sia basato su un prodotto Microsoft a sorgente chiuso. Tuttavia, Mono stesso è open-source.

2) Brevetti: questa era una delle principali preoccupazioni che è stata affrontata da Microsoft quando ha applicato la promessa della comunità alle specifiche ECMA 334 e ECMA 335. Purtroppo una parte sostanziale di persone non ne è a conoscenza.


4
L'argomento è che la promessa della comunità non è abbastanza - non è una questione di consapevolezza.
Broam,

1

Non uso Mono perché

  1. Microsoft sostiene una violazione dell'IP senza specificare ciò che viene violato e si sono rifiutati di chiarire su Mono, dicendo solo che gli utenti Novell sono protetti. Non credo che la promessa della community di Microsoft non sia supportata da azioni.
  2. Le licenze mono sono complicate. È difficile per un esperto legale e tanto meno un utente normale capire come le parti abbiano una licenza diversa. Niente nell'open source è così complicato da capire.
  3. Miguel de Icaza ha promesso ma non è riuscito a mantenere la sua promessa di rilasciare il codice sorgente conforme all'ECMA in modo tempestivo
  4. il panorama è disseminato di aziende che hanno seguito gli standard di Microsoft perché per loro esistono degli standard da rompere e tenere gli altri in svantaggio
  5. non c'è bisogno o beneficio dimostrabile di avere .NET su Linux, poco è stato portato da altre piattaforme e tutto ciò che è nativo di Linux potrebbe essere scritto in altre lingue
  6. Mono è una questione inutilmente divisiva; ci distrae e gioca nelle mani di Microsoft evitando problemi più importanti

Penso che chiunque possa e debba usare Mono se lo desidera, ma gli utenti che non lo desiderano non dovrebbero averlo impostato per impostazione predefinita.


Non credo che Microsoft abbia mai asserito una violazione del paziente in mono. Ha tuttavia promesso di non intentare causa in un maniero legalmente vincolante.
trampster

il motore irreale richiede diversi pacchetti mono; tuttavia, credo, essendo tutto open source; un giorno, potrebbero essere, potrebbero essere sostituiti da qualcosa di cui possiamo stare tranquilli.
Aquarius Power l'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.