Tôi có thể liên kết với thư viện GPL từ một ứng dụng nguồn đóng không?


34

Được rồi, trước khi mọi người hét lên về các câu hỏi trùng lặp, vâng, tôi đã thấy một số câu hỏi như thế này ở đây. Nhưng không ai trả lời câu hỏi.

Nếu tôi liên kết với thư viện GPL-ed mà không sửa đổi thư viện đó, tôi có cần phải phát hành mã nguồn của mình không?

Theo câu hỏi này , câu trả lời là có!

Nhưng câu trả lời này không thỏa đáng với tôi. Câu trả lời về cơ bản nói rằng tôi không thể sử dụng mã GPL theo bất kỳ cách nào mà không làm cho mã của tôi trở thành nguồn mở.

Nhưng nếu điều trước là đúng thì điều đó sẽ chỉ ra rằng không có cá nhân hay tổ chức nào có thể phát hành bất kỳ phần mềm độc quyền nào trên Linux. Mà phải sai. Đơn giản là vì để bất kỳ ứng dụng nào có thể làm bất cứ điều gì hữu ích, hãy mở các tệp, ghi vào bàn điều khiển, tạo các kết nối TCP, ứng dụng phải được liên kết với libcGPL-ed.

Vì vậy, câu hỏi của tôi là: Nếu GPL tuyên bố, như tất cả các câu trả lời trước đó trên trang web nói rằng, một chương trình liên kết với chương trình GPL khác phải là chính GPL, làm thế nào có thể tạo / phát hành / bán bất kỳ ứng dụng độc quyền nào tất cả những gì chạy trên Linux? Vì như tôi đã mô tả ở trên, ứng dụng phải được thích mã GPL chỉ để chạy trên Linux.

Một ví dụ thực tế hơn nói rằng tôi liên kết đến một thư viện dùng chung là GPL-ed trong một ứng dụng không phải GPL, điều đó có buộc ứng dụng không GPL trở thành GPL-ed không? Cụ thể hơn nếu tôi sử dụng thư viện GPL mà không sửa đổi nó, và sau đó phân phối thư viện đó dưới dạng .sohoặc .dll, liệu yêu cầu ứng dụng của tôi có phải là nguồn mở không?


9
Bạn tiếp tục hỏi cùng một câu hỏi với hy vọng có một câu trả lời khác. Bạn không thể sử dụng GPL trong phần mềm không tương thích GPL. Chết một cách đơn giản.
Andrew T Finnell

1
Anh ấy có thật không? Đáng trách. Đáp án đơn giản; Tại sao bạn không liên lạc với các tác giả của chương trình GPL và hỏi họ có phiền không? Nếu họ nói rằng đó là tốt đó! Nếu họ phản đối, thì việc cố gắng vũ trang họ bằng các chi tiết pháp lý sẽ khiến bạn rất không được lòng dân, bất kể bạn "đúng" đến mức nào.
James

3
@ James: Nếu họ chọn GPL, đó là tuyên bố khá mạnh mẽ họ làm tâm. Những người không ngại chọn MIT hoặc BSD hoặc LGPL ngay từ đầu. Rất hiếm khi thấy một thư viện dưới GPL đầy đủ. Khi bạn làm, bạn có thể gần như chắc chắn đó là cố ý.
Jan Hudec

@Jan Có thể, phụ thuộc vào ứng dụng và john-charles dự định sử dụng. Nhưng tôi chỉ nghĩ thật lạ khi JC tiếp cận điều này. Là jc chỉ đang cố gắng để có được câu trả lời anh ấy muốn? Có rất nhiều câu hỏi trên trang web này có thể được giải quyết bằng một câu "chỉ nói với họ, vì đã khóc thật to". :-)
James

@JanHudec: Tôi đồng ý. Tôi đã lập luận để phát hành một số IP của công ty chúng tôi dưới dạng thư viện GPL, vì điều đó về cơ bản là vô dụng với các đối thủ cạnh tranh và vẫn rất hữu ích cho cộng đồng của chúng tôi.
MSalters

Câu trả lời:


33

Nếu bạn liên kết với lib GPL thì bạn đã tạo một tác phẩm phái sinh và mã của bạn phải là GPL - điều này khác với mã L GPL, đặc biệt cho phép liên kết động của mã được cấp phép khác nhau. Các thư viện hệ thống bao gồm libc, đều là LGPL.

Ngoài ra còn có một sự miễn trừ đặc biệt cho các tiêu đề hạt nhân và libgcc của Linux (thư viện được trình biên dịch gọi ngầm).


19
Không có libc là LGPL - bạn được phép liên kết với các chương trình LGPL. Ngoài ra còn có miễn trừ chung cho các cuộc gọi kernel / hệ thống vì vậy không có đối số abotu thế nào là cuộc gọi hệ thống và thư viện
Martin Beckett

6
LGPL không phải là một giấy phép mới, nó được phát hành lần đầu tiên vào năm 1991. libc luôn là LGPL.
FigBug

