Các loại giấy phép mã nguồn mở

I. GIẤY PHÉP MÃ NGUỒN MỞ

Giấy phép mã nguồn mở là các giấy phép bản quyền dành cho các phần mềm máy tính trong đó đặt ra các quy định buộc người sử dụng phần mềm đó phải tuân theo. Giấy phép mã nguồn mở được sử dụng cho các phần mềm nguồn mở.

Các giấy phép mã nguồn mở được sử dụng để đảm bảo rằng các phần mềm, mã nguồn có sử dụng giấy phép này luôn là mã nguồn mở, phù hợp với OSD – Open Source Definition.

1. Tính pháp lý của Giấy phép mã nguồn mở

Giấy phép mã nguồn mở vẫn duy trì xác nhận về bản quyền của tác giả gốc đối với phần mềm, tuy nhiên được đưa thêm các điều khoản để các hành vi phân phối, sửa đổi, sao chép… các phần mềm này trở thành hợp pháp. Vì vậy giấy phép này và các điều quy định trong nó có giá trị về mặt pháp lý (luật pháp được nhắc đến ở đây là luật của Hoa Kì)

2. Phân loại

Giấy phép mã nguồn mở có thể được chia thành 2 loại chính:

2.1. Những giấy phép không quy định

Những giấy phép này không quy định bất cứ sự hạn chế nào trong việc sử dụng mã nguồn (còn có thể gọi là các giấy phép không bảo hộ vì chúng không bảo vệ mã nguồn mở khỏi việc bị sử dụng trong các phần mềm không phải là mã nguồn mở).

Các giấy phép thuộc loại này:

  • Apache Software License.
  • BSD License.
  • Intel Open Source License for CDSA/CSSM Implementation.
  • MIT License.
  • Sun Industry Standards Source License.
  • W3C Software Notice and License.
  • .v.v…

2.2. Những giấy phép quy định

Những giấy phép này quy định các hạn chế trong việc sử dụng mã nguồn (còn có thể gọi là các giấy phép bảo hộ vì chúng đảm bảo rằng các mã nguồn mở khi được sử dụng trong bất cứ tình huống nào sẽ vẫn được công khai/miễn phí).

Các giấy phép thuộc loại này:

  • Apple Public Source License.
  • Common Public License.
  • GNU General Public License.
  • IBM Public License.
  • Mozilla Public License.
  • Nokia Open Source License.
  • Open Software License.
  • Python License.
  • Python Software Foundation License.
  • Sun Public License.
  • .v.v…

Người giữ bản quyền mã nguồn khi sử dụng loại giấy phép không bảo hộ sẽ giữ lại bản quyền của họ đối với mã nguồn, và cấp cho người được cấp bản quyền (có thể hiểu là người sử dụng sản phẩm, mã nguồn) tất cả các quyền thuộc về bản quyền của mã nguồn đó.

Người giữ bản quyền mã nguồn khi sử dụng loại giấy phép có bảo hộ giữ lại bản quyền của họ đối với mã nguồn, và cấp cho người được cấp bản quyền tất cả các quyền thuộc về bản quyền của mã nguồn đó, nhưng có ít nhất một điều kiện, thông thường là việc phân phối lại phần mềm/mã nguồn đó, dù đã được sửa đổi hay chưa, đều phải sử dụng cùng loại giấy phép ban đầu.

3. Người viết giấy phép

Giấy phép mã nguồn mở do một số công ty, tổ chức lập ra để quy định về trách nhiệm của người sử dụng đối với một phần mềm/mã nguồn mở. Hiện tại, công ty (tổ chức) OSI (Open Source Initiative) là người đưa ra định nghĩa về mã nguồn mở (OSD – Open Source Definition) được cộng đồng công nhận rộng rãi. Các giấy phép mã nguồn mở đa phần được xây dựng dựa trên OSD.
Quy trình thông qua một giấy phép mã nguồn mở tại OSI:

  •  Cộng đồng thẩm định giấy phép sẽ thảo luận trong ít nhất 30 ngày.
  •  Các ý kiến từ cộng đồng sẽ được tổng kết và đưa lên ban giám đốc OSI.
  • Ban giám đốc OSI sẽ đưa ra quyết định cuối cùng, hoặc yêu cầu các thông tin bổ sung, trong lần họp định kì tháng sau.
  • Cộng đồng thẩm định sẽ được thông báo về quyết định của ban giám đốc OSI. Nếu giấy phép đó được chấp thuận, nó sẽ được đưa lên website của OSI.

