Tại sao mono lại gây tranh cãi như vậy?


33

Thông thường khi tôi đang đọc về một số chương trình, có thể là Gnome Do hoặc Banshee hoặc một cái gì đó khác, tôi thấy mọi người viết rằng họ sử dụng đơn âm - và hàm ý này là miệt thị. Tại sao lại thế này? Là những bình luận được thực hiện trên cơ sở thực tế, ý thức hệ, hoặc cái gì khác?


3
Tại sao không ai kêu gọi văn phòng mở bị loại bỏ vì nó thực hiện các công nghệ của Microsoft (định dạng tài liệu)?
trampster

Câu trả lời:


36

Về mặt tư tưởng

Mono được một số người cho là sẽ hỗ trợ Microsoft và nền tảng .Net của nó. Một số người tin rằng điều này trái với các mục tiêu của Ubuntu, hoặc ít nhất là các mục tiêu cá nhân của riêng họ và họ muốn tránh điều đó.

Xin lỗi vì những từ ngọ nguậy, nhưng tôi đang giữ mục tiêu. Cuộc thảo luận về việc Mono có thực sự làm điều này hay không, và thậm chí việc hỗ trợ Microsoft là điều tốt hay xấu, thuộc về nơi khác .

Thực tế

Theo kinh nghiệm của tôi, các chương trình sử dụng máy ảo (như được viết bằng Java và C #), có xu hướng sử dụng nhiều bộ nhớ hơn, theo kinh nghiệm của tôi, so với các chương trình tương đương không có. Sự khái quát hóa này không phải lúc nào cũng giữ. Mặc dù có những người dùng mà đây là mối quan tâm hợp lệ, mọi người thường lo lắng về hiệu suất hơn mức cần thiết.

Ví dụ: tôi đang sử dụng máy tính xách tay chỉ có 1GB bộ nhớ: điều này từng rất lớn. Máy bắt đầu hiển thị tuổi, nhưng tôi vẫn có thể chạy hầu hết mọi thứ một cách thoải mái. Người dùng có 4GB bộ nhớ sẽ không nhận thấy "bộ nhớ" gần như nhiều và nên tập trung vào các mối quan tâm khác. (Và tôi sẽ quay lại đây sau 5 năm và cười với con số 4GB đó.)


4
Chà, c # không hoàn toàn chạy trên Máy ảo. Ít nhất là không theo cách thông thường. Nó có thể thực hiện Chỉ biên dịch theo thời gian từ mã byte sang mã máy, như java, cộng với biên dịch trước thời gian sang mã máy với các trường hợp ngoại lệ (trường hợp thông thường) và biên dịch toàn bộ trường học cũ (tuy nhiên không phải trên hầu hết các nền tảng) . Nó không giống với Java hay Parrot theo nghĩa đó. Thêm một giống lai. Vì lý do này, trong thế giới thực, rất có thể mã nâng nặng trong vòng lặp quan trọng của bạn sẽ được biên dịch theo hướng dẫn máy gốc trong đơn âm.
Stefano Palazzo

1
@stefano: Tôi đã đề cập đến việc sử dụng bộ nhớ, không phải tốc độ thực thi. Trong thực tế, giữ nhiều bản sao của mã xung quanh để JIT có thể thực hiện công việc của nó sử dụng nhiều bộ nhớ hơn.

3
Không chỉ có thế. Mono rất có thể vi phạm một số bằng sáng chế của Microsoft, điều này cho phép Microsoft có thể kiện ai đó một ngày nào đó giống như Oracle chống lại Google bằng sáng chế java.
txwikinger

5
Xin lỗi, nhưng không có gì trong "Lời hứa cộng đồng" ràng buộc về mặt pháp lý.
txwikinger

2
@txwikinger Đó là ràng buộc về mặt pháp lý kiểm tra câu hỏi trên trang này. microsoft.com/interop/cp/default.mspx
trampster

16

Một số người tin rằng Microsoft giữ bằng sáng chế phần mềm đối với các khía cạnh của .NET và khi triển khai .NET, Mono vi phạm các bằng sáng chế đó. Do đó, những người này cảm thấy rằng việc sử dụng Mono có thể để ngỏ cho các vụ kiện bằng sáng chế.

Tôi cho rằng Mono rất gây tranh cãi bởi vì luật sáng chế nói chung là gây tranh cãi. Nhưng sau đó, có những trường hợp cụ thể trong đó các thực thể thúc đẩy Mono đã đưa ra các thỏa thuận với Microsoft trông rất giống các thỏa thuận bằng sáng chế, sau đó có thể được nhìn thấy để củng cố lập luận của Microsoft về tính hợp lệ của bất kỳ bằng sáng chế nào. (Tất nhiên, Microsoft đã không thực sự cung cấp bất kỳ bằng chứng nào cho thấy các bằng sáng chế tồn tại, do đó duy trì trạng thái không chắc chắn, giống như yêu cầu của họ về các bằng sáng chế bị vi phạm bởi hạt nhân linux.) Những thỏa thuận này dẫn đến cảm giác bị phản bội và mất lòng tin từ cộng đồng khác các thành viên, vì thỏa thuận dường như làm tổn thương toàn bộ cộng đồng (bằng cách tăng rủi ro bằng sáng chế) đồng thời mang lại lợi ích cho đơn vị thực hiện thỏa thuận với Microsoft. Vì vậy, điều đó dẫn đến một lý do khác khiến Mono gây tranh cãi:

Nhân tiện, tôi nên đề cập rằng tôi viết từ góc nhìn của một khán giả, và tôi không có kiến ​​thức chi tiết hoặc cụ thể về toàn bộ tình huống. Tôi đã cố gắng duy trì sự thiên vị và chủ yếu tránh những danh từ riêng để tránh kéo câu hỏi này vào cuộc tranh cãi mà nó hỏi.

Chỉnh sửa: Trong các bình luận, ai đó đã chỉ ra rằng Microsoft có một lời hứa cộng đồng không khẳng định quyền sáng chế chống lại việc triển khai .NET. Nhưng lời hứa có đủ tính hợp pháp trong đó mà tôi không cảm thấy mình thực sự có thể chắc chắn rằng lời hứa đó bảo vệ chặt chẽ mà không cần thuê luật sư để vượt qua. Sau khi đọc nó, tôi có thể nghĩ ra một số lỗ hổng tiềm năng có thể cho phép Microsoft khẳng định quyền sáng chế đối với Mono, nhưng kể từ IANAL , tôi không biết liệu bất kỳ lỗ hổng nào trong số này có thể được bảo vệ về mặt pháp lý hay chỉ là sự hiểu lầm của tôi về pháp lý của Microsoft. Vì vậy, trong khi lời hứa của cộng đồng là đáng khích lệ, chắc chắn nó không thể chấm dứt tranh cãi giữa trách nhiệm bằng sáng chế có thể của Mono.


3
Đây thực sự phải là câu trả lời được chấp nhận, đó là câu trả lời duy nhất thực sự trả lời câu hỏi. Mọi người ngần ngại sử dụng Mono vì sợ bị Microsoft kiện.

1
Cần được đề cập ở đây rằng Điều 52 của Công ước bằng sáng chế châu Âu đặc biệt cấm các bằng sáng chế trên phần mềm "như vậy" (Điều 52/2). Điều đó có nghĩa là ít nhất công dân và các tổ chức ở các quốc gia thành viên EU về cơ bản an toàn trước những thứ như chiến dịch cấp phép của Microsoft. (tuyên bố cuối cùng này đang bị tranh cãi nặng nề)
Stefano Palazzo

1
Mặc dù nghệ thuật. 52/2 đã có tuyên bố bằng sáng chế phần mềm thành công ở châu Âu.
txwikinger

Câu trả lời này không đầy đủ nếu không có cuộc thảo luận về "Lời hứa cộng đồng" ràng buộc về mặt pháp lý nhằm bảo vệ đơn nhân khỏi các vụ kiện bằng sáng chế của microsoft.
trampster

1
@trampster: CP bao gồm ECMA 334 và 335 chứ không phải tất cả C #, và như đã được xuất bản năm 2006, mọi thứ mới được thêm vào C # đều không được đề cập rõ ràng. Bạn có mong đợi Mono ở lại 5 năm (và đang phát triển) sau .NET để sử dụng CP không?
Fred Nurk

5

Mono là một porting mở của Microsoft .net.

Trên nền tảng ý thức hệ, điều này sử dụng một công nghệ khép kín cho các công nghệ mở và có thể không trùng với một số lý tưởng của GNU và / hoặc Linux.

Trên thực tế, Mono hiện tại không hỗ trợ nhiều chức năng như .NET trong phiên bản 3.5 của nó. Tuy nhiên, nó cho phép lập trình bằng C # (và các ngôn ngữ .NET khác) cho Linux, điều mà tôi nghĩ là một điều tốt và sẽ là không thể nếu không có Mono.


9
Cốt lõi cơ bản của .NET là một công nghệ / tiêu chuẩn mở (ngay cả khi triển khai chính của Microsoft không mở, C #, các phần cơ bản của thư viện chuẩn và thời gian chạy được xuất bản dưới dạng tiêu chuẩn ECMA).
JanC

@Popinou: Tôi chưa bao giờ gặp sự cố với các tính năng bị thiếu trong 3.5.

@JanC: Các bộ phận của Mono (System.Windows.Forms) không phải là một phần của tiêu chuẩn ECMA.
Broam

1
Trên thực tế, mono không phải là một cổng, nó là một triển khai phần mềm miễn phí của tiêu chuẩn mở EMCA. Và được bao phủ bởi một "Lời hứa cộng đồng" ràng buộc về mặt pháp lý để không kiện các triển khai của tiêu chuẩn mở đó.
trampster

1
@Broam System.Windows.Forms mặc định không có trong Ubuntu. Và không bắt buộc bởi bất kỳ ứng dụng đơn âm phổ biến nào.
trampster

5

Như những người khác đã nêu có hai lý do chính:

1) Tư tưởng: Người dùng không thoải mái với ý tưởng rằng Mono dựa trên một sản phẩm nguồn đóng của Microsoft. Tuy nhiên, bản thân Mono là nguồn mở.

2) Bằng sáng chế: Đây từng là một mối quan tâm lớn đã được Microsoft giải quyết khi họ áp dụng Lời hứa cộng đồng cho thông số kỹ thuật ECMA 334 và ECMA 335. Thật không may, một phần đáng kể mọi người không biết về điều này.


