Làm thế nào các giấy phép tương thích GPL như MIT có thể sử dụng được trong các chương trình GPL mà không phải tuân theo quy định về copyleft?


19

Tôi hiện đang kiểm tra các khả năng và ý nghĩa của việc liên kết với thư viện GPL cho một ứng dụng trong bối cảnh thương mại.

Từ những gì tôi đã hiểu về GPL, miễn là ứng dụng được sử dụng nội bộ, không có nghĩa vụ phải phát hành mã của nó (ngay cả khi một bản sao được chuyển đến một công ty con được kiểm soát).

Điều tôi không hiểu là điểm sau đây từ Câu hỏi thường gặp:

Nếu một thư viện được phát hành theo GPL (không phải LGPL), điều đó có nghĩa là bất kỳ phần mềm nào sử dụng nó phải thuộc GPL hoặc giấy phép tương thích GPL ? Có, bởi vì phần mềm như nó thực sự được chạy bao gồm thư viện.

Nếu tôi xem các giấy phép tương thích GPL , một số trong số chúng (như tăng cấp) dường như không áp đặt việc phát hành mã. Sử dụng nó sẽ tạo ra một tình huống trong đó bạn có thể tuân thủ giấy phép GPL mà không phải tôn trọng nghĩa vụ của nó là làm cho mã của bạn được công khai (điều này có vẻ không đáng tin lắm).

(NB: có các thành phần trong Adobe Photoshop được cấp phép theo boost và tôi không nghĩ mã có sẵn theo yêu cầu)

Giải thích hợp lý nhất là tôi đang thiếu thứ gì đó ... Bạn có thể vui lòng cho tôi biết tôi đã phạm sai lầm ở đâu không?


1
+1 để giải thích chỉ vì lý do tại sao bạn thực sự sẽ sử dụng từ đó trong một câu
Jimmy Hoffa

@JimmyHoffa +1 cho tình yêu ngôn ngữ của bạn.
Racheet

1
Nơi mà bạn đỏ mà Boost là GPL? Nó có giấy phép riêng của mình. Quy tắc chuẩn là GPLv2 không trộn lẫn với phần mềm độc quyền. Có một câu hỏi một tuần trên trang web này về cách khắc phục điều này. Chúng ta nên cấm tất cả các câu hỏi GPL.
Andrew T Finnell

Tôi thấy anh ấy nói Boost tương thích GPL. Phần còn lại của bình luận của tôi đứng.
Andrew T Finnell

Câu trả lời:


26

Làm thế nào các giấy phép tương thích GPL như MIT có thể sử dụng được trong các chương trình GPL mà không phải tuân theo quy định về copyleft?

Câu trả lời ngắn gọn: Không phải vậy. Họ sẽ trở thành đối tượng của copyleft.

Câu trả lời dài:

Các bài viết trên Wikipedia về khả năng tương thích giấy phép có một phần tốt về khả năng tương thích GPL :

Nhiều giấy phép phần mềm miễn phí phổ biến nhất, như giấy phép MIT / X ban đầu, ... là "tương thích GPL". Nghĩa là, mã của họ có thể được kết hợp với một chương trình theo GPL mà không có xung đột ( sự kết hợp mới sẽ áp dụng GPL cho toàn bộ ).

[nhấn mạnh thêm]

Và rõ ràng hơn từ Câu hỏi thường gặp của FSF về khả năng tương thích GPL :

Điều đó có nghĩa là giấy phép khác và GPL GNU tương thích; bạn có thể kết hợp mã được phát hành theo giấy phép khác với mã được phát hành theo GNU GPL trong một chương trình lớn hơn.

Và chỉ để chỉnh sửa, đây là là ý kiến ​​của FSF về các giấy phép khác nhau

Nhận xét của FSF về giấy phép tăng

Đây là giấy phép phần mềm miễn phí không bản quyền, lỏng lẻo, tương thích với GNU GPL.

Điều đó có nghĩa là mọi thứ được cấp phép theo Boost đều dễ dàng được GPL trợ cấp.

Nơi mà nó trở nên khó khăn

