Dlaczego mono jest tak kontrowersyjne?

33

Często, kiedy czytam o jakimś programie, czy to GNOME Do, czy Banshee, czy coś innego, widzę, że ludzie piszą, że używają mono - a implikacja jest pejoratywna. Dlaczego to? Czy te komentarze są formułowane na podstawie praktycznej, ideologicznej czy czegoś innego?

Richard
źródło
3
dlaczego nikt nie wzywa do usunięcia otwartego biura, ponieważ wdraża technologie Microsoft (formaty dokumentów)?
trampster

Odpowiedzi:

36

Ideologicznie

Niektórzy twierdzą, że Mono wspiera Microsoft i jego platformę .Net. Niektórzy uważają, że jest to sprzeczne z celami Ubuntu, a przynajmniej z ich osobistymi celami, i chcą tego uniknąć.

Przepraszam za słowa poruszenia, ale jestem obiektywny. Dyskusja na temat tego, czy Mono to robi, a nawet czy wspieranie Microsoft jest dobrą czy złą rzeczą, należy do innych zagadnień .

Praktycznie

Programy korzystające z maszyny wirtualnej (jak te napisane w Javie i C #), z mojego doświadczenia mają tendencję do zużywania większej ilości pamięci niż ich odpowiedniki. To uogólnienie nie zawsze się utrzymuje. Chociaż istnieją użytkownicy, dla których jest to uzasadniony problem, ludzie często martwią się wydajnością bardziej niż to konieczne.

Na przykład używam laptopa z tylko 1 GB pamięci: to było ogromne. Maszyna zaczyna pokazywać swój wiek, ale nadal mogę wygodnie obsługiwać większość rzeczy. Użytkownicy z 4 GB pamięci nie zauważą „świni pamięci” prawie tak bardzo i powinni skupić się na innych problemach. (I wrócę tu za 5 lat i śmieję się z tego numeru 4 GB.)


źródło
4
C # nie działa wyłącznie na maszynie wirtualnej. Przynajmniej nie w normalny sposób. Może to zrobić Kompilacja w czasie od kodu bajtowego do kodu maszynowego, takiego jak Java, oraz kompilacja z wyprzedzeniem do kodu maszynowego z wyjątkami (normalny przypadek) i pełna kompilacja starej szkoły (jednak nie na większości platform) . W tym sensie to nie to samo, co Java lub Parrot. Więcej hybrydy. Z tego powodu, w prawdziwym świecie, jest bardzo prawdopodobne, że twój krytyczny kod do podnoszenia ciężkich pętli wewnętrznych zostanie skompilowany do instrukcji natywnej maszyny w trybie mono.
Stefano Palazzo
1
@stefano: Wspomniałem o zużyciu pamięci, a nie o szybkości wykonywania. W rzeczywistości utrzymywanie wielu kopii kodu, aby JIT mógł wykonywać swoją pracę, zużywa więcej pamięci.
3
To nie tylko to. Mono może równie dobrze naruszać niektóre patenty Microsoftu, co daje Microsoft możliwość pozwania kogoś pewnego dnia, tak jak Oracle robi przeciwko Googleowi z powodu patentów java.
txwikinger
5
Przepraszamy, ale w „Obietnicy społeczności” nie ma nic, co byłoby prawnie wiążące.
txwikinger
2
@txwikinger To jest prawnie wiążące sprawdź pytanie na tej stronie. microsoft.com/interop/cp/default.mspx
trampster
16

Niektóre osoby uważają, że Microsoft posiada patenty na oprogramowanie w stosunku do .NET i że jako implementacja .NET, Mono narusza te patenty. W związku z tym ci ludzie uważają, że korzystanie z Mono może pozostawić otwartą na pozwy patentowe.

Podejrzewam, że Mono jest tak kontrowersyjne, ponieważ prawo patentowe ogólnie jest kontrowersyjne. Ale są też szczególne przypadki, w których podmioty promujące Mono zawarły umowy z Microsoftem, które wyglądają bardzo podobnie do umów patentowych, co można następnie wzmocnić argumentem Microsoftu na temat ważności takich patentów. (Oczywiście, Microsoft nie przedstawił żadnego dowodu na istnienie patentów, utrzymując w ten sposób stan niepewności, tak jak w przypadku ich roszczeń dotyczących patentów naruszonych przez jądro Linuksa.) Umowy te powodują poczucie zdrady i nieufności wobec innych społeczności członków, ponieważ umowa wydaje się szkodzić całej społeczności (poprzez zwiększenie postrzeganego ryzyka patentowego), przynosząc jednocześnie korzyść podmiotowi, który zawarł umowę z Microsoftem. To prowadzi do kolejnego powodu, dla którego Mono jest kontrowersyjny:

Nawiasem mówiąc, powinienem wspomnieć, że piszę z perspektywy widza i nie mam szczegółowej ani konkretnej wiedzy o całej sytuacji. Próbowałem pozostać bezstronny i przeważnie unikałem właściwych rzeczowników, aby uniknąć przeciągania tego pytania do kontrowersyjnej kwestii, o którą pyta.

Edycja: W komentarzach ktoś zauważył, że Microsoft ma obietnicę społeczności, że nie będzie dochodzić praw patentowych przeciwko implementacjom .NET. Ale w obietnicy jest wystarczająco dużo legalizmu, więc nie sądzę, że naprawdę mogę być pewny, że obietnica zapewnia hermetyczną ochronę bez zatrudniania prawnika, który by ją przekroczył. Po przeczytaniu mogę wymyślić kilka potencjalnych luk, które mogłyby pozwolić Microsoftowi dochodzić praw patentowych w stosunku do Mono, ale od IANAL nie mam pojęcia, czy któraś z tych luk jest prawnie uzasadniona, czy tylko moje niezrozumienie legalizmu Microsoftu. Tak więc, choć obietnica społeczności jest zachęcająca, z pewnością nie może zakończyć kontrowersji między możliwą odpowiedzialnością patentową Mono.

Ryan C. Thompson
źródło
3
To powinna być naprawdę zaakceptowana odpowiedź, to jedyna odpowiedź, która faktycznie odpowiada na pytanie. Ludzie wahają się korzystać z Mono, ponieważ obawiają się, że zostaną pozwani przez Microsoft.
1
Należy tu wspomnieć, że art. 52 Europejskiej konwencji patentowej wyraźnie zakazuje patentów na oprogramowanie „jako takie” (art. 52/2). Co oznacza, że ​​przynajmniej obywatele i organizacje w państwach członkowskich UE są zasadniczo bezpieczne od takich rzeczy, jak kampania licencyjna Microsoft. (ostatnie zdanie jest mocno sprzeczane)
Stefano Palazzo
1
Pomimo art. 52/2 zgłoszono powodzenie w sprawie patentu na oprogramowanie w Europie.
txwikinger 30.10.10
Ta odpowiedź nie jest kompletna bez omówienia prawnie wiążącej „Obietnicy społeczności”, która chroni mono przed pozwami patentowymi przez Microsoft.
trampster
1
@trampster: CP obejmuje ECMA 334 i 335, a nie cały C #, a ponieważ zostały one opublikowane w 2006 r., nic nowego dodanego do C # nie jest wyraźnie objęte. Czy spodziewasz się, że Mono pozostanie 5 lat (i rośnie) za platformą .NET, aby móc korzystać z CP?
Fred Nurk
5

Mono to otwarte portowanie Microsoft .net.

Na gruncie ideologicznym wykorzystuje to zamkniętą technologię dla otwartych technologii, która może nie pokrywać się z niektórymi ideami GNU i / lub Linuksa.

Z praktycznego punktu widzenia Mono nie obsługuje (na razie) tylu funkcji, co .NET w wersji 3.5. Pozwala jednak programować w języku C # (i innych językach .NET) dla Linuksa, co moim zdaniem jest dobrą rzeczą i byłoby niemożliwe bez Mono.

Popinou
źródło
9
Podstawowym rdzeniem .NET jest otwarta technologia / standard (nawet jeśli główna implementacja Microsoft nie jest otwarta, C #, podstawowe części standardowej biblioteki i środowisko wykonawcze są publikowane jako standardy ECMA).
JanC
@Popinou: Nigdy nie miałem problemu z brakującymi funkcjami w 3.5.
@JanC: Części Mono (System.Windows.Forms) nie są częścią standardu ECMA.
Broam
1
W rzeczywistości mono nie jest portem, jest od podstaw implementacją wolnego oprogramowania otwartego standardu EMCA. I jest objęty prawnie wiążącą „Obietnicą społeczności”, aby nie wnosić o wdrożenie tego otwartego standardu.
trampster
1
@Broam System.Windows.Forms domyślnie nie jest w Ubuntu. I nie jest wymagany przez żadną z popularnych aplikacji mono.
trampster
5

Jak stwierdzili inni, istnieją dwa główne powody:

1) Ideologia: użytkownicy nie są zadowoleni z pomysłu, że Mono opiera się na zamkniętym źródle produktu Microsoft. Jednak samo Mono jest oprogramowaniem typu open source.

2) Patenty: był to poważny problem, który od tamtej pory był przedmiotem zainteresowania Microsoft, kiedy zastosowali Obietnicę Wspólnoty do ECMA 334 i specyfikacji ECMA 335. Niestety znaczna część ludzi nie jest tego świadoma.

