Thứ Năm, 13 tháng 3, 2014

Tại sao Linux lại luôn miễn phí? Cùng tìm hiểu thế giới *nix qua giấy phép 'điên rồ': GPL

Linux for human beings

1. Lịch sử ngắn gọn của Linux cùng các thuật ngữ:

*nix là viết tắt của các hệ điều hành họ *nix, gồm Linux, Unix, hay thậm chí là Mac OS. Bởi vì chúng có nhiều cấu trúc tương đồng, nên mình gói gọn lại và viết tắt là *nix.
Linux, hay GNU/Linux, là 2 từ thường gặp thông dụng ngày nay, dùng để chỉ hệ điều hành Linux nói chung.
Đó là một cách dùng thuật ngữ không chính xác.
Một cách chính xác:

  • Thuật ngữ Linux dùng để chỉ nhân linux (linux = linux kernel);
  • GNU/Linux: Dùng để chỉ 1 hệ điều hành giống Unix, có hạt nhân là linux.



GNU: Là một hệ điều hành mã mở, được khởi xướng bởi Richard Stallman vào năm 1983; ý tưởng của GNU project là tạo ra một thế giới tự do, một hệ điều hành tự do cho mọi máy tính, mà thiết kế giống như Unix (và tương thích với Unix).
Lưu ý rằng Unix là một hệ điều hành đóng, viết bởi một số nhân viên của AT&T's Bell Labs vào năm 1969. Bởi vì Unix đóng, nên mục tiêu của GNU project là tạo ra 1 hệ điều hành giống như Unix nhưng mã nguồn mở, bởi vậy, tuy giống Unix (nên được gọi là Unix-like), nhưng khác Unix ở chỗ GNU là mã mở và không chứa bất kỳ một mã nào của Unix (content NO Unix code).

Bởi vì lý do đó, nên GNU, chính là 1 từ viết tắt đệ quy, ám chỉ GNU is Not Unix!
GNU = GNU's Not Unix.
Và GNU chính là free software.

Trên cơ sở đó, vào năm 1987, 4 năm sau khi GNU project được khởi xướng, MINIX (Mini Unix), một Unix-like được ra đời nhằm phục vụ cho môi trường giáo dục, bởi giáo sư Andrew S. Tanenbaum.
Và bởi vì những hạn chế trong giấy phép của MINIX (chỉ được phân phối miễn phí và sử dụng tự do trong lĩnh vực giáo dục), nên vào năm 1991, Linus Torvalds (lúc này đang là sinh viên trường University of Helsinki) bắt đầu thử viết 1 hạt nhân mang tên là Linux trên MINIX.

Sau khi Linux kernel đã đủ lông đủ cánh, thì GNU Shell được Linus dùng để thay cho lớp MINIX Shell: GNU/Linux đã ra đời như vậy.

(Tìm hiểu thêm về kernel - shell ở bài trước: Cùng tìm hiểu kiến trúc của *nix).

GNU/Linux tại sao miễn phí? Tại sao tự do (free software)? Tại sao luôn luôn là mã mở (open source)?
Bởi Linus Torvalds đã xuất bản nó dưới 1 giấy phép 'điên rồ': GPL.

2. Giấy phép GPL cho phép bạn làm những gì?


GNU GPL (GNU General Public License), dịch là Giấy phép công cộng GNU, được phát hành lần đầu tiên bởi cha đẻ của GNU, Richard Stallman, với 2 ý nghĩa sau:

1. Phần mềm GPL phải là phần mềm tự do.

Tức là người sử dụng có 4 quyền sau với phần mềm GPL:
  • Tự do sử dụng chương trình, cho bất cứ mục đích nào;
  • Tự do tìm hiểu cách hoạt động của chương trình, và tự do sửa đổi nó. (Quyền truy cập mã nguồn là điều kiện tiên quyết cho quyền tự do này);
  • Tự do tái phân phối bản sao;
  • Tự do cải tiến chương trình, và phát hành những gì cải tiến ra công cộng. (Quyền truy cập mã nguồn là điều kiện tiên quyết cho quyền tự do này);