Chi tiết về quá trình thẩm định một giấy phép tại OSI, cùng các hướng dẫn dành cho những ai muốn tự soạn ra một giấy phép riêng của bản thân mà được OSI công nhận, có thể xem tại: http://www.opensource.org/approval

4. Cách sử dụng giấy phép mã nguồn mở

Đối với nhà phát hành phần mềm, để có thể sử dụng một giấy phép mã nguồn mở có sẵn vào trong phần mềm của mình thì thông thường cần phải thực hiện các công việc sau:

  • Đính kèm giấy phép vào trong phần mềm của mình (được hiểu là đưa nội dung bản giấy phép vào trong bộ cài đặt, hoặc vào một file văn bản đi kèm với các file của chương trình).
  • Điền các thông tin cần thiết vào trong giấy phép: mỗi giấy phép đều có hướng dẫn việc làm thế nào để sử dụng chúng, thông thường là điền tên tác giả, năm phát hành, công ty … vào trong các trường tương ứng được quy định sẵn của giấy phép.

II. CÁC LOẠI GIẤY PHÉP MÃ NGUỒN MỞ THÔNG DỤNG

Tuy đa dạng về số lượng nhưng nhìn chung mỗi loại giấy phép mã nguồn mở đều gồm 3 nội dung chính:

  • Quyền lợi.
  • Trách nhiệm khi sử dụng, phân phối lại hay chỉnh sửa chương trình.
  • Xử lí nếu vi phạm giấy phép.

1. Giấy phép GNU

GNU_General_Public_License_3_Logo.svg

1.1. Nhà phát hành

GNU (GNU General Public License – Giấy phép công cộng GNU, còn được gọi là GNU GPL hay đơn giản là GPL) là giấy phép phần mềm tự do phổ biến nhất, ban đầu được thiết kê bới Richard Stallman, dành cho dự án GNU. Phiên bản 2 của giấy phép này được phát hành năm 1991, và phiên bản 3, phiên bản hiện tại, được phát hành năm 2007.

Nội dung toàn văn giấy phép GNU (phiên bản 3) tại link sau:

http://www.opensource.org/licenses/gpl-3.0.html

1.2. Nội dung chính

Quyền lợi:

  • Quyền được sao chép và phân phối chương trình, quyền được yêu cầu trả phí cho việc phân phối đó.
  • Quyền được thay đổi chương trình để sử dụng cho mục đích cá nhân.
  • Quyề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 nhận 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 của nó, đồ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.

Xử lí vi phạm:

  • Người vi phạm giấy phép bị tước quyền sử dụng giấy phép GNU, tuy nhiên nếu B thừa hưởng giấy phép từ A, mà A vi phạm mà B không vi phạm thì B vẫn được giữ giấy phép GNU.

Ta có thể thấy giấy phép GNU có những điểm đáng chú ý sau:

  • Có đặc tính virus, bởi sức lây lan và kế thừa của nó. Một người nhận sản phẩm từ người mang giấy phép GNU thì ngay lập tức người đó cũng mang giấy phép GNU. Hệ quả là GNU là giấy phép phổ biến nhất, bởi mã nguồn luôn ở dạng công cộng cho phép ai cũng có thể tham gia ở bất kì thời điểm nào.
  • Tác giả gốc giữ bản quyền, và cho người dùng các quyền hợp pháp trong việc: sao chép, chỉnh sửa, phân phối sản phẩm. Mặc dù giấy phép GNU yêu cầu mã nguồn và chương trình phải được cung cấp miễn phí, song nó cho phép người phân phối có thể kinh doanh với sản phẩm nhờ đưa ra các chính sách về bảo hành, tính chi phí phân phối sản phẩm, đào tạo sử dụng …

Một số người lo ngại về vấn đề mã nguồn bị public tạo điều kiện cho hacker tìm ra lỗ hổng, song thực tế lại chứng minh ngược lại, càng cố che giấu mã nguồn thì lại càng bị tấn công nhiều hơn.

1.3. Các phần mềm sử dụng giấy phép GNU GPL nổi bật

  • RedHat Enterprise Linux
  • Ubuntu
  • GIMP
  • Drupal, WordPress, Joomla…

2. Giấy phép BSD

2.1. Nhà phát hành

Giấy phép BSD (Berkeley Software Distribution License) là một giấy phép phần mềm tự do với các điều kiện rất đơn giản được sử dụng rộng rãi cho phần mềm máy tính. Ban đầu giấy phép BSD được thiết kế bởi Đại học California tại Berkeley năm 1980 cho dự án BSD (Berkeley Source Distribution).

