Giấy phép Công cộng GNU Hạn chế

Bách khoa toàn thư mở Wikipedia
Bước tới điều hướng Bước tới tìm kiếm
GNU Lesser General Public License
LGPLv3_Logo.svg
Logo LGPL
Phiên bản3 (2007; 14 năm trước (2007))
Phát hành1991; 30 năm trước (1991)
Tương thích với DFSG
Phần mềm tự do
OSI chứng nhận
Tương thích với GPL
Copyleft
Liên kết giữa mã nguồn với một giấy phép khác
Trang mạngwww.gnu.org/copyleft/lesser.html

Giấy phép Công cộng GNU Hạn chế (tiếng Anh: GNU Lesser General Public License, viết tắt LGPL) là một giấy phép phần mềm tự do nguồn mở được phát hành bởi Quỹ Phần mềm Tự do (FSF). Nó được xây dựng dựa trên một sự thỏa hiệp giữa Giấy phép Công cộng GNU (GPL) có tính copyleft mạnh mẽ và các giấy phép hạn chế khác như các giấy phép BSDMIT. Giấy phép cho phép các nhà phát triển và doanh nghiệp sử dụng và tích hợp một thành phần phần mềm được phát hành theo LGPL vào phần mềm của riêng họ (thậm chí là độc quyền) mà không bị yêu cầu bởi các điều khoản của giấy phép copyleft mạnh để phát hành mã nguồn của các thành phần của riêng họ. Tuy nhiên, bất kỳ nhà phát triển nào sửa đổi một thành phần được LGPL bao phủ đều phải cung cấp phiên bản đã sửa đổi của họ theo cùng một giấy phép LGPL. Đối với phần mềm độc quyền, mã theo LGPL thường được sử dụng dưới dạng thư viện dùng chung, để có sự tách biệt rõ ràng giữa các thành phần độc quyền và LGPL. LGPL chủ yếu được sử dụng cho các thư viện phần mềm, mặc dù nó cũng được sử dụng bởi một số ứng dụng độc lập.

Lịch sử[sửa | sửa mã nguồn]

Giấy phép ban đầu có tên là 'GNU Library General Public Licenseđược phát hành lần đầu năm 1991, và thông qua phiên bản số 2 để ngang bằng với GPL phiên bản 2. LGPL đã có một số sửa đổi nhỏ trong bản 2.1, phát hành năm 1999, khi nó được đổi tên thành GNU Lesser General Public License để phản ánh quan điểm của FSF rằng không phải tất cả các thư viện đều nên sử dụng nó. Phiên bản 3 của LGPL được xuất bản vào năm 2007 dưới dạng danh sách các quyền bổ sung được áp dụng cho GPL phiên bản 3.

Ngoài thuật ngữ "work based on the Program" của GPL, LGPL phiên bản 2 đã giới thiệu thêm hai thuật ngữ làm rõ bổ sung "work based on the library" và "work that uses the library".[1] LGPL phiên bản 3 đã bỏ một phần các điều khoản này.

Những sự khác biệt so với GPL[sửa | sửa mã nguồn]

Sự khác biệt chính giữa GPL và LGPL là LGPL cho phép sản phẩm được kết nối với (trong trường hợp là một thư viện, 'được sử dụng bởi') một chương trình non-(L)GPLed, bất kể đó là một phần mềm tự do hay phần mềm độc quyền.[2] Phần mềm non-(L)GPLed có thể được phân phối dưới bất kỳ điều khoản sử dụng nào nếu nó không phải là phần mềm phái sinh. Nếu nó là phần mềm phái sinh, thì điều khoản của chương trình phải cho phép "sửa đổi vì mục đích sử dụng của khách hàng và kỹ thuật dịch ngược để debug những sửa đổi này." Một phần mềm sử dụng một chương trình LGPL là một phần mềm phái sinh hay không là mang tính chất pháp lý. Một tệp thực thi độc lập liên kết động với thư viện thông qua .so, .dll, hoặc phương tiện tương tự thường được chấp nhận là không phải là một phầm nềm phái sinh như được định nghĩa bởi LGPL. Nó sẽ thuộc định nghĩa của một "tác phẩm sử dụng Thư viện". Đoạn 5 của LGPL phiên bản 2.1 nêu rõ:

Một chương trình không chứa một phần được xây dựng từ Thư viện, nhưng được thiết kế để làm việc với thư viện bằng cách biên dịch hoặc kết nối với nó được gọi là "phần mềm có sử dụng thư viện." Những phần mềm kiểu này không phải là phần mềm phái sinh của Thư viện, và do vậy không thuộc phạm vi của Giấy phép này.

