The
GNU Lesser General Public License v2.1 - An Overview
By Rowan Wilson,
Published: 10 November 2005, Reviewed: 14 May 2012
Bài được đưa lên
Internet ngày: 14/05/2012
Giấy phép Công cộng
Chung Ít hơn GNU – LGPLv2.1 (GNU Lesser General Public License
v2.1) là một biến thể của GPL thông thường. Thường
được biết tới như là Giấy phép Công cộng Chung Thư
viện GNU (GNU Library General Public License) nó đã được Quỹ
Phần mềm Tự do – FSF (Free Software Foundation) phác thảo
để cung cấp một dạng copyleft yếu hơn để sử dụng
trong các tình huống đặc thù nhất định. Có thể đọc
nó ở http://www.opensource.org/licenses/lgpl-license.php.
Phiên bản 3 của giấy phép này, LGPL
v3, từng được FSF xuất bản vào năm 2007 để trùng
với xuất bản của GPL
v3.
Nền tảng của
LGPL
Trong thuật ngữ điện
toán, từ thư viện có thể được sử dụng để
mô tả một nhóm các chức năng phần mềm để các chương
trình sử dụng. Theo cách này mã chương trình đảm trách
các tác vụ chung có thể được đặt trong thư viện
đó, và các lập trình viên mà muốn các chương trình của
họ thực hiện các tác vụ đó có thể tận dụng được
mã của thư viện để tránh công việc dư thừa khi viết
phiên bản của riêng họ. Các chức năng của thư viện
có thể hoặc được sao chép vào chương trình khi nó được
biên dịch, hoặc như một lựa chọn khác chương trình có
thể truy cập thư viện đó, nếu cần, khi nó đang được
thực thi. Việc nhờ chương trình của bạn sử dụng mã
từ ai đó khác yêu cầu thư viện mà bạn có một giấy
phép từ người chủ thư viện để làm thế - sau tất
cả, chương trình của bạn là không hoàn chỉnh khi không
có các chức năng của thư viện đó, và sẽ chỉ vận
hành được đúng với sự bổ sung các chức năng đó.
Nếu thư viện đó được cấp phép theo các điều khoản
của GPL, thì chương trình của bạn có thể trở thành
một tác phẩm phái sinh từ thư viện đó khi nó sử dụng
thư viện đó và vì thế yêu cầu đó có thể là bạn
phát hành chương trình của bạn theo GPL.
Thực tế này có
nghĩa là bất kỳ ai mà viết một chương trình sử dụng
một thư viện có giấy phép GPL hoặc phải không bao giờ
được phân phối chương trình, hoặc đồng ý cấp phép
và phân phối chương trình của họ theo GPL. Kết quả là,
không chương trình nguồn đóng nào có thể được phân
phối với một thư viện có giấy phép GPL mà nó sử dụng
cả. Tất nhiên, đó là một hiệu ứng mong muốn của
GPL.
Dù vậy, đôi khi một
lập trình viên của một thư viện có thể muốn đảm
bảo rằng bản thân thư viện đó vẫn là tự do trong khi
cho phép các phần mềm không phải là tự do sử dụng
được nó. Điều này có thể xảy ra nếu tác giả đang
cố gắng tạo ra một triển khai tiêu chuẩn của một
giải pháp phần mềm nhất định, và muốn thư viện kết
quả sẽ được sử dụng càng rộng rãi càng tốt, trong
khi vẫn được bảo vệ khỏi việc tái cấp phép và đóng
nguồn của nó. Chính vì những lý do đó mà LGPLv2.1 đã
được tạo ra 1.
Các tính năng chính
của LGPL v2.1
LGPL v2.1 là y hệt GPL
trng nhiều điều khoản của nó. Các điểm theo đó LGPL
v2.1 khác với GPL sẽ được thảo luận ở đây.
Ở những nơi mà GPL
bắt buộc rằng tất cả các tác phẩm phái sinh sẽ được
phân phối theo GPL, nếu có, thì LGPL v2.1. định nghĩa một
lớp các tác phẩm riêng rẽ mà có thể là phái sinh nhưng
dù vậy có thể được cấp phép theo bất kỳ cách gì.
Chúng được tham chiếu tới như là các tác phẩm mà
sử dụng thư viện. Về cơ bản, chúng là các chương
trình từng được viết để tận dụng thư viện có giấy
phép LGPL nhưng có chứa ít ơn hoặc không có mã thực tế
từ thư viện đó ở dạng không được biên dịch của
chúng. Các tác phẩm như vậy có thể được phân phối
với thư viện được cấp phép LGPL và bản thân chúng
không cần phải được phân phối theo LGPL. Mức độ
chính xác mà ở đó các chương trình theo yêu cầu có thể
có chứa mã từ thư viện được giấy phép đó xác định
không chính xác, mặc dù một số chỉ dẫn được đưa
ra.
LGPLv2.1 cũng khác với
GPL trong việc đặt ra những hạn chế lên sự khác biệt
và bản chất tự nhiên của các tác phẩm phái sinh mà nó
cho phép. Những người được cấp phép có thể sửa đổi
một thư viện được cấp phép LGPL, nhưng nếu họ muốn
phân phối phiên bản được sửa đổi của họ thì nó
cũng phải là một thư viện. Những sửa đổi cho các thư
viện được cấp phép LGPL không nên làm hỏng khả năng
của thư viện đó làm việc với một dải rộng lớn các
chương trình (điều kiện này được viết trong các điều
khoản của một trách nhiệm viết mã cho các chức năng
của thư viện mà không bị ràng buộc chặt tới một cấu
trúc dữ liệu của một chương trình đặc thù).
Miễn là một tác
phẩm mà sử dụng thư viện đáp ứng được các điều
kiện đó, nó có thể được phân phối với thư viện
được cấp phép LGPL theo một số cách thức. Mục tiêu
của giấy phép ở đây là để giữ lại khả năng của
những người nhận để sửa đổi thư viện được cấp
phép LGPL và vẫn có nó làm việc được với (có khả
năng là nguồn đóng) tác phẩm mà sử dụng nó. Bất kỳ
sự phân phối nào phải đưa mã nguồn vào thư viện, và
những tuyên bố nổi bật về quyền sở hữu của thư
viện đó. Nó cũng phải hoặc:
- đưa vào mã nguồn của tác phẩm mà sử dụng thư viện đó
- đưa vào một phương tiện cho phép tác phẩm mà sử dụng thư viện đó làm việc được với các phiên bản được sửa đổi của thư viện đó, miễn là tất nhiên là thư viện được sửa đổi đó vẫn giữ lại giao diện của nó. Lựa chọn thứ 2 là có được hoàn thành dễ dàng nhất bằng việc có tác phẩm mà sử dụng thư viện đó truy cập động được tới các chức năng thư viện khi nó được thực thi, hơn là nhờ nó sao chép các chức năng thư viện vào mã của riêng nó khi biên dịch, và LGPLv2.1 rõ ràng gợi ý điều này như là cách để làm thỏa mãn các yêu cầu của nó.
Cuối cùng, LGPLv2.1
cho phép một lập trình viên phân phối một thư viện
lai, nó có chứa các chức năng từ thư viện được cấp
phép LGPL và các chức năng khác mà không được cấp phép
LGPL.
Tuy nhiên, một bản
sao của thư viện đó với mã không được cấp phép LGPL
được chèn vào cũng phải được cung cấp, và một lưu
ý ở nơi mà thư viện được cấp phép LGPL không được
kết hợp có thể là phải có.
LGPLv2.1 làm được
gì?
Các lưu ý ở đây có
ý định tóm tắt những điểm nổi bật của LGPLv2.1.
Chúng không có ý định như một mô tả đầy đủ các
tính năng của giấy phép. LGPLv2.1:
- giữ cho các phiên bản được sửa đổi của bản thân thư viện là nguồn mở
- cho phép các phần mềm không phải là nguồn mở sử dụng thư viện, và được phân phối với nó
Bạn có nên sử
dụng LGPLv2.1 hay không?
Quỹ Phần mềm Tự
do đã có một tài liệu hữu ích về làm thế nào để
quyết định liệu nên sử dụng GPL hay LGPL Vì
sao bạn không nên sử dụng LGPL cho thư viện tiếp sau của
bạn. Tuy nhiên giấy phép tốt nhất cho một dự án do
chiến lược của dự án xác định, và phụ thuộc vào
các chi tiết về tình huống. Vì thế nó nằm ngoài phạm
vi của rà soát lại này để đề cập tới các vấn đề
đó.
OSS Watch đã có một
tài liệu nhấn mạnh tới các vấn đề pháp lý chính để
cân nhắc khi Làm
cho mã của bạn sẵn sàng theo một giấy phép nguồn mở
(bản
dịch tiếng Việt).
The
GNU Lesser General Public License v2.1 (LGPL v2.1 for short) is a
variation of the regular GNU General Public License (GPL). Originally
known as the GNU Library General Public License, it was drafted by
the Free Software Foundation (FSF) to provide a weaker (or Lesser)
form of copyleft for use in certain specific circumstances. It can be
read at http://www.opensource.org/licenses/lgpl-license.php.
A third version of the licence, LGPL
v3, was published by the FSF in 2007 to coincide with the
publication of the GPL
v3.
In
computing terminology, the word library
can be used to describe a grouping of software functions for use by
other programs. In this way the program code to undertake common
tasks can be placed in the library,
and programmers who wish their programs to perform these tasks can
take advantage of the library’s code in order to avoid the
redundant work of writing their own version. The library’s
functions can either be copied into the program when it is compiled,
or alternatively the program can access the library, if necessary,
when it is being executed. Having your program use code from someone
else’s library requires that you have a licence from the library’s
owner to do so - after all, your program is incomplete without the
library’s functions, and will only function correctly with the
addition of those functions. If the library were licensed under the
terms of the GNU General Public License, your program would become a
work derived from the library when it makes use of the library and
thus the requirement would be that you release your program under
GPL.
This
fact means that anyone who writes a program that uses a GPLed library
must either never distribute the program, or agree to license and
distribute their program under the GPL as well. As a result, no
closed source program can ever be distributed with a GPLed library
that it uses. This is, of course, a desired effect of the GPL.
Nevertheless,
sometimes a developer of a library might want to ensure that the
library itself remains free while permitting non-free software to
make use of it. This might happen if the author is trying to create a
standard implementation of a particular software solution, and wants
the resulting library to be used as widely as possible, while still
being protected from relicensing and closing of its source. It is for
these purposes that the GNU Lesser General Public License v2.1 was
created1.
The
LGPL v2.1 is identical to the GPL in many of its provisions. The
points in which the LGPL v2.1 differs from the GPL will be discussed
here.
Where
the GPL mandates that all derivative works be distributed under the
GPL, if at all, the LGPL v2.1 defines a separate class of works which
may be derivative but which nevertheless can be licensed in any way.
These are referred to as works
that use the library.
These are, essentially, programs that have been written to take
advantage of the LGPL-licensed library but contain little or no
actual code from the library in their uncompiled form. Such works may
be distributed with the LGPL-licensed library and need not themselves
be distributed under the LGPL. The exact extent to which the programs
in question may contain code from the library is not precisely
defined by the licence, although some guidelines are given.
The
LGPL v2.1 also differs from the GPL in placing restrictions on the
variety and nature of derivative works that it allows. Licensees may
modify an LGPL-licensed library, but if they wish to distribute their
modified version it must also be a library. Modifications to
LGPL-licensed libraries should not impair the library’s ability to
work with a wide range of programs (this condition is phrased in
terms of a responsibility to code library functions which are not
tightly tied to a specific program’s data-structures).
Provided
that a work that uses
the library meets these
conditions, it can be distributed with the LGPL-licensed library in a
number of ways. The aim of the licence here is to preserve the
ability of recipients to modify the LGPL-licensed library and still
have it work with the (possibly closed source) work that uses it. Any
distribution must include the source code to the library, and
prominent statements of the ownership of the library. It must also
either
- include the source code of the work that uses the library
- include a facility which permits the work that uses the library to work with modified versions of the library, provided of course that the modified library retains its interface The second option there is most easily accomplished by having the work that uses the library dynamically access library functions when it is executed, rather than have it copy the library functions into its own code at compile time, and the LGPL v2.1 explicitly suggests this as a way of fulfilling its requirements.
Finally,
the LGPL v2.1 permits a programmer to distribute a hybrid library,
which contains functions from the LGPL-licensed library and other
functions which are not LGPL-licensed. However, a copy of the library
with no LGPL-licensed code inserted must also be provided, and a
notice of where the uncombined LGPL-licensed library may be obtained.
These
bullets are intended to summarise the salient points of the LGPL
v2.1. They are not intended as a full description of its features.
The GNU Lesser General Public License v2.1
- keeps modified versions of the library itself open source
- allows non-open source software to use the library, and be distributed with it
The
Free Software Foundation has produced a useful document on how to
decide whether to use GPL or LGPL Why
you shouldn’t use the LGPL for your next library. However the
best licence for a project is determined by the project’s strategy,
and depends on the details of the situation. It is therefore outside
the scope of this overview to address these issues.
OSS
Watch has produced a document that highlights the main legal issues
to consider when Making
your code available under an open source licence.
Dịch: Lê Trung Nghĩa
Không có nhận xét nào:
Đăng nhận xét
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.