Home » TechNote » Open source và những loại giấy phép (licenses) đang được dùng hiện nay.

Open source và những loại giấy phép (licenses) đang được dùng hiện nay.

Là lập trình viên thì ai cũng biết đến Open source. Chúng ta sử dụng rất nhiều Open source trong công việc nhưng có không ít người không biết hoặc không để tâm đến những giấy phép (license) của những Open Source đó. Chúng ta được sử dụng Open source vào mục đích những gì thì sẽ không vi phạm bản quyền (copyright). Hãy cùng tìm hiểu một số “Open source licenses” đang được sử dụng nhiều hiện nay nhé.


Những “licenses” phổ biến
1. Apache License 2.0
2. BSD 3-Clause “New” or “Revised” license
3. BSD 2-Clause “Simplified” or “FreeBSD” license
4. GNU General Public License (GPL)
5. GNU Library or “Lesser” General Public License (LGPL)
6. MIT license
7. Mozilla Public License 2.0
8. Sun Industry Standards Source License

Trong bản mô tả chi tiết của từng “license” có thông tin về “Điều khoản và điều kiện sử dụng, Tái sản xuất, Phân phối”. Trong khuôn khổ bài viết này mình xin chỉ nói quyền lợi và nghĩa vụ của những người sử dụng Open source.

1. Apache License 2.0
Giấy phép Apache là một giấy phép phần mềm tự do của Quỹ phần mềm Apache (Apache Software Foundation – ASF). Giấy phép Apache trao cho người dùng phần mềm nguồn mở, quyền tự do sử dụng phần mềm với bất kì mục đích nào, phân phối chỉnh sửa, và phân phối bản sửa đổi của phần mềm, theo các điều khoản của giấy phép mà không lo vấn đề bàn quyền.
Các điều khoản của giấy phép:
– Giấy phép Apache cho phép người dùng tự do sử dụng phần mềm với bất kì mục đích nào, tự do phân phối, tự do sửa đổi, tự do phân phối bản sửa đổi mình làm.
– Giấy phép Apache không yêu cầu bản sửa đổi của phần mềm phải được phân phối dưới cùng giấy phép với bản gốc, cũng không yêu cầu bản sửa đổi phải được phân phối dưới dạng mã nguồn mở. Giấy phép Apache chỉ yêu cầu có một thông báo nhắc nhở người nhận rằng giấy phép Apache đã được sử dụng trong sản phẩm họ nhận được.

=> Nói tóm lại người sử dụng phần mềm được quyền sử dụng chương trình và mã nguồn theo cách họ muốn, kể cả việc giữ lại mã nguồn cho riêng mình.

Giấy phép Apache không yêu cầu trích dẫn toàn bộ giấy phép vào sản phẩm hay tệp tin đính kèm bản phân phối, mà chỉ cần thêm vào phần thông báo có chứa đường link tới website chứa giấy phép với nội dung như sau:

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the “License”);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and limitations under the License.

2. BSD 3-Clause “New” or “Revised” license
Giấy phép BSD(Berkeley Software Distribution License) có thể nói là lâu đời nhất trong các giấy phép nguồn mở, nó đã và đang tồn tại ở một số dạng kể từ những năm 1980. Giấy phép BSD 3-Clause “New” or “Revised” license là bản sửa đổi của giấy phép BSD cũ đã loại bỏ một số điều khoản mà người ta cho rằng phi thực tế.

Điều khoản của giấy phép: Tái phân phối và sử dụng ở dạng mã nguồn và nhị phân, có hoặc không có sửa đổi mã nguồn, đều được cho phép miễn là các điều khoản sau được đáp ứng:
– Việc phân phối lại mã nguồn phải giữ lại thông báo bản quyền, danh sách các điều kiện và tuyên bố từ chối trách nhiệm.
– Việc phân phối lại dưới dạng nhị phân phải sao chép thông báo bản quyền, danh sách các điều kiện và tuyên bố từ chối trách nhiệm trong tài liệu và/hoặc các tài liệu khác được cung cấp bởi bản phân phối.
– Tên của người giữ bản quyền cũng như tên của những người đóng góp của nó có thể được sử dụng để xác nhận hoặc quảng cáo các sản phẩm có nguồn gốc từ phần mềm này mà không có sự cho phép trước bằng văn bản cụ thể.

3. BSD 2-Clause “Simplified” or “FreeBSD” license
Giấy phép BSD 2-Clause “Simplified” or “FreeBSD” license về cơ bản giống với giấy phép BSD 3-Clause. Nhưng BSD 2-Clause yêu cầu “Tên của những người đóng góp trước đó không được sử dụng để quảng cáo cho bất kỳ phiên bản phái sinh nào mà không có được sự cho phép bằng văn bản của họ”. BSD 3-Clause đã giảm bớt sự phiền hà khi sử dụng phần mềm nguồn mở theo giấy phép BSD.