Giả sử chúng tôi có dự án Foođược cấp phép theo Boost và dự án Barđược cấp phép theo GPL và muốn sử dụngFoo .

Bar+Foođược cho phép vì các giấy phép tương thích và việc phát hành Bar+Foophải là GPL giống như BarGPL. Foo, tự nó và không có Bar hoặc Bar+Foo , vẫn có sẵn theo giấy phép Boost. Nói cách khác, Bar+Fookhông có tác động giấy phépFoo chính nó.

Giấy phép kết quả của sự kết hợp dự án là một sự kiện diễn xuất chuyển tiếp chỉ cho sự kết hợp. Nó không phải là một sự kiện hồi tố.

Vì vậy, nếu người khác muốn lấy Foovà làm một cái gì đó khác với nó, họ vẫn có thể tự do làm điều đó mà không cần cung cấp bản sao của GPL. Tuy nhiên, nếu họ lấy Bar+Foo, xóa Barvà chỉ sử dụng +Foothì họ vẫn bị ràng buộc bởi các điều khoản của GPL kể từ khi Bar+Foolà GPL.

Câu hỏi khác của bạn:

Từ những gì tôi đã hiểu về GPL, miễn là ứng dụng được sử dụng nội bộ, không có nghĩa vụ phải phát hành mã của nó (ngay cả khi một bản sao được chuyển đến một công ty con được kiểm soát).

Điều này được trả lời trực tiếp bởi Câu hỏi thường gặp về GPL của FSF về phân phối nguồn

GPL không yêu cầu bạn phát hành phiên bản sửa đổi của bạn, hoặc bất kỳ phần nào của nó. Bạn có thể tự do sửa đổi và sử dụng chúng một cách riêng tư mà không bao giờ phát hành chúng. Điều này áp dụng cho các tổ chức (bao gồm cả các công ty), quá; một tổ chức có thể tạo một phiên bản sửa đổi và sử dụng nó trong nội bộ mà không bao giờ phát hành ra bên ngoài tổ chức.

Các công ty con thuộc sở hữu hoàn toàn được coi là một phần của tổ chức mẹ, vì vậy bạn sẽ rõ ràng về mặt pháp lý. FSF sẽ chỉ ra rằng bạn đang vi phạm tinh thần của Phần mềm Tự do.


3
Tôi tự hỏi: Nếu một nhân viên là sử dụng các phiên bản sửa đổi chưa được công bố trong công ty, ông sẽ có quyền lấy mã nguồn từ các công ty?
unor

@ GlenH7: cảm ơn vì lời giải thích rất hữu ích của bạn (đặc biệt là phần "Trường hợp khó khăn")
Louis Morazzani

1
@unor - Không, điều đó sẽ tạo thành việc sử dụng riêng của Công ty (nhân viên là một phần của công ty, không phải là một thực thể riêng biệt).
iheanyi

"Tuy nhiên, nếu họ lấy Bar + Foo, xóa Bar và chỉ sử dụng + Foo thì họ vẫn bị ràng buộc bởi các điều khoản của GPL vì Bar + Foo là GPL'd." Bạn có chắc không? Foo vẫn được cấp phép theo giấy phép Boost. Theo tôi hiểu, giấy phép Boost không nên bị xóa, ngay cả khi kết hợp với mã GPL. ("[...] cấp giấy phép trên, hạn chế này và từ chối trách nhiệm sau, phải được bao gồm trong tất cả các bản sao của Phần mềm, toàn bộ hoặc một phần và tất cả các tác phẩm phái sinh của Phần mềm [...]")
lesderid

2
@ GlenH7 Chắc chắn, nhưng họ thậm chí có được phép tái cấp phép Footheo GPL không? Việc cấp phép lại sẽ ổn, nhưng sau đó họ cũng sẽ phải giữ giấy phép Boost Bar+Foo, phải không?
lesderid

8

Theo "GPL tương thích", ý họ là, giấy phép không xung đột với GPL. Giấy phép ít hạn chế hơn, như giấy phép Boost, "tương thích" với GPL vì nó không hạn chế người dùng mã làm bất cứ điều gì mà GPL sẽ cho phép người dùng làm. Nghĩa là, giấy phép Boost cho phép mọi người sao chép tự do, đó là những gì GPL yêu cầu mọi người được phép.