2.2. Nội dung chính

Quyền lợi:

  • Giấy phép BSD cho phép sử dụng và phân phối lại mã nguồn và sản phẩm, có hoặc không có sửa đổi, miễn là tuân thủ các yêu cầu.

Nghĩa vụ:

  • Phải giữ nguyên thông báo bản quyền của sản phẩm. Yêu cầu này nhằm đảm bảo một người dùng bất kì không thể tuyên bố anh ta đã viết ra một phần mềm nếu thực sự anh ta không viết ra nó.
  • Phải kèm theo 2 thông báo: Danh sách các điều kiện và từ chối trách nhiệm.
  • Không được sử dụng tên dự án hay tên nhà phân phối vào mục đích quảng bá bản thân nếu không được cho phép.

Như vậy, có thể thấy đặc điểm lớn nhất của BSD là nó cho phép các nhà phát triển phần mềm có thể thương mại hóa một cách thực sự các sản phẩm phần mềm có sử dụng mã nguồn mở dùng giấy phép BSD, tức kiếm tiền dựa trên mã nguồn của chương trình (chủ yếu là mã nguồn do họ viết thêm và giữ lại mã nguồn đã được sửa đổi đó cho bản thân mà không công bố) thay vì chỉ có thể kiếm tiền từ các hoạt động không trực tiếp gắn với phần mềm như bảo hành, phát hành, đào tạo hướng dẫn sử dụng … Ngoài ra, giấy phép BSD còn cho phép các nhà phát triển thay thế, bổ sung thêm các điều khoản vào trong giấy phép cho phù hợp với mình, hoặc thậm chí sử dụng một giấy phép khác.

2.3. Một số phần mềm sử dụng giấy phép BSD

Một số lớn các dự án xây dựng phần mềm nguồn mở, bao gồm cả những phần mềm lớn, đã được cấp giấy phép dạng BSD. Ví dụ:

  • Hệ thống Window Xfree86: nền tảng của hầu hết các giao diện với người sử dụng trong các hệ thống phần mềm nguồn mở.
  • FreeBSD, NetBSD và OpenBSD: các biến thể của phiên bản Unix gốc được cấp giấy phép BSD, cả ba đều được sử dụng rộng rãi trên mạng Internet, đặc biệt là FreeBSD, chương trình điều hành Yahoo Mail và dịch vụ Hotmail.

Tích hợp mã nguồn được cấp phép theo chế độ giấy phép BSD vào các ứng dụng thương mại là việc khá đơn giản. Ngay Microsoft trước đây cũng đã từng sử dụng một số mã BSD trong phần kết nối mạng của mã nguồn Window. Nhiều công ty đưa cả phần mềm máy chủ Apache vào trong gói phần mềm thương mại mà họ cung cấp cho khách hàng.

3. Giấy phép MIT

3.1. Nhà phát hành

MIT là một giấy phép phần mềm tự do được phát hành bởi Học viện Công nghệ Massachusetts (Massachusetts Institute of Technology – MIT), được hội đồng MIT X sử dụng.

Theo Tổ chức phần mềm tự do, giấy phép MIT nên được gọi chính xác hơn là giấy phép X11, do Học viện Massachusetts đã từng dùng nhiều loại giấy phép khác nữa, và do giấy phép này ban đầu được soạn thảo cho X Window System (dự án tạo giao diện đồ họa cho người dùng ở các máy tính kết nối mạng vào năm 1984).

3.2. Nội dung chính

MIT là một giấy phép dạng “permissive”, nghĩa là nó cho phép tái sự dụng các phần mềm độc quyền nhưng với điều kiện giấy phép MIT đã được phân phối kèm phần mềm đó. Giấy phép MIT cũng tương thích GLP, nghĩa là GPL cho phép tổng hợp và tái phân phối các phần mềm sử dụng giấy phép MIT.

  • Các quyền lợi của người sử dụng giấy phép vẫn tương tự như ở giấy phép GNU. Tuy nhiên MIT loại bỏ thuộc tính virus khỏi giấy phép, tức không bắt buộc các chương trình sử dụng tài nguyên có dùng giấy phép MIT cũng phải sử dụng giấy phép MIT.
  • Giấy phép MIT không bắt buộc phải công khai mã nguồn.
  • Người sử dụng phải kèm theo giấy phép MIT vào bản chỉnh sửa của mình, tuy nhiên không bị bắt buộc phải sử dụng giấy phép MIT cho toàn bộ bản đó.
  • Giấy phép MIT cũng có thể được chỉnh sửa lại cho phù hợp với thực tế.