Về cơ bản, nếu đó là một "tác phẩm sử dụng thư viện", thì phần mềm đó phải có thể được liên kết với một phiên bản mới hơn của chương trình có LGPL. Phương pháp phổ biến nhất được sử dụng để làm như vậy là sử dụng "cơ chế thư viện dùng chung phù hợp để liên kết". Ngoài ra, một thư viện được liên kết tĩnh được phép nếu mã nguồn hoặc tệp đối tượng có thể liên kết được cung cấp.[3]

Một đặc tính khác của LGPL là có thể dùng để chuyển bất kỳ phần mềm LGPL nào sang một phần mềm GPL. Đặc điểm này rất có lợi cho việc sử dụng trực tiếp mã nguồn LGPL trong các thư viện và phần mềm GPL, hoặc dùng để tạo ra một phiên bản mới của mã nguồn mà không thể được sử dụng trong các sản phẩm có bản quyền.

Lựa chọn cấp phép phần mềm dưới dạng GPL hay LGPL[sửa | sửa mã nguồn]

Tên ban đầu "GNU Library General Public License" tạo ra cảm giác rằng FSF khuyến khích các thư viện nên sử dụng LGPL và các chương trình nên sử dụng GPL. Tháng 2 năm 1999, Richard Stallman viết bài luận với chủ để Tại sao bạn không nên sử dụng Lesser GPL cho thư viện tiếp theo của bạn giải thích rằng LGPL chưa được kiểm tra để loại bỏ những phần đã bị thay thế, và không nên luôn sử dụng LGPL cho tất cả các thư viện:

Kiểu giấy phép nào phù hợp cho một thư viện là vấn đề chiến lược... Sử dụng GPL nguyên bản cho một thư viện sẽ tạo lợi thế cho những người phát triển phần mềm miễn phí so với những người phát triển phần mềm có bản quyền: một thư viện họ có thể sử dụng trong khi người phát triển phần mềm thu phí không thể có được... Khi phần mềm có bản quyền có thể có các tính năng của một thư viện miễn phí thông qua các thư viện khác... thì thư viện này không tạo ra lợi thế gì đặc biệt cho phần mềm miễn phí, do vậy tốt hơn hết là sử dụng Lesser GPL cho thư viện đó.[2]

Thêm vào đó, Stallman và FSF đôi khi còn ủng hộ các giấy phép có ít hạn chế hơn LGPL. Một ví dụ điển hình là sự ủng hộ của Stallman cho việc sử dụng giấy phép BSD-style cho các thư viện của dự án Vorbis.[4]

Đặc tả ngôn ngữ lập trình[sửa | sửa mã nguồn]

Giấy phép sử dụng thuật ngữ chủ yếu dùng cho các ứng dụng viết bằng ngôn ngữ lập trình C hoặc các biến thể của nó. Franz Inc. thêm phần phần giới thiệu cho giấy phép để giải thích thuật ngữ cho ngôn ngữ Lisp. LGPL với phần giới thiệu này thường được gọi là LLGPL.[5]

LGPL về vấn đề kế thừa lớp[sửa | sửa mã nguồn]

Có một số quan ngại về tính phù hợp của các lớp hướng đối tượng trong các phần mềm LGPL'd được kế thừa bởi mã nguồn non-(L)GPL. Trang web chính thức của GNU đã có giải thích về vấn đề này:

LGPL không có kế hoạch cho kế thừa, bởi vì điều này là không cần thiết. Kế thừa tạo ra các sản phẩm dẫn xuất theo cách tương tự như liên kết đơn giản, và LGPL cho phép các công trình kế thừa kiểu này giống như với các gọi hàm cơ bản.[6]

Xem thêm[sửa | sửa mã nguồn]

Tham khảo[sửa | sửa mã nguồn]

  1. ^ “Chapter 10. The Lesser GPL”. Copyleft and the GNU General Public License: A Comprehensive Tutorial and Guide. 2018.
  2. ^ a b Stallman, Richard. Why you shouldn't use the Lesser GPL for your next library. Free Software Foundation official website.
  3. ^ Gnu Lesser General Public License, Section 4, pt. d) 0)
  4. ^ Stallman, Richard. Re: [open-source] [Fwd: [icecast-dev] Xiph.org announces Vorbis Beta 4 and the Xiph.org
  5. ^ Preamble to the Gnu Lesser General Public License
  6. ^ Turner, David. The LGPL and Java. GNU official website.

Liên kết ngoài[sửa | sửa mã nguồn]