Chương trình GPLv2 có thể dựa vào các thư viện được cấp phép của Apache không?


12

Một chương trình phần mềm được cấp phép GPL (phiên bản 2) có thể dựa vào các thư viện được cấp phép theo APLv2 mà không cần chạy GPL không? Ngôn ngữ ở đây gợi ý cho tôi có lẽ là không.

Trong trường hợp cụ thể của tôi, tôi đang xem một daemon sử dụng một số thư viện bên ngoài được cấp phép APLv2.

CẬP NHẬT (Đáp lại câu trả lời / bình luận.)

  1. Với mục đích của câu hỏi này, tôi không thể đăng ký lại chương trình chính (trình nền)
  2. Chương trình chính đã được mở rộng với chức năng sử dụng apr-utilvà có lẽ các thành phần APLv2 khác

Câu hỏi của tôi là, tôi có thể giải phóng daemon mở rộng theo GPLv2 không, hay đây là thứ tôi cần giữ cho riêng mình (không phân phối) và / hoặc thực hiện lại mà không có APLv2 nếu tôi cam kết (a) phát hành tiện ích mở rộng này, và, (b) giữ daemon GPL'd?


2
Tài liệu bạn liên kết nói rõ rằng không. Tuy nhiên, hầu hết mã GPL ngoài đó đều có điều khoản "hoặc, tùy chọn của bạn, bất kỳ phiên bản mới hơn", có nghĩa là bạn có thể coi nó là GPLv3 và điều đó là ổn.
Jan Hudec

Câu trả lời:


7

Trước tiên hãy làm rõ một số thuật ngữ. Khi FSF nói rằng giấy phép tương thích với GPL, họ không có nghĩa là nhiều người hiểu điều đó có nghĩa gì. Nhiều người giải thích "tương thích" có nghĩa là hai phần mềm có thể cùng tồn tại trong cùng một ứng dụng.

Điều đó gần với ý nghĩa của FSF, nhưng việc cung cấp bản sao của GPL sẽ đưa mọi thứ đi xa hơn một chút.

Từ FAQ GPL , nhấn mạnh của tôi.

Đ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.
Tất cả các phiên bản GNU GPL cho phép các kết hợp đó một cách riêng tư; họ cũng cho phép phân phối các kết hợp như vậy với điều kiện kết hợp được phát hành theo cùng phiên bản GNU GPL .

Vì vậy, giấy phép tương thích với GPL nếu các điều khoản của nó có thể được hấp thụ bên dưới GPL.


Vì vậy, hãy nhìn vào APLv2 và GPLv3.

  • APLv2_Lib + GPLv3_Lib => Kết hợp lib như GPLv3 là được.
  • APLv2_Lib + GPLv3_Lib => Kết hợp lib như APLv2 không ổn.

Và Apache nói nhiều như ở đây :

Chúng tôi tránh phần mềm GPLv3 vì chỉ liên kết với nó được các tác giả GPLv3 xem xét để tạo ra một tác phẩm phái sinh. Chúng tôi muốn tôn vinh giấy phép của họ.


Nhưng bạn đang làm việc với một daemon được cấp phép theo GPLv2, không phải v3.

FSF khá rõ ràng rằng những gì bạn muốn làm không được chấp nhận đối với phân phối công khai.

Xin lưu ý rằng giấy phép này không tương thích với GPL phiên bản 2, vì nó có một số yêu cầu không có trong phiên bản GPL đó. Chúng bao gồm một số điều khoản chấm dứt bằng sáng chế và bồi thường.

Để trả lời câu hỏi của bạn:

Không , bạn không được phân phối daemon kết hợp bằng vật liệu được cấp phép GPLv2 và APLv2 .
FSF gọi một cách rõ ràng sự kết hợp đó là không được phép phân phối công khai.

Lựa chọn thay thế:

  1. Bạn được phép sử dụng nó một cách riêng tư.

  2. Bạn cũng có thể viết lại chức năng APLv2 và sau đó kết hợp công việc mới của bạn với công việc GPLv2.

  3. Bạn có thể thấy nếu daemon có thể được thay đổi thành GPLv3. Nếu vậy, bạn sẽ rõ ràng để hợp nhất công việc APLv2 vào trình nền GPLv3 bây giờ.


2

Quan điểm của tôi là đồng ý với OP dựa trên văn bản liên kết ASF của OP.

ASF (Apache Software Foundation) không thích ý tưởng mã ASFv2 là bất kỳ phần nào của hệ thống sử dụng GPLv2, dựa trên thông tin hạn chế về trường hợp của bạn và sự hiểu biết của tôi về các giấy phép FOSS khác nhau: bất kể dự án ô có GPLv2 không hoặc dự án ô là GPLv2, cố gắng bao gồm ASFv2.

Hơn nữa, có vẻ như một dự án ô ASFv2 có mã GPLv3 không nên xảy ra, nhưng một dự án ô GPLv3 có thể có mã ASFv2.

Caveot, có lẽ (theo Gnu), là cách chúng tương tác với nhau. Nếu được liên kết, chia sẻ cùng một bản sao dữ liệu trong khi thực hiện, chúng là một trong cùng một chương trình; tuy nhiên, nếu chúng đang hoạt động như các quy trình riêng biệt (ví dụ: rẽ nhánh) truyền dữ liệu giữa các quy trình riêng biệt khác nhau, thì những gì bạn đang làm có thể được cho phép bởi vì chúng, đối với chúng, các chương trình riêng biệt. Nếu nó sử dụng không gian dữ liệu được chia sẻ trong khi thực thi và không hoạt động với các quy trình riêng biệt, thì những gì bạn đang làm có thể không được phép, bởi vì đối với chúng, chúng giống nhau hoặc quá chặt chẽ để được phân biệt hoặc độc lập.

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.