Ngoài ra, giấy phép MIT không cấm sử dụng tên của người giữ bản quyền vào mục đích quảng bá, và cũng không bắt buộc phải hiện danh sách tất cả những người từng tham gia thực hiện dự án trong phần About của chương trình.

3.3. Một số phần mềm sử dụng giấy phép MIT

Các gói phần mềm sử dụng giấy phép MIT bao gồm Expat, PuTTY, Ruby on Rails, Lua 5.0 và X Window System.

Cũng có một số sản phẩm sử dụng chung giấy phép MIT với một giấy phép khác, mà nổi tiếng nhất là thư viện jQuery của JavaScript, sản phẩm này sử dụng cả giấy phép MIT và GNU.

Có thể xem danh sách chi tiết các sản phẩm sử dụng giấy phép MIT tại:

http://en.wikipedia.org/wiki/List_of_software_that_uses_the_MIT_License

4. Giấy phép Apache

ASF logo

4.1. Nhà phát hành

Giấy phép Apache là giấy phép mã nguồn mở được soạn ra bởi Tổ chức phần mềm Apache (ASF – Apache Software Foundation).

Tất cả mọi phần mềm do ASF phát hành đều mang giấy phép Apache. Những dự án không thuộc ASF nhưng vẫn mang giấy phép Apache, cho đến tháng 7 năm 2009 là vào khoảng 5000 dự án.

Phiên bản mới nhất của Apache là 2.0 http://www.apache.org/licenses/LICENSE-2.0

ASF và Tổ chức phần mềm tự do (FSF) đều công nhận giấy phép Apache 2.0 là một giấy phép phần mềm tự do, tương thích với phiên bản giấy phép GNU 3.0.

4.2. Nội dung chính

  • Giống như các giấy phép mã nguồn mở khác, 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 (đoạn 3 của giấy phép).
  • 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.

Như vậy, trái ngược với các giấy phép Copyleft, người nhận được những bản sửa đổi của chương trình mang giấy phép Apache cũng không nhất thiết phải nhận toàn bộ những quyền trên. Nói cách khác là họ có thể nhận đượ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 (đoạn 4 của giấy phép).

Có hai file cần được đặt trong thư mục gốc khi phân phối chương trình:

  • LICENSE: bản copy của chính giấy phép MIT.
  • NOTICE: văn bản chú thích tên của các thư viện đã dùng, kèm tên người phát triển.

Trong mỗi tệp tin đã được cấp phép, bất kì thông tin về bản quyền và bằng sáng chế trong bản phân phối lại phải được giữ nguyên như ở bản gốc, và ở mỗi tệp tin đã được chỉnh sửa phải thêm vào ghi chú là đã được chỉnh sửa khi nào.

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 phần thông báo có chứa đường link tới website chứa giấy phép (GNU 3.0 cũng đã áp dụng cách này). Khi đó, người dùng chỉ thấy thông báo ngắn gọn 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.

So với giấy phép BSD, Apache có nội dung chặt chẽ hơn trong các điều khoản và duy trì quyền sở hữu trí tuệ (BSD chỉ có 3 yêu cầu ngắn gọn trong giấy phép, trong khi Apache có tới 9 khoản mục lớn).

4.3. Các phần mềm sử dụng giấy phép Apache

Mặc dù có nhiều phần mềm không phải do ASF phát hành cũng mang giấy phép Apache, song nổi tiếng và được sử dụng nhiều nhất vẫn là Apache Server, phần mềm giao tiếp dành cho máy chủ. Ngay từ khi ra đời Apache đã có thể cạnh tranh với chương trình máy chủ của Nescape, và tới nay thì Apache chiếm khoảng hơn 60% thị phần máy chủ thế giới.

Bên cạnh Apache Server, còn có những phần mềm khác sử dụng giấy phép Apache như:

  • Apache Cocoon — một chương trình nền cho ứng dụng web
  • XAMPP — gói ứng dụng web gồm Apache và MySQL
  • Apache Axis2 – Chương tình nền cho dịch vụ web (xử lí được cả ngôn ngữ Java và C)

III. VẤN ĐỀ TƯƠNG THÍCH GIỮA CÁC GIẤY PHÉP

Sau khi xem xét một số giấy phép ở trên, ta thấy các giấy phép đều nhằm mục tiêu đảm bảo cho người dùng có quyền sử dụng, sửa chữa, tái phân phối sản phẩm gốc hoặc phân phối sản phẩm mình đã chỉnh sửa. Cho dù các điều khoản có khác nhau, nhưng đã là giấy phép phần mềm tự do thì lúc nào cũng hướng tới những mục đích này.

