Thứ Tư, 19 tháng 6, 2013

Giấy phép Công cộng Chung Ít hơn GNU v2.1 – LGPL v2.1 – Tổng quan


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.
Background of the LGPL
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.
Main Features of the LGPL v2.1
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.
What Does The LGPL v2.1 Do?
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
Should you use the LGPL v2.1?
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.