Như vậy, GPL quả là giấy thông hành của tự do, còn EULA không cho người dùng cuối (end-user) bất kỳ quyền nào trừ quyền sử dụng phần mềm.

2. Phần mềm phát sinh từ phần mềm GPL cũng phải là phần mềm GPL.

Các giấy phép như BSD, MIT, Apache... thường không có quy định gì về phần mềm phát sinh nên xảy ra việc phần mềm phát sinh bị biến thành phần mềm độc quyền - người sử dụng bị hạn chế quyền với phần mềm phát sinh. Để đảm bảo các quyền sửa đổi, sao chép, phân phối lại với phần mềm phát sinh vẫn được trao cho người sử dụng thì Richard Stallman đã làm ra giấy phép GPL trong đó yêu cầu phần mềm phát sinh cũng phải là phần mềm GPL. Giấy phép GPL được bảo hộ bởi luật bản quyền.
Giấy phép này được Stallman gọi là copyleft, chơi chữ với copyright để thể hiện tinh thần đối ngược với tinh thần của copyright.

Mời bạn đọc giấy phép GPL tại địa chỉ: https://www.gnu.org/copyleft/gpl.html

3. Bản phân phối Linux mà tôi dùng liệu có phải là GNU/Linux không?

Các bạn thử bật Terminal và gõ vào dòng lệnh
uname -o
(hoặc uname -a)

Dòng lệnh trên, là HTTL kiểm tra cho Ubuntu.

Ở trang cấp phép của Ubuntu (http://www.ubuntu.com/about/about-ubuntu/licensing) có ghi rõ:
"Ubuntu chỉ là tập hợp của hàng ngàn chương trình máy tính cùng các tài liệu được tạo ra bởi các cá nhân, các nhóm, và các công ty khác nhau.
Mỗi chương trình đó có thể đi kèm với những giấy phép khác nhau"

Ubuntu ghi vậy, bởi ngoài GPL, còn có LGPL (Lesser GPL).
(trước khi bạn đọc về LGPL, bạn nên đọc link này :p http://www.gnu.org/philosophy/why-not-lgpl.html)

Thử kiểm tra 1 chương trình, ví dụ: Terminal của Ubuntu xem có GPL không?

Điều này có nghĩa rằng, bạn hoàn toàn được hưởng những gì như trong GPL đã ghi.

4. Một số hoạt cảnh:


?: Mình đang dùng Ubuntu, vậy Ubuntu có tuân theo GPL không?
!: Như đã nói ở trên: Ubuntu là tổng hợp của hàng ngàn chương trình khác nhau. Do vậy, có chương trình có GPL, có chương trình chỉ có LGPL mà thôi. Tuy nhiên, mọi chương trình mặc định trên Ubuntu đều là free.

?: Mình chỉnh sửa một chương trình mã mở nào đó, rồi đem bán, được không?
!: Hoàn toàn được. Có điều chương trình mà bạn chỉnh sửa cũng phải tuân theo GPL. Có nghĩa là ngoài việc đem bán, bạn phải cung cấp mã nguồn mở của cái mà bạn chỉnh sửa rồi cho người khác, nếu người khác muốn, để người khác đó sử dụng nó ..miễn phí.

Bây giờ bạn đã hiểu, chính GPL làm cho Linux luôn miễn phí.
Mọi thắc mắc khác, mời các bạn thảo luận, HTTL sẽ trả lời trong khả năng của mình.

1 nhận xét:

  1. Mình cũng chỉ dùng thuật ngữ chính xác là GNU/Linux cho duy nhất bài này, hoặc các thảo luận liên quan, hoặc 1 số bài yêu cầu thuật ngữ chính xác.
    Những bài viết khác: Khi nhắc đến Linux: Bạn sẽ nhớ đến hệ điều hành có nhân là Linux.

    Trả lờiXóa