Tuy vậy, vẫn có những điểm khác biệt giữa các giấy phép, như việc người dùng sau khi sửa đổi một chương trình mã nguồn mở, có được giữ chương trình đó lại cho riêng mình không? Việc một chương trình mã nguồn mở cần thông báo danh sách tất cả mọi người từng tham gia vào dự án, hay chỉ đề tên người đầu tiên khởi xướng dự án? Việc nên hay không đem đặc tính “virus” của GNU vào tất cả các giấy phép khác? Việc sử dụng giấy phép “cứng” không cho phép sửa đổi hay dùng giấy phép “mềm” cho phép sửa đổi các điều khoản trong giấy phép?…

Nhiều yêu cầu khiến những người soạn thảo giấy phép phải họp nhau lại, và cổ gắng tìm ra một chuẩn chung cho giấy phép mã nguồn mở, hoặc chí ít, có thể tạo ra sự tương thích giữa các giấy phép.

Giấy phép GNU do Tổ chức phần mềm tự do phát hành thường được chọn để so sánh với các giấy phép khác. Hiển nhiên GNU cũng không phải hoàn thiện hoàn toàn nếu đem so sánh về mặt thương mại, nhưng nó thực sự là một giấy phép “mở” toàn diện.

Bảng so sánh một số giấy phép mã nguồn mở:

Giấy phép Khả năng một phần mềm/ thư viện mã nguồn đóng (A) liên kết với một phần mềm/ thư viện mang giấy phép mở tương ứng. Khả năng kết hợp một phần mềm (A) với một phần mềm/ thư viện mang giấy phép mở tương ứng. Tái phân phối mã nguồn sau khi thay đổi Khả năng tương thích với GNU GPL
GPL Không được (bởi phần mềm (A) nếu liên kết thì (A) sẽ bị coi như một sản phẩm phái sinh) Không được đối với phần mềm (A) có giấy phép không tương thích với GNU GPL Chỉ khi nó (mã nguồn sau khi thay đổi) cũng mang giấy phép GNU
LGPL (Less GPL) Có (bởi phần mềm sử dụng một thư viện không bị coi là một sản phầm phái sinh từ thư viện đó) Được nhưng có vài giới hạn: phải cung cấp mã nguồn của thư viện LGPL đã phân phối kèm bản chỉnh sửa (nếu có), nếu cần sửa thư viện LGPL thì nên có sự đồng ý trước. Chỉ khi nó (mã nguồn sau khi thay đổi) cũng mang giấy phép LGPL hay GPL
Apache Public Có (chừng nào tên “Apache” không được sử dụng trong tên của sản phẩm phái sinh) Không
Artistic 2.0 Có (chừng nào chương trình con viết bằng C hoặc Perl và được nhúng vào) Cho phép nếu thỏa mãn ít nhất một trong các điều kiện đã nói ở mục Vb)
BSD Chỉ khi bản chỉnh sửa của giấy phép BSD tương thích với GPL. Bản BSD gốc không tương thích do có điều khoản về ngăn quảng cáo.
MIT (X11)
Sun Public Chỉ được phát Không

Bản so sánh đầy đủ hơn gồm 15 loại giấy phép có thể tham khảo tại đại chỉ:

http://developer.kde.org/documentation/licensing/licenses_summary.html

Chọn giấy phép phù hợp:

Hiện nay hai giấy phép GNU và BSD, theo thống kê, là hai giấy phép mã nguồn mở được sử dụng phổ biến nhất.

  • Với những sản phẩm có dung lượng nhỏ, sử dụng đơn giản, nhà phát hành có thể sử dụng giấy phép BSD cho sản phẩm đó, vì BSD không bắt buộc phải công khai mã nguồn, và hầu như không có người sử dụng nào muốn bỏ tiền ra để được bảo hành/đào tạo hướng dẫn sử dụng với một sản phẩm như vậy.
  • Ngược lại, với những sản phẩm lớn, phức tạp, nhà phát hành lúc này có thể quan tâm đến giấy phép GNU, và thu lợi nhuận từ việc bảo hành, phân phối, đào tạo hướng dẫn sử dụng.
  •  Nếu nhà phát hành không quan tâm đến lợi nhuận, thì cả BSD và GNU đều tốt, và phần lớn mã nguồn trên trang web http://sourceforge.net/ mang giấy phép GNU.

Leave a Reply