2009-07-11 27 views
86

Tôi gặp sự cố khi hiểu các quyền sử dụng của nguồn mở. Tôi đọc ở đâu đó rằng GPL hoặc LGPL thi hành phần mềm sử dụng phần mềm GPL cũng phải được phát hành nguồn mở. Tôi muốn tạo một ứng dụng sử dụng một số thư viện nhận dạng hình ảnh nguồn mở. Tôi có thể bán ứng dụng này hay nó phải là nguồn mở?GPL và LGPL hạn chế cấp phép nguồn mở

Cảm ơn!

Trả lời

67

LGPL cho phép bạn sử dụng và phân phối phần mềm nguồn mở với ứng dụng của bạn mà không cần giải mã mã nguồn cho ứng dụng của bạn.

GPL yêu cầu bạn giải phóng mã nguồn của ứng dụng nếu bạn chọn sử dụng và phân phối phần mềm mã nguồn mở được cấp phép GPL với ứng dụng của bạn. Nói cách khác, đơn của bạn cũng phải được cấp phép theo GPL.

+11

Lưu ý rằng LGPL nêu rõ thư viện đã sử dụng phải được thay thế. Vì vậy, liên kết tĩnh là không thể. – Dykam

+1

Vì vậy, một "DLL" (Thư viện liên kết động) sẽ là hợp pháp, đúng không? –

+0

Chỉ khi bạn cũng cung cấp mã nguồn cho DLL đó, cũng như các tệp tiêu đề hoặc tài liệu cần thiết để có thể giao tiếp với phần còn lại của ứng dụng, bất cứ ai cũng muốn sửa đổi hoặc viết lại từ đầu, DLL đó. – thomasrutter

3

Phân biệt GPL so với LGPL xác định xem bạn có làm/không phải giải phóng nguồn cho ứng dụng của bạn cho bất kỳ ai có bản sao nhị phân hay không. Dù bằng cách nào bạn vẫn có thể bán ứng dụng.

6

GPL không cấm bạn bán phần mềm. Tuy nhiên, bạn phải cung cấp các nguồn cho phần mềm.

Câu hỏi về cách sử dụng phức tạp hơn một chút. GNU/Linux được phát hành theo GPL. Không có gì cấm bạn viết phần mềm chạy dưới Linux bất kể giấy phép phần mềm của bạn. Tuy nhiên, bạn không thể phân phối Linux cùng với phần mềm của bạn. Đó thường là một vấn đề với các thư viện cần phải là một phần của một chương trình. Đó là những gì mà giấy phép LGPL dành cho. Bạn có thể biên dịch một chương trình c mà bạn viết bằng gcc (do đó sử dụng các thư viện thường trình chạy được cấp phép của LGPL từ gcc) và vẫn phát hành phần mềm mà không có các hạn chế của GPL.

Tôi nghĩ đó là ý chính của nó. Tuy nhiên, điều này không theo bất kỳ cách tư vấn pháp lý nào. Đối với tư vấn pháp lý, bạn phải giữ một luật sư được chứng nhận có thể tư vấn pháp lý cho phù hợp với các trường hợp cụ thể của bạn.

Hy vọng điều này sẽ hữu ích.

23

IANAL, nhưng các khái niệm khá đơn giản.

Trước tiên, bạn và luật sư của bạn phải đọc các giấy phép GPLLGPL. Thứ hai, bạn nên đọc số GPL FAQ. Theo tôi hiểu, bạn có thể nghĩ đến việc sử dụng thư viện GPL/LGPL theo cách này:

  • Nếu bạn liên kết động hoặc tĩnh với thư viện GPL hoặc LGPL, bạn đã tạo một tác phẩm phái sinh.
  • Nếu bạn sử dụng thư viện là GPL và bạn liên kết với thư viện đó, phần mềm của bạn must be released với số compatible license.
  • Nếu bạn sử dụng thư viện LGPL và bạn liên kết động với thư viện đó, phần mềm của bạn không phải được phát hành với giấy phép tương thích, nhưng bạn vẫn phải tuân thủ LGPL.
  • Nếu bạn sử dụng thư viện là LGPL và bạn liên kết tĩnh với thư viện đó, phần mềm của bạn phải được phát hành với giấy phép tương thích.
  • Giấy phép GPL/LGPL có nghĩa là "miễn phí" như trong "free speech", not "free beer". Bạn có thể tạo một tác phẩm phái sinh và bán nó với số tiền lớn, nhưng bạn phải tuân thủ GPL/LGPL.
