Giấy phép MIT so với GPL [đã đóng]


122

Giấy phép MIT tương thích với GPL. Giấy phép GPL có tương thích với MIT không? tức là tôi có thể đưa mã được cấp phép MIT vào sản phẩm được cấp phép GPL, nhưng tôi có thể đưa mã được cấp phép GPL vào sản phẩm được MIT cấp phép không?

Đối với tôi, có vẻ như sự khác biệt chính giữa giấy phép MIT và GPL là MIT không yêu cầu các sửa đổi phải có nguồn mở trong khi GPL thì có. Đúng không? GPL có hạn chế hơn giấy phép MIT không?


1
en.wikipedia.org/wiki/MIT_License Giấy phép cũng được GPL-tương thích, có nghĩa là ...
Michael Petrotta

Câu trả lời:


76

Đối với tôi, có vẻ như sự khác biệt chính giữa giấy phép MIT và GPL là MIT không yêu cầu các sửa đổi phải có nguồn mở trong khi GPL thì có.

Đúng - nói chung. Bạn không cần phải mã nguồn mở các thay đổi của mình nếu bạn đang sử dụng GPL. Bạn có thể sửa đổi nó và sử dụng nó cho mục đích riêng của mình miễn là bạn không phân phối nó. NHƯNG ... nếu bạn PHẢI phân phối nó, thì toàn bộ dự án của bạn đang sử dụng mã GPL cũng tự động trở thành GPL. Có nghĩa là, nó phải có nguồn mở và người nhận có tất cả các quyền giống như bạn - có nghĩa là, họ có thể quay lại và phân phối nó, sửa đổi nó, bán nó, v.v. Và điều đó sẽ bao gồm mã độc quyền của bạn mà sau đó sẽ không còn độc quyền - nó trở thành mã nguồn mở.

Sự khác biệt với MIT là ngay cả khi bạn thực sự phân phối mã độc quyền của mình đang sử dụng mã được cấp phép MIT, bạn không cần phải đặt mã nguồn mở. Bạn có thể phân phối nó dưới dạng một ứng dụng đóng, nơi mã được mã hóa hoặc ở dạng nhị phân. Bao gồm cả mã được cấp phép MIT có thể được mã hóa, miễn là nó mang theo thông báo cấp phép của MIT.

GPL có hạn chế hơn giấy phép MIT không?

Vâng, rất nhiều.


16
Xin lưu ý rằng GPL không làm cho phần mềm trở thành "mã nguồn mở". Phần mềm theo GPL trở nên MIỄN PHÍ (như để bảo vệ quyền tự do của người dùng). Phần mềm miễn phí là một phong trào lâu đời hơn và có ý nghĩa hơn những thứ mở. Đây là một bài viết về sự khác biệt: gnu.org/phiosystemhy/open-source-misses-the-point.html . Cảm ơn
Jorge Orpinel

11
Vì những lý do tương tự, người ta có thể tranh luận rằng MIT hạn chế hơn, vì nó không bảo vệ tất cả các quyền tự do của người dùng và có thể dẫn đến tư nhân hóa phần mềm (= hạn chế và mất quyền kiểm soát của người dùng). Cảm ơn một lần nữa
Jorge Orpinel

3
@tcurdt Tại sao đây không phải là "nơi thích hợp" để nói về tự do? Tại sao lại tự kiểm duyệt? Và không, rất tiếc đó không phải là 'miễn phí' nghĩa là gì. Thậm chí không có nghĩa là 'mở'. Chỉ để làm rõ cả giấy phép MIT và GPL đều không cho phép bạn làm "bất cứ điều gì với nó". Chỉ mã không có giấy phép mới có thể thuộc loại đó. Chúc mừng
Jorge Orpinel

3
Một lần nữa lại sai, đây là những gì stackoverflow được cho là dành cho stackoverflow.com/help/on-topic . Ai đó nghĩ rằng điều này là lạc đề không làm cho nó như vậy. Bất chấp, tôi có quyền tự do ngôn luận và đây là một không gian công cộng nên ... Yeah. Bạn chỉ không thể xử lý việc sai. Trên thực tế, tôi đang cố gắng giúp bạn và những độc giả khác nếu tôi có thể. Dù sao, chúc may mắn
Jorge Orpinel,

