Có giấy phép LGPL được sửa đổi cho phép liên kết tĩnh không?


21

LGPL yêu cầu nếu chương trình sử dụng thư viện LGPL-ed, người dùng phải có thể liên kết lại chương trình với một phiên bản khác của thư viện:

...

d) Thực hiện một trong những điều sau đây:

0) Truyền tải Nguồn tương ứng tối thiểu theo các điều khoản của Giấy phép này và Mã ứng dụng tương ứng ở dạng phù hợp và theo các điều khoản cho phép, người dùng kết hợp lại hoặc đăng ký lại Ứng dụng với phiên bản sửa đổi của Phiên bản được liên kết để tạo ra Công việc kết hợp đã sửa đổi, theo cách thức được chỉ định bởi mục 6 của GNU GPL để truyền tải Nguồn tương ứng.

1) Sử dụng cơ chế thư viện dùng chung thích hợp để liên kết với Thư viện. Một cơ chế phù hợp là một cơ chế mà (a) sử dụng trong thời gian chạy một bản sao của Thư viện đã có trên hệ thống máy tính của người dùng và (b) sẽ hoạt động đúng với phiên bản Thư viện đã sửa đổi tương thích với Phiên bản được liên kết.

...

Tuy nhiên trong một số trường hợp, điều này có thể gây ra những khó khăn đáng kể. Đặc biệt, các chương trình Haskell hầu như luôn được biên dịch tĩnh. Hơn nữa, trình biên dịch thực hiện tối ưu hóa mô-đun chéo để không thể lấy một phần mã ra và thay thế nó bằng một mã khác. Vì vậy, rất khó để đáp ứng điều kiện này. (Xem liên kết này tại Haskell Wiki.)

Liên kết động sẽ là một giải pháp, nhưng trong nhiều trường hợp, điều này là không thể. Ví dụ:

  • Một số nền tảng có thể không có liên kết động nào cả.
  • Một số ngôn ngữ không có khả năng liên kết động. Hoặc, không thể tạo các mô-đun đa nền tảng.
  • Trong một số trường hợp, liên kết động sẽ ngăn chặn tối ưu hóa quan trọng. Mặc dù tôi nói rằng điều này hiếm khi là một vấn đề nghiêm trọng, nhưng trong các ngôn ngữ như Haskell, sự mất hiệu năng có thể là đáng kể.

Do đó, tôi đang tìm kiếm một giấy phép giống như LGPL tiêu chuẩn sẽ không yêu cầu khả năng liên kết lại (và tôi hiểu rằng điều đó sẽ loại bỏ một chút tự do cho người dùng). Một số dự án sử dụng sửa đổi LGPL của riêng họ, ví dụ wxWidgets . Nhưng tôi muốn sử dụng một số giấy phép tiêu chuẩn có phần chính thức hơn, có thể được kiểm tra bởi một số chuyên gia luật và tương thích (L) GPL. Có một số như vậy?

(Ngoài ra, tôi rất muốn biết liệu có một số hậu quả không lường trước được khi sửa đổi LGPL như vậy không.)


Bạn không thể tự động liên kết các thư viện bên ngoài trong Haskell? Điều đó phải được nguyền rủa bất tiện.
Robert Harvey

2
Nếu toàn bộ dự án của bạn là FOSS, thì đây có thể không phải là vấn đề. Chỉ chúng vào các nguồn và để chúng sắp xếp nó ra! :-)
Peter Rowell

2
Điều gì sẽ phân biệt giấy phép đó với giấy phép không copyleft?

2
@delnan Có nhiều thứ khác trong LGPL thường được mong muốn. Ví dụ, nó yêu cầu bất kỳ sửa đổi nào phải là (L) GPL, hoặc cấm tivoization .
Petr Pudlák

Giấy phép wxWindows là chính thức như nó nhận được, với điều kiện là nó được OSI chấp thuận .
Joachim Sauer

Câu trả lời:



12

wxwidgets được cấp phép theo cơ bản = LGPL + liên kết tĩnh