+15

"Đầu tiên, bạn và luật sư của bạn phải đọc giấy phép GPL và LGPL." - giết tôi ngay bây giờ – d512

+2

"đơn giản". Vì vậy, đơn giản trong thực tế là bạn cần phải tham gia một luật sư chỉ để xem bạn có thể _use_ một chút mã. Đây là lý do tại sao các nhà phát triển không bao giờ nên sử dụng giấy phép GPL. – Womble

6

Nếu bạn cắt và dán hoặc liên kết mã GPL vào ứng dụng của bạn, ứng dụng của bạn phải được cấp phép theo GPL và sau đó bạn được yêu cầu phát hành mã.

Tuy nhiên, bạn vẫn có thể bán ứng dụng của mình và afaik, sự phiền toái duy nhất là bạn giải phóng mã nguồn cho khách hàng của mình.

Nếu thư viện bạn liên kết là Lesser Gnu Public License aka LGPL thì bạn không cần phải giải mã mã của ứng dụng nhưng bạn vẫn phải giải phóng mọi sửa đổi nếu bạn sửa đổi mã lgpl'd.

+0

"phát hành mã nguồn cho khách hàng của bạn" - thực sự? chỉ cho họ? Tôi nghĩ rằng src đã được công bố công khai? – relascope

+0

Tôi không phải là người nói tiếng Anh bản xứ hay luật sư. https://www.gnu.org/licenses/gpl-faq.html#WhatDoesWrittenOfferValid tuyên bố rằng một trong hầu hết cung cấp nguồn cho bất kỳ ai có quyền truy cập vào tệp nhị phân. Nó không nói rằng bất cứ ai có thể yêu cầu nguồn, nhưng bất cứ ai đã được cung cấp với các nhị phân, hoặc trực tiếp từ bạn hoặc bởi khách hàng trực tiếp của bạn. – rasjani

+0

nói trực tiếp, chỉ cho khách hàng ... "Nhưng nếu bạn phát hành phiên bản đã sửa đổi cho công chúng theo cách nào đó, GPL yêu cầu bạn phải tạo mã nguồn đã sửa đổi cho người dùng của chương trình, theo GPL". – relascope

30
  • GPL

    các nhà phát triển khác có thể mượn và sửa đổi mã và tái phân phối nó như là một phần của dự án của riêng mình, chỉ khi toàn bộ dự án của họ cũng được cấp phép theo GPL.

    Điều này ngăn mã được sử dụng trong phần mềm sở hữu độc quyền.

  • LGPL

    các nhà phát triển khác có thể mượn và sửa đổi mã và tái phân phối nó như là một phần của dự án của riêng mình, với điều kiện là phần được sử dụng theo LGPL được tái cấp phép theo LGPL. Các phần khác của dự án được phép có giấy phép khác.

    Điều này cho phép mã được sử dụng trong phần mềm độc quyền khác.

LGPL có một số điều kiện bổ sung cần được đáp ứng để có thể phân phối nó trong một dự án có giấy phép khác. Ví dụ: phải có thể bất kỳ người dùng nào của phần mềm đã hoàn thành sửa đổi, biên dịch lại hoặc thay thế phần của phần mềm được cấp phép theo LGPL và sử dụng mã được sửa đổi này với cùng một phần mềm. Nếu bạn đang xuất bản phần mềm độc quyền khác có chứa một số mã LGPL, một cách để đáp ứng yêu cầu này là đặt mã LGPL vào một thư viện được liên kết động riêng biệt và phân phối với phần mềm của bạn các tệp tiêu đề cần thiết và tài liệu cần thiết để biên dịch lại LGPL phần theo cách mà nó vẫn có thể được liên kết và sử dụng với phần mềm như được cung cấp. Không thể thực hiện các bước để ngăn chặn việc sửa đổi mã LGPL như làm xáo trộn chính mã đó hoặc các tệp tiêu đề API hoặc. Lưu ý rằng LGPL tương thích với GPL: bạn có thể chọn "nâng cấp" mã lên GPL và kết hợp nó vào một dự án được cấp phép GPL hoàn toàn như được nêu trong điểm bullet đầu tiên của tôi nếu bạn muốn. Tuy nhiên, bạn không thể đi theo cách khác và cấp lại mã được cấp phép GPL như LGPL.

Các vấn đề liên quan