4
@ john-charles - đó là lý do tại sao LGPL được phát minh trở lại vào năm 1991 với gplv2. AsLinux (và các hạt nhân FOSS khác) trở nên phổ biến - và đó là lý do tại sao ban đầu nó được gọi là Thư viện-GPL - có một nỗi sợ rằng mọi nhà cung cấp trình biên dịch sẽ không sử dụng gcc.
Martin Beckett

1
@MartinBeckett Đây là ý kiến ​​của FSF (bạn không thể liên kết với mã GPLd nếu bạn không cấp phép cho bạn theo GPL), tuy nhiên điều đó không phải bàn cãi. Chưa có vụ kiện lớn nào (mà tôi biết, nếu tôi sai, xin vui lòng sửa lại cho tôi) để xác nhận ý kiến ​​của FSF về liên kết.
K.Steff

2
@ john-charles - có tất cả các luật phổ biến được xét xử tại tòa án, nhưng có khá nhiều luật án lệ về bản quyền. Nếu tôi cho rằng bản sao DVD Batman chưa sửa đổi của tôi không phải là tác phẩm có nguồn gốc và vì vậy tôi có thể bán bao nhiêu tùy thích - MPAA dường như không đồng ý! GNU copyleft sử dụng bản quyền để thực thi thỏa thuận cấp phép theo một cách khá thông minh - một trong những lý do chưa bao giờ được thử nghiệm trước tòa là mọi người luôn giải quyết
Martin Beckett

7

Trong trường hợp chung, bạn đúng ở chỗ bạn không thể liên kết với thư viện GPL, phân phối mã của mình và sau đó không phát hành mã của mình dưới dạng GPL.

Tuy nhiên, có Ngoại lệ Thư viện Hệ thống , đó là cách mọi người liên kết với các lib của Linux và vẫn phát hành sản phẩm của họ theo giấy phép không phải GPL.

Một ngoại lệ khác là khi hai giấy phép tương thích với nhau. Kiểm tra trang giấy phép tương thích FSF để đọc thêm.

Cuối cùng, các tác giả của lib GPL có thể tạo ra các ngoại lệ cụ thể, chẳng hạn như cho mục đích phi thương mại hoặc sở thích.

Thật không may, có quá nhiều tiềm năng để có một quy tắc cứng và nhanh. Không có chi tiết cụ thể hơn trong câu hỏi của bạn, câu trả lời của bạn là "có thể không thể, nhưng có lẽ bạn có thể."


1
SLE cũng trả lời một câu hỏi về một chương trình là một công việc xuất phát của trình biên dịch vì nó chứa một trình phân tích cú pháp được tạo bởi trình biên dịch
Martin Beckett

3
Không, SLE cho phép phát triển mã GPL bằng cách sử dụng chuỗi công cụ không miễn phí và thời gian chạy tiêu chuẩn, ví dụ Visual Studio. Nó không cho phép liên kết ứng dụng không miễn phí với thư viện GPL.
Jan Hudec

1
Đầu ra của chương trình GPL không được bao phủ bởi GPL. Xem gnu.org/licenses/gpl-faq.html#GPLOutput
Maximus Minimus

-1

Câu trả lời ngắn gọn là không ai thực sự biết. (Cuộc thảo luận này là về GPL chứ không phải LGPL.)

GPL có ngôn ngữ mơ hồ về "Tác phẩm phái sinh", những người khác nhau diễn giải theo những cách khác nhau. Đồng thuận dường như là liên kết tĩnh vi phạm, nhưng việc gọi thông qua các ngắt hệ thống (ví dụ như Hạt nhân Linux) thì không. Điều thứ hai chủ yếu dựa trên thực tế là các công ty như Oracle giao hàng trên Linux và chưa bị kiện - điều này không rõ ràng trong giấy phép.

Liên kết động không rõ ràng, có thể 70/30 nói rằng nó vi phạm. Gọi một chương trình bằng cách sử dụng đường ống hoặc các cuộc gọi thủ tục từ xa, có thể 30/70 không vi phạm, mặc dù điều này về cơ bản là giống nhau. Gọi qua COM hoặc sử dụng Java Jar, hoàn toàn không rõ ràng.

Về cơ bản, nếu có bất kỳ nghi ngờ nào, và bạn không thích luật sư, thì hãy tránh xa GPL.


1
GPL không thực sự quá mơ hồ, và đã có thảo luận về luật án lệ xung quanh câu hỏi về cái gì và không phải là một tác phẩm phái sinh. Sự khác biệt giữa giao diện tòa nhà Linux và libc là cái trước là cần thiết để tạo ra phần mềm hoạt động (đã được xác nhận là ngoại lệ đối với bản quyền) trong khi cái sau thì không (bạn có thể tự thực hiện). Nó không liên quan gì đến cách các hoạt động được gọi, không liên quan đến pháp lý. TÔI ANAL, đây không phải là tư vấn pháp lý.
Jules

"70/30 nói rằng nó vi phạm" và "30/70 không vi phạm" - có phải là cố ý rằng tỷ lệ vi phạm / không vi phạm là như nhau không? "Mặc dù điều này về cơ bản là giống nhau" cho thấy rằng nó có ý định khác nhau.
Mateusz Konieczny
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.