8
@JorgeOrpinel "Chỉ mã không có giấy phép mới có thể thuộc danh mục đó." Điều đó rất sai lầm, mã không có giấy phép là PROPRIETARY / "tất cả các quyền". Nếu bạn đi vòng quanh và phân phối lại mã mà người khác đã tạo ra mà không có giấy phép, bạn đang gặp phải nhiều rắc rối pháp lý. Bạn nói rằng bạn đang cố gắng "giúp đỡ bạn và những người đọc khác" nhưng việc khiến người đọc bị kiện không thực sự hữu ích. Chỉ là FYI.
dấu chấm phẩy

45

Tôi có thể đưa mã được cấp phép GPL vào một sản phẩm được cấp phép của MIT không?

Bạn có thể. GPL là phần mềm miễn phí cũng như MIT, cả hai giấy phép đều không hạn chế bạn mang mã lại với nhau trong đó "bao gồm" luôn là hai chiều.

Về quyền tác giả đối với một tác phẩm kết hợp (có nghĩa là hai hoặc nhiều tác phẩm tạo thành một tác phẩm cùng nhau), sẽ không có gì khác biệt nếu một tác phẩm "lớn" hơn tác phẩm kia hay không.

Vì vậy, nếu bạn bao gồm mã được cấp phép GPL trong một sản phẩm được cấp phép của MIT, bạn sẽ đồng thời đưa sản phẩm được cấp phép của MIT vào mã được cấp phép GPL.

Theo ý kiến ​​thứ hai, OSI đã liệt kê các tiêu chí sau (chi tiết hơn) cho cả hai giấy phép (MIT và GPL):

  1. Phân phối lại miễn phí
  2. Mã nguồn
  3. Tác phẩm có nguồn gốc
  4. Tính toàn vẹn của mã nguồn của tác giả
  5. Không phân biệt đối xử với người hoặc nhóm
  6. Không phân biệt đối xử đối với các lĩnh vực nỗ lực
  7. Phân phối Giấy phép
  8. Giấy phép không được cụ thể cho một sản phẩm
  9. Giấy phép không được hạn chế phần mềm khác
  10. Giấy phép phải là công nghệ trung lập

Cả hai đều cho phép tạo ra các tác phẩm kết hợp, đó là những gì bạn đang yêu cầu.

Nếu việc kết hợp hai tác phẩm được coi là một sản phẩm phái sinh, thì điều này cũng không bị hạn chế bởi cả hai giấy phép.

Và cả hai giấy phép không hạn chế phân phối phần mềm.

Đối với tôi, có vẻ như sự khác biệt chính giữa giấy phép MIT và GPL là MIT không yêu cầu các sửa đổi phải có nguồn mở trong khi GPL thì có.

GPL không yêu cầu bạn tiết lộ các sửa đổi chỉ vì bạn đã thực hiện chúng. Điều đó không chính xác.

Bạn có thể kết hợp điều này với việc phân phối phần mềm theo GPL mà không phải là những gì bạn đã hỏi trực tiếp.

Điều đó có chính xác không - GPL có hạn chế hơn giấy phép MIT không?

Đây là cách tôi hiểu nó:

Đối với số lượng phân phối, bạn cần đặt toàn bộ gói hàng theo GPL. Mã MIT bên trong gói sẽ vẫn có sẵn theo MIT trong khi GPL áp dụng cho toàn bộ gói nếu không bị giới hạn bởi các quyền cao hơn.

"Hạn chế" hay "hạn chế hơn" / "ít hạn chế hơn" phụ thuộc rất nhiều vào quan điểm. Đối với người dùng phần mềm, MIT có thể dẫn đến phần mềm bị hạn chế hơn phần mềm có sẵn theo GPL, thậm chí một số người còn gọi GPL ngày nay hạn chế hơn. Người dùng cụ thể đó sẽ gọi MIT hạn chế hơn. Chỉ là chủ quan khi nói như vậy và những người khác nhau sẽ cho bạn những câu trả lời khác nhau về điều đó.