4
Lập luận là lời hứa của cộng đồng là không đủ - đó không phải là câu hỏi về nhận thức.
Broam

1

Tôi không sử dụng Mono vì

  1. Microsoft cáo buộc vi phạm IP mà không chỉ định những gì đang bị xâm phạm và họ đã từ chối làm rõ trên Mono, chỉ nói rằng người dùng Novell được bảo vệ. Tôi không tin lời hứa của cộng đồng Microsoft cho đến khi họ ủng hộ bằng hành động.
  2. Cấp phép đơn sắc là phức tạp. Thật khó để một chuyên gia pháp lý nói gì đến một người dùng bình thường để hiểu vì các bộ phận được cấp phép khác nhau. Không có gì trong nguồn mở quá phức tạp để hủy bỏ.
  3. Miguel de Icaza đã hứa nhưng đã thất bại trong việc hứa sẽ phát hành mã nguồn tuân thủ ECMA một cách kịp thời
  4. bối cảnh tràn ngập các công ty tuân theo các tiêu chuẩn của Microsoft bởi vì các tiêu chuẩn của họ tồn tại bị phá vỡ và khiến cho những người khác gặp bất lợi
  5. không có nhu cầu hoặc lợi ích rõ ràng khi có .NET trên Linux, rất ít được chuyển từ các nền tảng khác và mọi thứ có nguồn gốc từ Linux đều có thể được viết bằng các ngôn ngữ khác
  6. Mono là một vấn đề gây chia rẽ không cần thiết; nó làm chúng ta mất tập trung và chơi vào tay Microsoft bằng cách tránh xa các vấn đề quan trọng hơn

Tôi nghĩ rằng bất kỳ ai cũng có thể và nên sử dụng Mono nếu họ muốn, nhưng những người dùng không muốn sử dụng nó không nên mặc định.


Tôi không tin rằng Microsoft đã từng cáo buộc vi phạm bệnh nhân trong đơn nhân. Tuy nhiên, nó đã hứa sẽ không kiện trong một trang viên ràng buộc về mặt pháp lý.
trampster

động cơ không thực đòi hỏi một số gói mono; tho, tôi tin rằng, là tất cả các nguồn mở; một ngày nào đó, có thể, chúng có thể được thay thế bằng thứ gì đó mà chúng ta có thể giữ bình tĩnh.
Sức mạnh Bảo Bình
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.