4. GNU General Public License (GPL)
Giấy phép GNU hiện đang có 2 phiên bản được sử dụng phổ biến là GPL-2.0 và GPL-3.0. Chúng ta sẽ nói về phiên bản mới nhất GPL-3.0.
Quyền lợi khi sử dụng phần mềm áp dụng giấy phép GPL
– Được sao chép và phân phối chương trình, được yêu cầu trả phí cho việc phân phối đó.
– Được thay đổi chương trình để sử dụng cho mục đích cá nhân.
– Được phân phối bản đã được thay đổi đó.
Nghĩa vụ
– Khi sao chép và phân phối chương trình, phải đính kèm các thông báo về bản quyền gốc và không bảo hành( trừ trường hợp có văn bản thêm về quy định bảo hành)
– Khi phân phối bản đã được thay đổi bởi bản thân, phải chú thích rõ đó là bản đã được thay đổi, các thành phần được thay đổi, và áp dụng giấy phép GNU cho bản đã được thay đổi đó.
– Khi phát hành chương trình phải công khai mã nguồn của chương trình, đồng thời phải công bố mã nguồn của chương trình trong tối thiểu 3 năm mà không được đòi một khoản phí nào từ những người yêu cầu mã nguồn trừ chi phí vận chuyển hay tương đương.

5. GNU Library or “Lesser” General Public License (LGPL)
LGPL là một phiên bản sửa đổi của GPL. Giấy phép này thường bị hạn chế đối với các thư viện phần mềm. Nó được gọi là Lesser General Public License vì nó cung cấp sự bảo vệ ít hơn so với GPL. Điều này cho phép các chương trình không phải là Open source có thể truy cập hoặc liên kết tới các thư viện nguồn mở mà không phải công khai mã nguồn như giấy phép GPL.

6. MIT license
Giấy phép MIT là loại giấy phép cho phép sử dụng mã nguồn tự do nhất, nó có thể kết hợp với các mã nguồn khác và đảm bảo tương thích theo điều kiện của mọi loại giấy phép khác. Với giấy phép MIT bạn có thể sử dụng, sao chép, sửa đổi, hợp nhất, xuất bản, phân phối và/hoặc bán các bản sao của phần mềm mà không vi phạm bản quyền. Bạn chỉ cần tuân thủ điều kiện duy nhất sau:
– Thông báo bản quyền và thông báo cho phép của phần mềm gốc sử dụng giấy phép MIT sẽ phải bao gồm trong tất cả các bản sao hoặc phần quan trọng của phần mềm.

7. Mozilla Public License 2.0
Giấy phép MPL 2.0 là một giấy phép phần mềm tự do của Quỹ Mozilla. MPL là sự kết hợp giữa giấy phép BSD có chỉnh sửa và giấy phép GNU. Một số lập trình viên đóng góp cho cộng đồng phần mềm mã nguồn mở nhưng không muốn từ bỏ hoàn toàn quyền sở hữu đối với những sửa đổi của họ và MPL là một ví dụ điển hình nhất đáp ứng nhu cầu này của họ. Nó ra đời để giúp phân phối trình duyệt web Mozilla (nền tảng nguồn mở của Netscape). MPL yêu cầu việc công bố mã nguồn của mọi thay đổi được đưa ra công chúng. Thời gian yêu cầu để công bố được giới hạn trong vòng khoảng 6 tháng – 1 năm tuỳ theo từng trường hợp.

8. Sun Industry Standards Source License
SISSL là giấy phép mã nguồn theo chuẩn của Sun. Đối với phần mềm có áp dụng giấy phép này, mã nguồn gốc được công bố theo một phiên bản nào đó của giấy phép, người sử dụng sẽ luôn phải sử dụng mã gốc đó theo các điều khoản của phiên bản đó. Không ai có quyền chỉnh sửa các điều khoản áp dụng cho mã nguồn gốc ngoài Sun.

Tóm lại:
GPL: Một khi sử dụng và phân phối, bắt buộc phải sử dụng giấy phép GPL, không được phép đóng mã nguồn và thay đổi giấy phép.
LGPL: là giấy phép tự do “ít ràng buộc” hơn, là giấy phép sửa đổi của GPL, được sử dụng cho một số thư viện phần mềm (các thư viện dùng ngôn ngữ C thường áp dụng giấy phép này)
MPL: MPL dung hoà giữa BSD và GPL. MPL cho phép dùng MPL software để tạo ra một sản phẩm khác (thương mại hoặc không), tuy nhiên nếu thay đổi MPL software thì phải được đưa miễn phí lên Internet.
Apache: được phép đóng mã nguồn, thương mại hoá và giữ bản quyền sản phẩm
BSD: là giấy phép tự do “ít ràng buộc” hơn, các giấy phép kiểu BSD để những sản phẩm phái sinh được tái phân phối như phần mềm thương mại.

Khi sửa đổi phải đưa mã nguồn ra thành mã nguồn mở?
– BSD: Không cần
– GPL, LGPL, MPL: Yêu cầu
Khi sử dụng có phải đưa mã nguồn ra thành mã nguồn mở?
– BSD, LGPL, MPL: Không
– GPL: Có