Một ví dụ về giấy phép không "tương thích" sẽ là giấy phép yêu cầu một khoản phí cho các tác giả ban đầu để người dùng phân phối các bản sao. Vì GPL rõ ràng cho phép cả phân phối miễn phí và trả phí, giấy phép hạn chế hơn này sẽ không tương thích.

Nói cách khác, GPL nói "Bạn phải cho phép $ A, $ B và $ C". Bất kỳ giấy phép nào cho phép $ A, $ B, $ C và $ D và $ E đều tương thích. Giấy phép cho phép $ A và $ B nhưng không phải $ C sẽ không có.


4
Vì vậy, công việc mới, kết hợp được cấp phép hoàn toàn theo GPL, đúng không? Nhưng mã gốc được cấp phép theo MIT vẫn có thể được phân phối riêng theo MIT mà không cần chạy GPL, đúng không?
Robert Harvey

1
IANAL, nhưng vâng, đó là cách nó hoạt động.
Fabio Fracassi

4
" bởi vì nó không hạn chế người dùng mã làm bất cứ điều gì mà GPL sẽ cho phép người dùng làm " - Và cũng bởi vì nó không ngăn người dùng làm bất cứ điều gì mà GPL sẽ yêu cầu họ làm.
Ross Patterson

2
Nitlog nhỏ nhưng GPL không thực sự cấm tính phí cho bất cứ thứ gì; xem gnu.org/licenses/gpl-faq.html#DoesTheGPL ALLowMoney
Maximus Minimus

1
Tôi khá chắc chắn rằng GPL cho phép mọi người tính phí phân phối, nhưng không cho phép mọi người yêu cầu người khác tính phí nếu họ tự phân phối. Nói cách khác, tôi có thể tính phí cho bạn một bản sao, nhưng tôi không thể yêu cầu bạn gửi cho tôi một khoản thanh toán nếu bạn đưa một bản sao cho bên thứ ba.
Gort Robot

1

Bạn đã không phạm sai lầm: câu trả lời FAQ không đầy đủ. Đáng lẽ ra phải nói rằng chương trình kết hợp phải được cấp phép theo GPL, không phải là giấy phép tương thích GPL. Nó đã được sửa chữa (xem bên dưới: Tôi đã nhấn mạnh một chút quan trọng):

Có, bởi vì chương trình thực sự liên kết đến thư viện. Như vậy, các điều khoản của GPL áp dụng cho toàn bộ kết hợp. Các mô-đun phần mềm liên kết với thư viện có thể theo các giấy phép tương thích GPL khác nhau, nhưng toàn bộ công việc phải được cấp phép theo GPL . Xem thêm: Có nghĩa là gì khi nói giấy phép tương thích với GPL?

Trước đây tôi đã nói rằng "nếu một thư viện được phát hành theo GPL thì bất kỳ phần mềm nào sử dụng nó phải nằm dưới chính GPL do bản chất được gọi là 'virus' của nó. Không thể sử dụng giấy phép tương thích GPL như boost . " "Phần mềm sử dụng nó" tôi có nghĩa là các mô-đun và thư viện kết hợp.


Tôi tin rằng đây là một sự hiểu lầm phổ biến. Nó không phải là cần thiết để phát hành của bạn một phần của mã theo GPL, miễn là nó có một giấy phép tương thích. Giấy phép cho phần của bạn cũng có thể được cho phép hơn, nhưng không ít hơn, so với GPL. Chỉ có công việc kết hợp vẫn thuộc GPL, do đó, các hạn chế bổ sung của GPL chỉ áp dụng nếu một người sử dụng mã của bạn cùng với thư viện GPL được liên kết. Xem gnu.org/licenses/gpl-faq.html#GPLModuleLicense
ERT

1
Vâng đúng vậy. Câu trả lời ban đầu của tôi có thể đã bị giải thích sai. Hạnh phúc thay, bây giờ tất cả chỉ còn lại, vì Gnu đã cập nhật Câu hỏi thường gặp của họ để nói điều đúng.
Bennett McElwee
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.