Vì chỉ là chủ quan khi nói về các hạn chế của các giấy phép khác nhau, thay vào đó, bạn nên suy nghĩ về những gì bạn muốn đạt được:

  • Nếu bạn muốn hạn chế việc sử dụng các sửa đổi của mình, thì MIT có thể hạn chế hơn GPL để phân phối và đó có thể là thứ bạn đang tìm kiếm.
  • Trong trường hợp bạn muốn đảm bảo rằng quyền tự do của phần mềm của bạn không bị hạn chế nhiều bởi những người dùng mà bạn phân phối nó, thì bạn có thể muốn phát hành theo GPL thay vì MIT.

Miễn là bạn là tác giả, bạn là người có thể quyết định.

Vì vậy, người bị hạn chế nhất từ ​​trước đến nay là tác giả, bất kể ai đang chọn giấy phép nào;)


1
"Mã MIT bên trong gói sẽ vẫn có sẵn trong MIT" Tôi không hoàn toàn chắc chắn về nó. một dự án GPL + MIT nên trở thành một dự án mã nguồn mở, bao gồm cả phần MIT. Đối với vấn đề khác, LGPL ít xâm phạm hơn đối với toàn bộ dự án.
magallanes

13
Mặc dù bạn làm rõ câu trả lời của mình ở phần sau, nhưng sẽ rất dễ gây hiểu lầm khi bắt đầu bằng cách nói rằng "bạn có thể" đưa mã được cấp phép GPL vào một dự án được MIT cấp phép. Một dự án ban đầu được MIT cấp phép không còn có thể được phân phối tổng thể theo giấy phép MIT khi nó chứa mã chỉ có sẵn theo GPL.
antinome

3
Cũng sai lầm khi cho rằng hạn chế là chủ quan. Đó là một câu hỏi hợp lý và không chủ quan khi đặt ra câu hỏi "Tôi có thể thực hiện những hành động hợp pháp nào với những tệp mà tôi đã có được?" Theo GPL, tập hợp các hành động đó trên thực tế là một tập hợp con thích hợp của những hành động đó sẽ thuộc về MIT.
antinome

1
@hakra: Không thể đưa mã được cấp phép GPL vào một dự án được MIT cấp phép vì toàn bộ kết quả không còn được MIT cấp phép, ngay cả khi bạn không phân phối nó. (Nếu nó đã, sau đó các điều khoản của giấy phép MIT sẽ cho phép bạn phân phối nó!)
antinome

9
tl; dr: Ứng dụng được MIT cấp phép có thể bao gồm mã GPL nhưng ứng dụng kết quả không được MIT cấp phép.
antinome

16

Bạn đúng là GPL hạn chế hơn giấy phép MIT.

Bạn không thể đưa mã GPL vào một sản phẩm được cấp phép của MIT. Nếu bạn phân phối một tác phẩm kết hợp kết hợp mã GPL và MIT (ngoại trừ trong một số trường hợp cụ thể, chẳng hạn như 'tập hợp đơn thuần'), việc phân phối đó phải tuân thủ GPL.

Bạn có thể đưa mã được cấp phép MIT vào sản phẩm GPL. Toàn bộ công việc kết hợp phải được phân phối theo cách tuân thủ GPL. Nếu bạn đã thực hiện các thay đổi đối với các phần MIT của mã, bạn sẽ được yêu cầu xuất bản nguồn cho những thay đổi đó nếu bạn phân phối một ứng dụng có chứa mã GPL và MIT.

Nếu bạn là chủ sở hữu bản quyền của mã GPL, tất nhiên bạn có thể chọn phát hành mã đó theo giấy phép MIT thay thế - trong trường hợp đó, đó là mã của bạn và bạn có thể xuất bản mã đó theo bao nhiêu giấy phép tùy thích.


3
trừ khi dự án theo giấy phép kép, ví dụ jquery.
buggedcom