... về cơ bản là L-GPL (Giấy phép công cộng chung của Thư viện), với một ngoại lệ cho biết các tác phẩm phái sinh ở dạng nhị phân có thể được phân phối theo các điều khoản riêng của người dùng. Đây là một giải pháp thỏa mãn những người muốn sản xuất phần mềm GPL bằng wxWidgets và cả những người sản xuất phần mềm độc quyền.

wxWidgets là những người tham gia phần mềm nguồn mở được chứng nhận trong cuộc thảo luận dẫn đến quyết định này bao gồm dân gian từ Abisource , Robert Roebling, Julian Smart, Markus Fleck, Karsten Ballueder và một số lời khuyên từ Richard Stallman. Richard đã xác nhận rằng giấy phép mới tương thích với các ứng dụng GPL. Tuy nhiên, không có hạn chế đáng kể đối với các ứng dụng độc quyền.

Giấy phép wxWindows đã được Sáng kiến ​​Nguồn mở phê duyệt và bạn có thể tìm thấy giấy phép trên trang web của họ tại đây ...


0mq cũng được cấp phép theo LGPL với ngoại lệ liên kết tĩnh rõ ràng.
Trevor Powell

4

IANAL, nhưng tôi đã được tin rằng, một giải pháp là cung cấp các tệp đối tượng cho các phần không phải LGPL. Bằng cách đó, người dùng có thể liên kết lại chương trình và do đó có thể tự do thay đổi phần LGPL, đáp ứng các yêu cầu của LGPL.

Nói cách khác, bạn cần phải có gói nguồn, với các nguồn LGPL và các tệp đối tượng được biên dịch của mã không phải LGPL. Rõ ràng sau đó bạn cần cung cấp các tệp đối tượng cho mọi kiến ​​trúc khác nhau mà bạn phát hành các tệp nhị phân cho, nhưng tôi không nghĩ rằng đây là một vấn đề lớn.

Từ quan điểm phát triển, đơn giản nhất có thể là chỉ cần có hệ thống xây dựng cũng xây dựng gói nguồn cùng một lúc, khi xây dựng nhị phân để phân phối.


Bạn có bất kỳ kịch bản thực tế trong đó điều này đã được thực hiện?
knocte

3

Tôi đã tìm thấy một bản quyền với Google: OpenScales

OpenScales được phát hành theo phiên bản 3 của Giấy phép Công cộng GNU (LGPL, có sẵn tại đây ), với một ngoại lệ liên quan đến ngoại lệ liên kết tĩnh (xem bên dưới) ...

Ngoài văn bản giấy phép LGPL, ngoại lệ đối với các điều kiện LGPL áp dụng cho OpenScales:

Là một ngoại lệ đặc biệt đối với GNU Lesser General Public License phiên bản 3, bạn có thể chuyển cho bên thứ ba một tệp thực thi từ Công việc kết hợp liên kết, tĩnh hoặc động, các phần của Thư viện này trong tệp thực thi, truyền tải Nguồn tương ứng tối thiểu nhưng mà không cần phải truyền Mã ứng dụng tương ứng trong phần 4d0 của Giấy phép công cộng chung GNU, miễn là bạn đang sử dụng một phiên bản phân phối công khai không thay đổi của Thư viện. Ngoại lệ này không làm mất hiệu lực bất kỳ lý do nào khác tại sao tệp thực thi có thể được bao phủ bởi Giấy phép Công cộng GNU Ít hơn hoặc Giấy phép Công cộng GNU.

Mặc dù đó không phải là tiêu chuẩn và tôi không biết có tồn tại không.


1

Làm thế nào bạn sẽ tiếp tục đảm bảo tự do người dùng? Tôi tin rằng câu trả lời "chính xác" là liên kết tĩnh một shim tải động thư viện.


Vâng, đó là giải pháp tốt nhất. Nhưng trong một số trường hợp, liên kết động là không thể. Một số ngôn ngữ không có khả năng này. Hoặc một số nền tảng không có khả năng này.
Petr Pudlák

Trên thực tế các trình liên kết thực hiện chính xác điều này, khi bạn tự động liên kết đến thư viện.
Calmarius
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.