Benjamin Dobell
źródło
4
Argument jest taki, że obietnica społeczności nie wystarczy - nie jest to kwestia świadomości.
Broam
1

Nie używam Mono, ponieważ

  1. Microsoft zarzuca naruszenie praw własności intelektualnej, nie określając, co jest naruszane, i odmówili wyjaśnienia w sprawie Mono, mówiąc tylko, że użytkownicy Novella są chronieni. Nie wierzę w obietnice społeczności Microsoft, dopóki nie poprą tego działaniami.
  2. Licencjonowanie mono jest skomplikowane. Prawnikowi nie jest łatwo zrozumieć zwykłego użytkownika, ponieważ części są licencjonowane inaczej. Nic w open source nie jest tak skomplikowane do zrozumienia.
  3. Miguel de Icaza obiecał, ale nie dotrzymał obietnicy wydania w odpowiednim czasie kodu źródłowego zgodnego z ECMA
  4. krajobraz jest zaśmiecony firmami, które przestrzegały standardów Microsoftu, ponieważ dla nich istnieją normy, które mają być łamane, a inne niekorzystne
  5. nie ma potrzeby ani wyraźnych korzyści z posiadania .NET na Linuksie, niewiele zostało przeniesionych z innych platform, a wszystko, co jest rodzime dla Linuksa, można pisać w innych językach
  6. Mono to niepotrzebnie dzieląca kwestia; odwraca naszą uwagę i wchodzi w ręce Microsoftu, unikając ważniejszych problemów

Myślę, że każdy może i powinien używać Mono, jeśli chce, ale użytkownicy, którzy go nie chcą, nie powinni mieć domyślnie włączonego.

LinuxCanuck
źródło
Nie sądzę, aby Microsoft kiedykolwiek twierdził, że pacjent naruszył prawa mono. Obiecał jednak nie wnosić sprawy do prawnie wiążącego dworu.
trampster
silnik nierzeczywisty wymaga kilku pakietów mono; choć wierzę, że wszystko jest otwarte; któregoś dnia mogą być zastąpione przez coś, o czym moglibyśmy zachować spokój.
Aquarius Power