7
@buggedcom - Bạn có thể cấp phép kép các phần theo giấy phép MIT, nhưng bạn không thể cấp phép kép cho thư viện MIT / GPL kết hợp - nó chỉ phải được cấp phép theo GPL. (Bạn không thể lấy các bộ phận được cấp phép GPL và cấp phép lại chúng theo giấy phép MIT, vì điều đó trái với các điều khoản GPL). Trong trường hợp của jQuery, chủ sở hữu bản quyền của mã đã phát hành nó theo giấy phép kép, vì vậy đó không phải là vấn đề, nhưng nếu họ "mượn" một số mã GPL từ một nơi khác, họ sẽ không thể cấp phép cho MIT nữa. .
Đánh dấu H

AFAIK điều đó không hoàn toàn đúng. Theo FSF, GPL tương thích với giấy phép MIT [1] Thật không may, điều đó không thay đổi thực tế là bản thân dự án không còn được bảo hiểm đầy đủ theo giấy phép MIT nữa ... đó là những gì mọi người thường mong đợi. Bạn sẽ không thể sử dụng toàn bộ dự án trong bối cảnh thương mại nếu không phát hành mã. Để tránh nhầm lẫn này, tốt hơn là không đưa mã GPL vào một dự án được MIT cấp phép. Điều đó bạn không thể, mặc dù là sai. [1] gnu.org/licenses/license-list.html#SoftwareLicenses
tcurdt

... nhưng tôi đoán nó phụ thuộc vào những gì bạn định nghĩa là "sản phẩm"
tcurdt

2
Một sản phẩm được cấp phép của MIT (có lẽ từ 'ứng dụng' sẽ tốt hơn) không thể bao gồm mã GPL. Bạn có thể thêm mã GPL vào sản phẩm MIT, nhưng ứng dụng kết quả chỉ có thể được phân phối theo giấy phép GPL. Tôi chưa bao giờ thấy ai đó mô tả một ứng dụng chỉ có thể được phân phối theo các điều khoản của GPL như một 'sản phẩm được cấp phép của MIT'. Nếu giấy phép không "tương thích", bạn hoàn toàn không thể tạo ra một tác phẩm kết hợp - thực tế là chúng tương thích có nghĩa là bạn có thể tạo ra một tác phẩm kết hợp mà bạn có thể phân phối và được cấp phép GPL.
JosephH

5

IANAL nhưng như tôi thấy ...

Trong khi bạn có thể kết hợp mã GPL và MIT, GPL đang bị hỏng. Có nghĩa là toàn bộ gói có những hạn chế của GPL. Vì điều đó hạn chế hơn nên bạn không thể sử dụng nó trong phần mềm thương mại (hoặc đúng hơn là mã nguồn đóng). Điều này cũng có nghĩa là nếu bạn có một dự án MIT / BSD / ASL, bạn sẽ không muốn thêm các phần phụ thuộc vào mã GPL.

Việc thêm phần phụ thuộc GPL không thay đổi giấy phép mã của bạn nhưng nó sẽ giới hạn những gì mọi người có thể làm với tạo tác của dự án của bạn. Đây cũng là lý do tại sao ASF không cho phép phụ thuộc vào mã GPL cho các dự án của họ.

http://www.apache.org/licenses/GPL-compatibility.html


1
+1 Trên thực tế, Microsoft đã xác định chính xác vấn đề này một cách hoàn hảo, GPL rất phổ biến vì nó biến mọi dự án thành mã nguồn mở.
magallanes

10
Nó không phải là một vấn đề . GPL được thiết kế lan truyền. Nó nhằm mục đích được sử dụng bởi những người muốn làm cho mã của họ miễn phí để người khác sử dụng theo cách họ muốn, nhưng cũng yêu cầu những người khác xuất bản bản sao của phần mềm đó hoặc phần mềm phái sinh phải tôn trọng người dùng theo cách tương tự. GPL là về người dùng . Nó không phải là về các công ty tối đa hóa lợi nhuận thông qua các độc quyền do nhà nước thực thi, vì vậy thực tế là nó đệ quy thực sự là vẻ đẹp và sức mạnh của nó, không phải là một 'vấn đề' mà ​​Microsoft có thể 'xác định một cách hoàn hảo'. Không cần hiểu biết đặc biệt để nhận ra rằng GPL có tính lan truyền ~ Wikipedia là đủ.
Carl Smith
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.