Giáo trình Nhập môn quản trị hệ thống Linux - Trần Huy Thắng

Tài liệu Giáo trình Nhập môn quản trị hệ thống Linux - Trần Huy Thắng: 1/145 Giáo trình NHẬP MÔN QUẢN TRỊ HỆ THỐNG LINUX Trần Huy Thắng (tranhuythang@gmail.com) Do điều kiện thời gian, cuốn sách còn một phần chưa được viết. --> Rất mong bạn đọc có thể tham gia viết tiếp để hoàn thiện cuốn sách. Tài liệu này có thể download tại: www.fita.hua.edu.vn/thangtran Bạn có thể trích đăng lại (một phần hay toàn bộ) nội dung cuốn sách với chú thích về nơi download cuốn sách và thông báo tìm người viết tiếp này. Nếu có ý định thương mại xin nhắn trước với tác giả. 2/145 Lề của sách được đặt chế độ mirror margin để bạn có thể in 2 mặt. 3/145 Lời nói đầu Cuốn “Nhập môn Quản trị Hệ thống Linux” được viết với mục đích làm giáo trình cho một lớp Linux 3 hoặc 6 tín chỉ (45 hoặc 90 giờ) học thực hành trên phần mềm máy ảo VMware Workstation. Nội dung cuốn sách gồm 3 phần: Phần 1 (phần phụ): Giới thiệu về luật bản quyền, phần mềm tự do/nguồn mở (FOSS), các hệ điều hành *nix. Phần này tuy không liên quan đến các thao tác kỹ thuật và các...

pdf145 trang | Chia sẻ: quangot475 | Lượt xem: 561 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Giáo trình Nhập môn quản trị hệ thống Linux - Trần Huy Thắng, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
1/145 Giáo trình NHẬP MÔN QUẢN TRỊ HỆ THỐNG LINUX Trần Huy Thắng (tranhuythang@gmail.com) Do điều kiện thời gian, cuốn sách còn một phần chưa được viết. --> Rất mong bạn đọc có thể tham gia viết tiếp để hoàn thiện cuốn sách. Tài liệu này có thể download tại: www.fita.hua.edu.vn/thangtran Bạn có thể trích đăng lại (một phần hay toàn bộ) nội dung cuốn sách với chú thích về nơi download cuốn sách và thông báo tìm người viết tiếp này. Nếu có ý định thương mại xin nhắn trước với tác giả. 2/145 Lề của sách được đặt chế độ mirror margin để bạn có thể in 2 mặt. 3/145 Lời nói đầu Cuốn “Nhập môn Quản trị Hệ thống Linux” được viết với mục đích làm giáo trình cho một lớp Linux 3 hoặc 6 tín chỉ (45 hoặc 90 giờ) học thực hành trên phần mềm máy ảo VMware Workstation. Nội dung cuốn sách gồm 3 phần: Phần 1 (phần phụ): Giới thiệu về luật bản quyền, phần mềm tự do/nguồn mở (FOSS), các hệ điều hành *nix. Phần này tuy không liên quan đến các thao tác kỹ thuật và các sách về quản trị hệ thống cũng không đề cập nhiều nhưng chúng tôi nghĩ rất nên đưa vào. Đặc biệt trong các trường đại học ở Việt Nam, (theo sự quan sát cá nhân) vấn đề “bản quyền”, “nguồn mở” chưa được dạy một cách đúng mực do đó chúng tôi cho rằng cơ hội tốt nhất để bổ sung phần thiếu sót này là lồng nó vào trong các lớp/giáo trình về Linux. (Phần này chỉ nên nói trong buổi đầu tiên giới thiệu môn học.) Phần 2 và 3 (phần chính): Các câu lệnh quản trị Linux trên máy đơn và trong môi trường mạng. Cuốn sách chỉ nói về các câu lệnh mà không đề cập đến các công cụ có giao diện đồ họa bởi: thứ nhất, người mới học (vốn đang dùng Windows) nên tập làm quen với việc gõ lệnh; thứ hai, cái vỏ giao diện đồ họa nhiều khi không khai thác hết được các lệnh mà nó gọi đến. Các câu lệnh trong sách được thực thi trên Redhat/Fedora nhưng hoàn toàn có thể chạy bình thường trên Debian, Ubuntu, OpenSuse (trừ phần cài đặt gói phần mềm.) Tài liệu này được dạy trên VMware Workstation (nên cũng có một bài hướng dẫn nhỏ về mạng ảo của phần mềm này.) (Chúng tôi cũng cho rằng phần Shell script để tự động hóa các thao tác quản trị là phần nâng cao chỉ dành cho những người đã quen với Linux nên không đề cập đến trong cuốn sách nhập môn này.) Do điều kiện thời gian, chúng tôi chưa viết được phần 3 cũng như còn thiếu một số điểm ở phần 1 và phần 2 nên rất mong bạn đọc có thể tham gia viết tiếp để lắp ghép thành một cuốn sách hoàn chỉnh. Trần Huy Thắng (tranhuythang@gmail.com) Bạn có thể trích đăng lại (một phần hay toàn bộ) nội dung cuốn sách với chú thích về nơi download cuốn sách và thông báo tìm người viết tiếp này. Nếu có ý định thương mại xin nhắn trước với tác giả. Mục lục sơ lược Bài 1. Khái niệm FOSS và *nix _______________________________________________________ 9 Bài 2. Bổ túc kiến thức về HDD. Cài đặt Linux, FreeBSD (chưa xong). _____________________ 29 Bài 3. Làm quen với Linux command _________________________________________________ 31 Bài 4. Devices - Filesystems – Mounting _______________________________________________ 52 Bài 5. Install softwares _____________________________________________________________ 65 Bài 6. Quản trị user. File permission _________________________________________________ 72 Bài 7. Advanced partitioning: RAID & LVM ___________________________________________ 87 Bài 8. Quản lý process, daemon ______________________________________________________ 99 Bài 9. Quá trình khởi động (grub, kernel, init) và tắt máy của Linux _______________________ 113 Bài 10. Tạo mạng ảo bằng VMware Workstation _______________________________________ 126 Bài 11. Bổ túc kiến thức về TCP/IP__________________________________________________ 136 Bài 12. Configure card mạng (chưa xong) ____________________________________________ 142 Tài liệu tham khảo _______________________________________________________________ 145 4/145 Mục lục Bài 1. Khái niệm FOSS và *nix ............................................................................................................. 9 I. FOSS ............................................................................................................................................................. 10 1. Sở hữu trí tuệ ............................................................................................................................................................ 10 Sở hữu trí tuệ (intelectual property) ......................................................................................................................... 10 Sở hữu công (public domain) .................................................................................................................................. 10 Đối ngược với sở hữu trí tuệ là sở hữu công ....................................................................................................... 10 Khi sở hữu trí tuệ trở thành sở hữu công ............................................................................................................ 11 Copyright (bản quyền) © ......................................................................................................................................... 11 Thương hiệu (trademark) ......................................................................................................................................... 12 2. Phân loại phần mềm theo quyền của người sử dụng ................................................................................................ 13 EULA và các quyền của người sử dụng .................................................................................................................. 13 Proprietary softwares hay FOSS .............................................................................................................................. 13 Disclaimer of warranty (chối bỏ bảo đảm) .............................................................................................................. 14 3. Free/Open source softwares (FOSS) ........................................................................................................................ 14 a. Định nghĩa Free/Open source softwares .............................................................................................................. 14 Free software ...................................................................................................................................................... 14 Open source software .......................................................................................................................................... 15 Free softwares vs Open source ........................................................................................................................... 17 b. FOSS và chuyện “miễn phí” ................................................................................................................................ 17 FOSS thì miễn phí ? ............................................................................................................................................ 17 FOSS thương mại ? ............................................................................................................................................. 18 c. Các mẫu giấy phép FOSS .................................................................................................................................... 19 4. Các giấy phép FOSS kiểu public domain: BSD, MIT, Apache ................................................................................ 20 BSD (copycenter) .................................................................................................................................................... 20 MIT licence ............................................................................................................................................................. 21 Apache ..................................................................................................................................................................... 22 5. Các giấy phép FOSS kiểu weak copyleft: LGPL và Perl (chưa viết) ....................................................................... 22 6. Giấy phép (strong) copyleft: GPL (chưa xong) ........................................................................................................ 22 Ý tưởng của giấy phép GPL: ................................................................................................................................... 22 Ý nghĩa của giấy phép GPL: .................................................................................................................................... 23 Áp dụng các điều khoản của GPL ........................................................................................................................... 23 7. Mô hình phát triển phần mềm FOSS (chưa viết) ...................................................................................................... 23 8. Mô hình kinh doanh phần mềm FOSS (chưa viết) ................................................................................................... 23 9. Những quan niệm sai lầm thường thấy về FOSS (chưa viết) ................................................................................... 23 II. *nix .............................................................................................................................................................. 23 1. Giới thiệu UNIX, BSD ............................................................................................................................................. 23 UNIX ....................................................................................................................................................................... 24 BSD ......................................................................................................................................................................... 24 2. UNIX và UNIX-like (*nix) ...................................................................................................................................... 25 3. Chuẩn POSIX (SUS) ................................................................................................................................................ 25 4. Nhân Linux và Dự án GNU ...................................................................................................................................... 26 5. Linux distribution ..................................................................................................................................................... 26 Bài 2. Bổ túc kiến thức về HDD. Cài đặt Linux, FreeBSD (chưa xong). .......................................... 29 1. Hiểu về HDD ............................................................................................................................................... 29 1.a. Cấu trúc vật lý của HDD ....................................................................................................................................... 29 1.b. Cấu trúc logic của HDD ........................................................................................................................................ 30 1.c. Quá trình khởi động OS của máy tính ................................................................................................................... 30 2. Công cụ máy ảo để học thực hành Linux. Một số chú ý về Vmware Workstation. .............................. 30 3. Các cách để có được một bản Linux distro và trường hợp của Redhat. ............................................... 30 4. Cài đặt Linux, FreeBSD ............................................................................................................................. 30 4.a. Cài đặt Linux ......................................................................................................................................................... 30 4.b. Cài đặt FreeBSD .................................................................................................................................................... 30 4.c. Tự động hóa quá trình cài đặt ................................................................................................................................ 30 5. Vấn đề multi OS .......................................................................................................................................... 30 Bài 3. Làm quen với Linux command .................................................................................................. 31 1. Đăng nhập và tắt máy ................................................................................................................................ 31 2. Kernel, Shell ................................................................................................................................................ 32 5/145 3. Virtual Console và Terminal ..................................................................................................................... 33 4. Lệnh trong Linux ....................................................................................................................................... 33 a. Cách viêt lệnh ........................................................................................................................................................... 33 b. Thực thi executable file ............................................................................................................................................ 34 c. Dừng một lệnh .......................................................................................................................................................... 35 c. Shell script ................................................................................................................................................................ 35 d. Metacharacters ......................................................................................................................................................... 35 e. Help .......................................................................................................................................................................... 36 f. History ...................................................................................................................................................................... 36 5. su .................................................................................................................................................................. 36 6. Làm việc với file và thư mục trên *nix ..................................................................................................... 36 a. Cấu trúc file và thư mục của Linux khác với của Windows ..................................................................................... 36 b. Đường dẫn thư mục của Linux – kí hiệu /, thói quen TAB, thư mục . ~ .................................................................. 37 Hãy cẩn thận với dấu / ............................................................................................................................................. 37 Thư mục home, thư mục hiện hành, thư mục ~ . .. ................................................................................................ 38 Muốn nhanh thì bấm TAB hoặc TAB TAB ............................................................................................................ 38 Khi tên file, thư mục chứa kí tự đặc biệt ................................................................................................................. 39 c. Lệnh ls –l, xem thông tin về file, thư mục ................................................................................................................ 39 d. Các lệnh xem, tạo mới, xóa, di chuyển, đổi tên file và thư mục .............................................................................. 40 Hiển thị nội dung file .............................................................................................................................................. 40 Tạo thư mục mới ..................................................................................................................................................... 40 Tạo file mới ............................................................................................................................................................. 40 Đổi tên/di chuyển file và thư mục ........................................................................................................................... 40 Copy file và thư mục ............................................................................................................................................... 40 Xóa file hoặc thư mục ............................................................................................................................................. 41 e. Midnight Commander (mc) ...................................................................................................................................... 41 f. Link .......................................................................................................................................................................... 41 g. Archive và Compress file ......................................................................................................................................... 41 h. Tìm kiếm file và thư mục ......................................................................................................................................... 42 7. Filesystem Hierarchy standard ................................................................................................................. 43 8. Trong *nix, mọi thứ đều là file. ................................................................................................................. 45 9. Redirection và xargs .................................................................................................................................. 46 a. Redirect stdin, stdout, stderr to file .......................................................................................................................... 46 b. Pipe và kết hợp với grep, wc, sort, less .................................................................................................................... 48 c. xargs ......................................................................................................................................................................... 49 10. VIM editor ................................................................................................................................................ 49 11. Regular expression ................................................................................................................................... 50 Bài 4. Devices - Filesystems – Mounting .............................................................................................. 52 1. Device .......................................................................................................................................................... 52 a. Peripheral device và Driver ...................................................................................................................................... 52 Peripheral device ..................................................................................................................................................... 52 Phân loại device: block, character, virtual ............................................................................................................... 52 Driver ...................................................................................................................................................................... 53 b. Device file (special file) ........................................................................................................................................... 53 c. Sử dụng storage device. ........................................................................................................................................... 55 2. Filesystem .................................................................................................................................................... 55 a. Filesystem của block device ..................................................................................................................................... 55 b. Format ...................................................................................................................................................................... 55 i) fdisk – edit partition table .................................................................................................................................... 56 ii) mkfs (make filesystem)....................................................................................................................................... 56 3. Mounting ..................................................................................................................................................... 57 a. Lệnh mount .............................................................................................................................................................. 57 b. file cấu hình /etc/fstab .............................................................................................................................................. 58 c. file cấu hình /etc/mtab .............................................................................................................................................. 59 4. Hai partition đặc biệt của Linux ............................................................................................................... 60 5. dd và loop device ........................................................................................................................................ 60 a. Lệnh dd .................................................................................................................................................................... 60 b. loop device ............................................................................................................................................................... 61 6/145 6. Một số thao tác khác với storage device ................................................................................................... 62 7. Thực hành với Vmware .............................................................................................................................. 63 Bài 5. Install softwares.......................................................................................................................... 65 I. RPM.............................................................................................................................................................. 65 I.1 Tên file package và tên software ............................................................................................................................. 65 I.2 RPM database và rpm tool. ..................................................................................................................................... 65 I.3 Install ...................................................................................................................................................................... 66 I.4 Query ...................................................................................................................................................................... 67 I.5 Upgrade ................................................................................................................................................................... 68 I.6 Erase ........................................................................................................................................................................ 68 I.7 Verify ...................................................................................................................................................................... 68 II. DEB (chưa viết) .......................................................................................................................................... 69 III. Cài đặt phần mềm từ source code .......................................................................................................... 69 Bài 6. Quản trị user. File permission ................................................................................................... 72 1. Quản trị user ............................................................................................................................................... 72 1.1 Users ....................................................................................................................................................................... 72 1.2 Group ...................................................................................................................................................................... 74 1.3 Reset password của root ......................................................................................................................................... 75 2. File permission ............................................................................................................................................ 76 Chủ sở hữu, nhóm chủ sở hữu mặc định ...................................................................................................................... 77 Thay đổi chủ sở hữu, nhóm chủ sở hữu bằng lệnh chown, chgrp ................................................................................ 77 Thay đổi quyền truy cập r, w, x với các đối tượng u, g, o ............................................................................................ 77 SUID, SGID, sticky bit ................................................................................................................................................. 79 Set UID và Set GID cho file khả thi ........................................................................................................................ 79 Set GID cho thư mục ............................................................................................................................................... 80 Sticky bit .................................................................................................................................................................. 81 Kí hiệu SUID, SGID, Sticky bit bằng chữ số .......................................................................................................... 81 3. Quota............................................................................................................................................................ 82 1-Cài đặt phần mềm quota ....................................................................................................................................... 82 2-Mount partition với thuộc tính usrquota ............................................................................................................... 83 3-Khởi tạo quota database trên partition bằng lệnh quotacheck .............................................................................. 83 4-enable (disable) quota bằng quotaon (quotaoff) ................................................................................................... 84 5-Đặt limit, grace cho user bằng lệnh edquota ........................................................................................................ 84 6-Xem lại thông tin về quota ................................................................................................................................... 85 7-Thử nghiệm quota ................................................................................................................................................ 85 Bài 7. Advanced partitioning: RAID & LVM ...................................................................................... 87 I. Redundant Array of Inexpensive Disks .................................................................................................... 87 1. Khái niệm RAID ...................................................................................................................................................... 87 2. Thiết lập và sử dụng RAID ...................................................................................................................................... 89 3. Xem thông tin về array ............................................................................................................................................. 90 4. Quản lý disk trong array ........................................................................................................................................... 91 5. Hủy RAID array ....................................................................................................................................................... 91 6. File /etc/mdadm.con ................................................................................................................................................. 92 7. Stripe hay Linear ...................................................................................................................................................... 92 II. Logical Volume Management ................................................................................................................... 92 1. Thiết lập LVM .......................................................................................................................................................... 92 Thiết lập và sử dụng LV .......................................................................................................................................... 92 Enable LVM ............................................................................................................................................................ 94 LVM on RAID (chưa xong) .................................................................................................................................... 94 2. Xem thông tin về volume ......................................................................................................................................... 95 Khái niệm PE, LE .................................................................................................................................................... 95 Xem thông tin bằng pvdisplay, vgdisplay, lvdisplay ............................................................................................... 95 3. Quản lý các volume .................................................................................................................................................. 97 Disable/Remove volume .......................................................................................................................................... 97 Thêm vào/Rút ra/Hoán chuyển PV .......................................................................................................................... 97 Resize LV ................................................................................................................................................................ 97 4. Các mục linh tinh khác: ............................................................................................................................................ 98 Bài 8. Quản lý process, daemon ........................................................................................................... 99 7/145 I. Tiến trình ..................................................................................................................................................... 99 I.1 Tiến trình là chương trình khi nó đang được thực thi ............................................................................................. 99 Tiến trình cha, tiến trình con. Số ID của tiến trình. ............................................................................................... 100 Phân bổ CPU và độ ưu tiên (số nice) của tiến trình .............................................................................................. 100 Trạng thái của tiến trình ........................................................................................................................................ 100 Chủ sở hữu của tiến trình ...................................................................................................................................... 101 Các signal mà tiến trình bắt ................................................................................................................................... 101 I.2 Các thao tác với tiến trình ..................................................................................................................................... 101 In ra trạng thái các tiến trình bằng lệnh ps ............................................................................................................ 101 Theo dõi các tiến trình bằng lệnh top (hoặc prstat, topas) ..................................................................................... 102 Tìm kiếm một tiến trình. ....................................................................................................................................... 104 Điều chỉnh số nice của tiến trình. .......................................................................................................................... 104 I.3 Signal và lệnh kill, killall, pkill ............................................................................................................................ 104 Lệnh kill ................................................................................................................................................................ 104 Lệnh killall và pkill ............................................................................................................................................... 105 I.4 Các tiến trình có tương tác. Chế độ background, foreground. .............................................................................. 105 II. Quản lý daemon ...................................................................................................................................... 107 Các daemon nằm ở đâu ? ........................................................................................................................................... 107 Trực tiếp bật/tắt daemon ............................................................................................................................................ 107 /etc/rc.d/rc[0-6].d – tập daemon cho mỗi run level .................................................................................................... 108 Các công cụ quản lý daemon ..................................................................................................................................... 109 III. Lập lịch (scheduling) ............................................................................................................................. 111 cron ............................................................................................................................................................................ 111 System cron jobs ........................................................................................................................................................ 111 User cron jobs ............................................................................................................................................................ 112 at ................................................................................................................................................................................ 112 Bài 9. Quá trình khởi động (grub, kernel, init) và tắt máy của Linux .............................................. 113 I. GRUB ......................................................................................................................................................... 113 1. Chức năng của GRUB ............................................................................................................................................ 113 2. Quá trình tải GRUB ............................................................................................................................................... 114 3. Cài lại GRUB ......................................................................................................................................................... 115 4. File grub.conf (menu.lst) ........................................................................................................................................ 116 II. Nạp hệ điều hành từ GRUB ................................................................................................................... 117 Truy xuất device ........................................................................................................................................................ 118 Qui ước kí hiệu device của GRUB ........................................................................................................................ 118 Truy xuất file của GRUB ...................................................................................................................................... 118 Tải nhân Linux ........................................................................................................................................................... 119 Ba lệnh để tải nhân Linux: kernel, root, initrd ...................................................................................................... 119 Tải nhân Linux thủ công ....................................................................................................................................... 119 Tải nhân FreeBSD ................................................................................................................................................. 121 Nạp bootloader của các hệ điều hành khác ................................................................................................................ 121 III. init ........................................................................................................................................................... 122 1. /sbin/init chạy và đọc file /etc/initab ................................................................................................................. 122 2. /etc/inittab ......................................................................................................................................................... 122 3. Thực thi các script khởi tạo hệ thống trong thư mục /etc/rc.d .......................................................................... 123 IV. Tắt máy ................................................................................................................................................... 124 Bài 10. Tạo mạng ảo bằng VMware Workstation .............................................................................. 126 1. Nối máy thật/ máy ảo vào các switch ảo ................................................................................................. 126 1.1 Nối máy thật với các switch ảo: ........................................................................................................................... 126 a. Nối NIC thật vào switch ảo: .............................................................................................................................. 127 b. Nối NIC ảo trên máy thật vào switch ảo: .......................................................................................................... 127 1.2 Nối máy ảo với switch ảo: ................................................................................................................................... 129 2. VMnet0 (Bridged mode) và Virtual Bridge ........................................................................................... 129 3. VMnet1 (Host only mode) và Virtual DHCP server ............................................................................. 130 4. VMnet8 (NAT mode) và Virtual NAT device ........................................................................................ 133 5. VM team và LAN segment ...................................................................................................................... 135 6. Tự tạo mạng WAN bằng VMware Workstation ................................................................................... 135 8/145 Bài 11. Bổ túc kiến thức về TCP/IP ................................................................................................... 136 I. Khái niệm mạng máy tính. Phần cứng mạng và Giao thức mạng (chưa viết) ..................................... 136 II. Mạng LAN và WAN (chưa viết) ............................................................................................................. 136 III. TCP/IP (chưa viết) ................................................................................................................................. 136 IV. Địa chỉ IP ................................................................................................................................................. 136 Địa chỉ IP theo cách phân lớp A, B, C (cũ) ................................................................................................................ 137 Subnet ......................................................................................................................................................................... 138 Tính nhẩm với địa chỉ IP ....................................................................................................................................... 139 Địa chỉ loopback .................................................................................................................................................... 140 IP trên Internet, IP tĩnh, IP động và ICANN.......................................................................................................... 140 Địa chỉ IP riêng (private IP)................................................................................................................................... 141 Bài 12. Configure card mạng (chưa xong) ........................................................................................ 142 Cài đặt driver cho card mạng ...................................................................................................................................... 142 Lệnh ifconfig .............................................................................................................................................................. 142 Hiển thị trạng thái của card mạng .......................................................................................................................... 142 Gán địa chỉ IP cho card mạng ................................................................................................................................ 143 Gán địa chỉ IP alias cho card mạng........................................................................................................................ 143 Bật tắt card mạng ................................................................................................................................................... 144 Bộ công cụ ip .............................................................................................................................................................. 144 Tài liệu tham khảo .............................................................................................................................. 145 9/145 Đây là một bài của bản thảo “Giáo trình Nhập môn Quản trị Hệ thống Linux” đang viết dở. © Trần Huy Thắng tranhuythang@gmail.com, Rất mong bạn đọc có thể tham gia viết nốt phần còn lại của cuốn sách. Bạn đọc có thể đăng lại một phần hay toàn bộ tập bản thảo này nhưng cần ghi rõ nguồn và thông báo tìm người viết tiếp này. Nếu đăng lại với ý định thương mại thì xin nhắn trước cho tác giả. Bài 1. Khái niệm FOSS và *nix Bài 1. Khái niệm FOSS và *nix .............................................................................................................. 9 I. FOSS ............................................................................................................................................................ 10 1. Sở hữu trí tuệ ............................................................................................................................................................ 10 Sở hữu trí tuệ (intelectual property) ........................................................................................................................ 10 Sở hữu công (public domain) .................................................................................................................................. 10 Copyright (bản quyền) © ........................................................................................................................................ 11 Thương hiệu (trademark) ........................................................................................................................................ 12 2. Phân loại phần mềm theo quyền của người sử dụng ................................................................................................ 13 EULA và các quyền của người sử dụng .................................................................................................................. 13 Proprietary softwares hay FOSS ............................................................................................................................. 13 Disclaimer of warranty (chối bỏ bảo đảm) .............................................................................................................. 14 3. Free/Open source softwares (FOSS) ........................................................................................................................ 14 a. Định nghĩa Free/Open source softwares .............................................................................................................. 14 Free software ...................................................................................................................................................... 14 Open source software ......................................................................................................................................... 15 Free softwares vs Open source ........................................................................................................................... 17 b. FOSS và chuyện “miễn phí” ............................................................................................................................... 17 FOSS thì miễn phí ? ........................................................................................................................................... 17 FOSS thương mại ? ............................................................................................................................................ 18 c. Các mẫu giấy phép FOSS .................................................................................................................................... 19 4. Các giấy phép FOSS kiểu public domain: BSD, MIT, Apache ............................................................................... 20 BSD (copycenter) .................................................................................................................................................... 20 MIT licence ............................................................................................................................................................. 21 Apache .................................................................................................................................................................... 22 5. Các giấy phép FOSS kiểu weak copyleft: LGPL và Perl (chưa viết) ....................................................................... 22 6. Giấy phép (strong) copyleft: GPL (chưa xong) ........................................................................................................ 22 7. Mô hình phát triển phần mềm FOSS (chưa viết) ..................................................................................................... 23 8. Mô hình kinh doanh phần mềm FOSS (chưa viết) ................................................................................................... 23 9. Những quan niệm sai lầm thường thấy về FOSS (chưa viết) ................................................................................... 23 II. *nix ............................................................................................................................................................. 23 1. Giới thiệu UNIX, BSD ............................................................................................................................................. 23 UNIX ....................................................................................................................................................................... 24 BSD ......................................................................................................................................................................... 24 2. UNIX và UNIX-like (*nix) ...................................................................................................................................... 25 3. Chuẩn POSIX (SUS) ................................................................................................................................................ 25 4. Nhân Linux và Dự án GNU ..................................................................................................................................... 26 5. Linux distribution ..................................................................................................................................................... 26 Linux, UNIX thì có liên quan gì đến chuyện “bản quyền”, “nguồn mở” với “miễn phí” ? Hàng ngày chúng ta nghe thấy phương tiện truyền thông nói nhiều về “Linux”, “bản quyền”, “nguồn mở”, “miễn phí” thấy những thứ này rất mơ hồ, rối rắm. Chìa khóa để gỡ rối mớ bòng bong này là khái niệm “bản quyền”. (Dưới đây là mấy dòng ngẫu hứng giúp bạn đọc đối chiếu nhanh hiểu biết của mình về vấn đề.) Linux là một phần mềm tự do (free software) (“free” là “tự do” chứ không phải “miễn phí”) và do đó người dùng có thể sử dụng miễn phí nhưng để có được một bản phân phối Linux (Linux distro) có thể vẫn phải mất phí. Phần mềm nguồn mở (open source softwares) theo cách hiểu thông thường chỉ là phần mềm có mã nguồn được công bố. Nhưng đây mới chỉ là phần nổi, phần chìm của tảng băng chính là những ràng buộc về mã nguồn này. Tổ chức OSI đã đưa ra định nghĩa về phần mềm nguồn mở với 10 tiêu chí chặt chẽ (mà cũng gần tương đương với phần mềm tự do). Khi bàn luận về phần mềm nguồn mở người ta có ý hướng đến những tiêu chí này hơn là cách hiểu giản đơn thường thấy. Khái niệm phần mềm tự do hay nguồn mở (free/open source softwares) đều được xây dựng trên luật bản quyền. Có thể bạn đã từng nghe thấy có người nói “dùng Linux để tránh tình trạng sử dụng 10/145 Windows không có bản quyền” nhưng xin thưa Linux hay Windows hay phần lớn các phần mềm (trừ public domain – sẽ nói sau) dù nguồn mở, nguồn đóng, miễn phí hay trả phí đều là phần mềm có bản quyền ! Tôi đã từng thấy có một cách hiểu sai như sau: “Linux và những thứ như phần mềm nguồn mở thì không có bản quyền do đó được dùng miễn phí còn Windows là phần mềm có bản quyền nên không được sao chép lậu cho nhau mà phải mua” (cách hiểu sai) !!!. Linux không là UNIX. UNIX là một thương hiệu mà Linux hay BSD tuy tương thích với UNIX nhưng không thể được gọi là UNIX. Bản quyền hay thương hiệu là 2 nhánh con của luật sở hữu trí tuệ, do đó để hiểu các khía cạnh pháp lý của Linux và UNIX chúng ta sẽ bắt đầu bằng khái niệm sở hữu trí tuệ rồi đến phần mềm tự do/nguồn mở và cuối cùng mới là đích *nix. I. FOSS 1. Sở hữu trí tuệ Sở hữu trí tuệ (intelectual property) Trong đời sống hàng ngày ta đã quen với khái niệm “sở hữu”: nếu tôi có một chiếc xe (hay tôi là chủ sở hữu của chiếc xe) thì luật pháp qui định tôi có toàn quyền với chiếc xe: tôi có thể sử dụng, sửa chữa, cho mượn hoặc nhượng lại và người khác không có quyền gì với chiếc xe của tôi. Chiếc xe là tài sản hữu hình, quyền sở hữu chiếc xe đã được luật pháp bảo hộ; tương tự như vậy với những tài sản không hữu hình khác như ca khúc, phần mềm, tiểu thuyết thì quyền sở hữu chúng cũng cần được luật pháp bảo hộ. Những tài sản không hữu hình này có 2 đặc điểm: - Chúng được tạo ra bởi trí tuệ con người nên được gọi là tài sản trí tuệ (intellectual property). Giá trị của chúng nằm ở nội dung trừu tượng chứ không nằm ở phương tiện thể hiện vật lý. Ví dụ: một ca khúc có thể được lưu trữ bằng một bản chép tay nốt nhạc hay một file MP3 trong máy tính hay thể hiện trong giọng hát của ca sĩ. - Chúng rất dễ bị nhân bản (sao chép). Ví dụ: một cuốn tiểu thuyết rất dễ bị photocopy ra thành nhiều bản. Điều này khác với tài sản hữu hình, bạn không thể nhân bản chiếc xe của anh hàng xóm để dùng. Chính vì đặc tính dễ bị nhân bản nên quyền sở hữu tài sản trí tuệ rất dễ bị xâm phạm. Tôi mất công làm ra một phần mềm, phần mềm đó là tài sản của tôi bạn không được động vào nhưng có khi chỉ với vài thao tác bạn đã sao chép được nó và phát tán lên Internet cho ngàn người dùng gây thiệt hại cho tôi là không bán được phần mềm đó cho ngàn người kia. Để bảo vệ quyền sở hữu đối với tài sản trí tuệ, từ thế kỉ XX luật sở hữu trí tuệ ra đời. Ngày nay quốc gia nào (trong đó có Việt Nam) cũng có luật sở hữu trí tuệ trong hệ thống luật pháp của mình. Trong luật sở hữu trí tuệ, tài sản trí tuệ thường được phân thành 5 loại: bản quyền (copyright), sáng chế (patent), thương hiệu (trademark), kiểu dáng công nghiệp (industrial design), bí mật kinh doanh (trade secret). Tài liệu này chỉ đề cập đến bản quyền, thương hiệu. Sở hữu công (public domain) Đối ngược với sở hữu trí tuệ là sở hữu công Ở trên khi ta nói về tài sản (hữu hình - chiếc xe hay trí tuệ - ca khúc, phần mềm) thì muốn nhấn mạnh nó thuộc quyền sở hữu của một cá nhân cụ thể nào đó nhưng có những tài sản lại không thuộc về một cá nhân cụ thể nào mà thuộc về tất cả mọi người (hay nôm na là “của chung”) và được gọi là sở hữu công cộng (public domain). Cái gì không là sở hữu cá nhân (của riêng) thì là sở hữu công (của chung) và ngược lại. Một khi là tài sản sở hữu công thì ai cũng có quyền sử dụng, sửa đổi, hưởng lợi bằng cách kinh doanh trên nó. 11/145 Ví dụ: tiếng Anh, định luật cơ học Newton là sở hữu công. Ai cũng có thể sử dụng và phát triển tiếng Anh cũng như kinh doanh sách viết về định luật cơ học Newton. Nhưng với một cuốn tiểu thuyết vừa viết xong của anh X thì chỉ mình anh X có quyền xuất bản. Khi sở hữu trí tuệ trở thành sở hữu công Anh X là chủ sở hữu tài sản trí tuệ A nhưng liệu A vĩnh viễn thuộc về X ? Điều này là không cần thiết vì anh X cũng chỉ sống được hữu hạn một số năm. Quan trọng hơn tài sản trí tuệ A có thể là tài sản rất hữu ích cho cộng đồng nếu anh X giữ quyền sở hữu và người khác không có quyền động tới X thì điều này lại trở thành nhân tố cản trở sự phát triển của cộng đồng. Vì 2 lí do này luật sở hữu trí tuệ qui định tài sản trí tuệ chỉ thuộc về chủ sở hữu trong một thời gian hữu hạn. Ví dụ với 3 loại tài sản trí tuệ: - Sáng chế, ở châu Âu, được bảo hộ trong 20 năm kể từ khi đăng kí - Kiểu dáng công nghiệp, ở Canda, được bảo hộ trong 10 năm kể từ khi đăng kí - Bản quyền, ở hầu hết các nước, được bảo hộ trong thời gian chủ sở hữu sống cho đến khoảng 70 năm sau khi chết. Hết thời gian bảo hộ, tài sản trí tuệ không còn chủ sở hữu nữa, nó trở thành sở hữu công. Tài sản trí tuệ cũng trở thành sở hữu công nếu như chủ sở hữu tự thân từ bỏ quyền sở hữu của mình. Ví dụ: kịch của Shakespears ban đầu là Shakespear giữ bản quyền nhưng đến ngày nay đã rất lâu sau khi Shakespears mất nên kịch Shakespear hết hiệu lực bảo hộ bản quyền và trở thành sở hữu công. Ai cũng có thể in sách kịch Shakespears mà không cần hỏi xin ai. Copyright (bản quyền) © – Bản quyền là 1 tài sản trí tuệ (trong 5 loại tài sản trí tuệ) được luật sở hữu trí tuệ bảo hộ. Bản quyền là các quyền như quyền sao chép, quyền phân phối lại, quyền sửa đổi với một tác phẩm; các quyền này là độc nhất của tác giả, những người khác không thể có được hoặc muốn có phải hỏi xin tác giả. Tác phẩm ở đây có thể là một cuốn sách, một bộ phim, một phần mềm, hay bất cứ một sáng tạo nào. Do phạm vi của tài liệu này là về phần mềm nên từ đây trở đi ta sẽ dùng từ “phần mềm” thay vì “tác phẩm” mà không mất tính tổng quát. Khi một người vừa sáng tạo ra một tác phẩm thì tự động bản quyền tác phẩm thuộc về (duy nhất) người sáng tạo. Người sáng tạo thậm chí không cần đăng kí bản quyền với một tổ chức nào. Tuy không phải đăng ký nhưng một số quốc gia có luật bản quyền yêu cầu tác giải phải ghi dòng chú thích bản quyền vào tác phẩm của mình. Nếu bạn mở Help/About của một phần mềm thì sẽ gặp chú thích bản quyền của nó: • Copyright © , • All rights resevered Ký hiệu © là ký hiệu của bản quyền (chữ “c” trong vòng tròn là viết tắt của copyright). Bởi tất cả các quyền đều bị tác giả giữ, người nào muốn có quyền gì phải hỏi xin tác giả nên mới có câu “All right reserved” - “Tất cả các quyền đã được giữ lại”. Nhắc lại rằng dù không ghi chú thích bản quyền thì bản quyền vẫn thuộc về tác giả. Luật pháp sẽ bảo hộ bản quyền tức là luật pháp cấm việc sao chép, sửa đổi phần mềm khi chưa có sự đồng ý của người giữ bản quyền. Thời gian bản quyền có hiệu lực: kể từ khi phần mềm được công bố + 70 năm sau khi tác giả qua đời hoặc 90 năm cho công ty. Hết hạn trên tự động phần mềm trở thành public domain, không có ai giữ bản quyền. Bản quyền có thể được chuyển nhượng từ người này sang người khác; người giữ bản quyền phần mềm có thể không là người làm ra phần mềm. Người giữ bản quyền có quyền cấp phép cho những người khác quyền sử dụng, sao chép, sửa đổi tác phẩm của của mình. Nếu anh A đang giữ bản quyền phần mềm của mình làm ra mà nhượng lại bản quyền cho anh B thì lúc đó anh A muốn sử dụng phần mềm do mình làm ra cũng phải hỏi xin anh B cấp phép. (Chú ý phân biệt bản quyền phần mềm và các quyền với phần mềm). 12/145 – Tác quyền. Thuật ngữ “bản quyền” (copyright) thường được các quốc gia theo hệ thống luật án lệ kiểu Anh-Mỹ dùng, trong khi đó các nước châu Âu tham gia công ước Berne lại dùng thuật ngữ “tác quyền” (hay “quyền tác giả”) (author’s right). Tác quyền tập trung vào quyền lợi của tác giả (người sáng tác ra tác phẩm) trong khi đó bản quyền tập trung vào quyền lợi kinh tế của người giữ bản quyền (có thể không phải là tác giả). Sự khác nhau giữa 2 khái niệm này còn ở quyền nhân thân (moral rights) nhưng tài liệu này không đề cập đến. – Công ước Berne hay đầy đủ hơn là “Công ước Berne về bảo hộ các tác phẩm văn học và nghệ thuật” là công ước về tác quyền (chú ý “tác quyền” chứ không phải “bản quyền”) giữa các quốc gia. Trước đây các quốc gia thường từ chối tác quyền của các tác phẩm ngoại quốc, công ước Berne ra đời đảm bảo các quốc gia tham gia công ước Berne phải công nhận tác quyền này. Công ước Berne chủ yếu được các nước châu Âu tham gia và Việt Nam cũng đã tham gia công ước này từ năm 2004. Công ước Berne chỉ bảo hộ tác phẩm văn học và nghệ thuật, không bảo hộ phần mềm. Giới làm phần mềm không có việc gì với công ước Berne ! − Một phát biểu thừa thường thấy: “Tôi dùng windows có bản quyền” hay “vấn nạn sử dụng phần mềm không có bản quyền” Các phần mềm mà mọi người đã quen thuộc như Windows hay Linux, Office hay OpenOffice, Bitdefender hay Bkav bản basic (miễn phí), hiển nhiên đều là những phần mềm có bản quyền, không phải là public domain. Dù người dùng xài phần mềm crack hay không thì những phần mềm này luôn có bản quyền; chỉ có điều nếu dùng crack thì gọ là “vi phạm bản quyền”, nếu mua thì là sử dụng phần mềm đúng luật bản quyền. Không nên nói “Tôi đang dùng windows có bản quyền” vì phần mềm nào mà chả có bản quyền (trừ pulic domain). Thay vào đó hãy nói “Tôi đang dùng windows có mua quyền sử dụng”. Có người nói “Tôi đang dùng windows có mua bản quyền”, cách nói này tuy ngắn gọn hơn nhưng cũng không chính xác vì theo câu chữ (chứ không theo ý định của người nói) thì Micosoft đã nhượng lại bản quyền Windows cho tôi ?! Cũng không nên nói “vấn nạn sử dụng phần mềm không có bản quyền”. Phần mềm mà không có bản quyền thì là phần mềm public domain, ai cũng có quyền dùng, sửa đổi, bán lại, do đó chẳng có vấn đề gì cả. Ý của người nói là “vấn nạn sử dụng phần mềm vi phạm bản quyền”. Thương hiệu (trademark) Thương hiệu là một tài sản trí tuệ được luật sở hữu trí tuệ bảo hộ. Thương hiệu là một dấu hiệu đặc biệt như tên, biểu tượng để nhận biết sản phẩm, dịch vụ của một cá nhân hay tổ chức. Nôm na thì thương hiệu là cái tên được gắn cho một sản phẩm hoặc một nhà sản xuất. Thuật ngữ tiếng anh cho thương hiệu là trademark hoặc cũng có khi là brand name, logo. Để tránh trùng lặp thương hiệu thì mỗi quốc gia thường có Cơ quan Bảo hộ Thương hiệu làm nhiệm vụ quản lý thương hiệu. Một cá nhân hay tổ chức muốn thương hiệu của mình không bị người khác dùng lại thì nên đăng kí thương hiệu (có trả phí duy trì thương hiệu) với Cơ quan Bảo hộ Thương hiệu. Có thể không đăng kí thương hiệu nhưng khi xảy ra tranh chấp thương hiệu sẽ rất khó phân xử. Nếu muốn chỉ rõ trạng thái đăng kí của một thương hiệu (điều này có thể không cần thiết) thì thêm kí hiệu: - ® vào sau tên thương hiệu đã được đăng kí (chữ R viết tắt của registered) - TM hoặc SM vào sau tên thương hiệu của hàng hóa hoặc dịch vụ đã được dùng trong thực tế nhưng chưa đăng kí. (viết tắt: TM cho trademark, SM cho service mark) Việc đăng kí thương hiệu cho một sản phẩm chỉ đảm bảo thương hiệu đó không bị dùng lại chứ không đảm bảo cá nhân/tổ chức khác sản xuất sản phẩm tương tự nhưng với thương hiệu khác đi. Ví dụ: hãng AT&T có làm ra một hệ điều hành và đăng kí thương hiệu cho nó là UNIX. Có những tổ chức hoặc cá nhân khác làm ra những hệ điều hành có chức năng tương tự như UNIX nhưng vì thương hiệu UNIX đã được đăng kí nên không thể dùng tên UNIX được nữa. Tuy nhiên người ta vẫn muốn dùng một cái tên thể hiện sự tương tự với UNIX nên đã dùng tên “UNIX-like” hoặc cẩn thận hơn nữa 13/145 dùng tên “*nix” để chỉ những hệ điều hành có chức năng tương tự UNIX nhưng không phải do AT&T làm. 2. Phân loại phần mềm theo quyền của người sử dụng EULA và các quyền của người sử dụng Nhắc lại rằng theo luật sở hữu trí tuệ, với một phần mềm (dĩ nhiên không xét phần mềm public domain) thì người chủ sở hữu (có thể là tác giả hoặc công ty mà tác giả đã nhượng lại quyền sở hữu) giữ bản quyền tức là nắm giữ tất cả các quyền như là quyền sử dụng, quyền sao chép, quyền sửa đổi v.v ; mọi người khác không có những quyền này. Người giữ bản quyền thường: - Hoặc kinh doanh các quyền này, chả hạn như bán quyền sử dụng thông qua việc đặt CD key lên phần mềm, ai muốn sử dụng phần mềm thì phải mua CD key từ chủ sở hữu. Việc bán/mua phần mềm là bán/mua quyền sử dụng phần mềm chứ không phải bán/mua công sức làm phần mềm. - Hoặc “cho không” các quyền này cho người sử dụng do chủ sở hữu muốn muốn chia sẻ niềm đam mê làm phần mềm với người khác, muốn phục vụ cộng đồng, muốn nổi tiếng, v.v Danh sách các quyền được cấp và các ràng buộc kèm theo được ghi trong hợp đồng giữa người giữ bản quyền và người sử dụng, còn gọi là giấy phép sử dụng, thuật ngữ tiếng Anh là “Licence Agreement”. Giấy phép này có thể ở dạng giấy hoặc được hiển thị khi người dùng bắt đầu cài đặt phần mềm - ở dạng này được gọi là End user Licence Agreement (EULA). Người dùng phải bấm “accept” để chấp thuận các quyền và ràng buộc thì mới tiếp tục cài được phần mềm, điều này tương đương với việc kí vào bản hợp đồng giấy. Proprietary softwares hay FOSS Dựa vào phạm vi quyền của người sử dụng được chủ sở hữu cấp (ghi trong EULA), có thể chia phần mềm thành 2 loại: Proprietary softwares (phần mềm độc quyền): người giữ bản quyền đồng ý cho người dùng một số rất ít quyền và thu lợi từ việc cấp các quyền này. Thông thường người sử dụng chỉ được cấp mỗi quyền sử dụng và phải mua quyền này thông qua mua CD key/serial để cài. Để hạn chế việc nghiên cứu, sửa đổi phần mềm của người sử dụng thì mã nguồn của phần mềm độc quyền không được công bố. • EULA của phần mềm độc quyền thương mại (người dùng phải trả tiền) thường ghi: • Người dùng không được dịch ngược, sửa chữa phần mềm. • Người dùng không được sao chép phần mềm thành nhiều bản cài trên nhiều máy. Nếu người dùng mua phần mềm với số lượng n máy thì chỉ tối đa n máy được cài đặt và chạy phần mềm. (Ví dụ: nếu người dùng mua phần mềm với số lượng 1 máy mà cài cả trên máy tính ở văn phòng lẫn máy tính ở nhà thì tại một thời điểm chỉ có thể chạy phần mềm hoặc trên máy ở nhà hoặc trên máy ở văn phòng mà không đồng thời cả hai được). Người dùng có thể sao chép lại phần mềm thành một bản dự phòng để cài đặt lại khi phần mềm bị hỏng. • Người dùng có thể nhượng lại phần mềm cho người khác với điều kiện người được nhượng lại chấp thuận các điều khoản của EULA và chỉ được phép có 1 bản copy được dùng (tức là nếu nhượng lại thì người dùng ban đầu không được dùng nữa.) • Có 2 loại phần mềm độc quyền hay gặp là: • Freeware (phần mềm miễn phí): người dùng không phải trả tiền mua quyền sử dụng, quyền sử dụng được “cho không” tuy nhiên thường kèm theo giới hạn “for individual /educational use” (chỉ được cá nhân (chứ không phải tổ chức) dùng hoặc dùng với mục đích giáo dục) hoặc “non-commercial/non-profit use” (chỉ dùng với mục đích không sinh lời). 14/145 Richard Stallman (biệt danh RSM) là người khởi xướng phong trào phần mềm tự do. Ông đã: - đưa ra triết lý tự do cho phần mềm - phát động dự án GNU, thành lập tổ chức FSF - viết ra phần mềm Emacs và GCC - đưa ra giấy phép GPL (ảnh lấy từ • Shareware (phần mềm chia sẻ): người dùng được dùng thử miễn phí phần mềm trong thời gian chả hạn 30 ngày. Hết thời gian dùng thử phần mềm bị khóa lại muốn dùng tiếp phải mua quyền sử dụng qua việc mua số serial để mở khóa cho phần mềm chạy. Cũng có khi người dùng được quyền phát tán lại phần mềm shareware cho người khác dùng thử. Free/Open source software (FOSS) (phần mềm Tự do/Nguồn mở): Người giữ bản quyền cho phép người dùng đủ các quyền của mình như quyền sử dụng, sao chép, nghiên cứu, sửa đổi phần mềm. Để đảm bảo người sử dụng có thể nghiên cứu, sửa đổi phần mềm thì mã nguồn của các phần mềm loại này phải được công bố. Người ta đưa ra khoảng 30 mẫu EULA cho phần mềm loại này trong đó phổ biến nhất là GPL, BSD (sẽ nói ở phần sau). Disclaimer of warranty (chối bỏ bảo đảm) Dù phần mềm độc quyền hay tự do/nguồn mở thì trong EULA, người giữ bản quyền luôn tuyên bố là sẽ không chịu trách nhiệm về các thiệt hại do phần mềm gây ra và người sử dụng phải chịu mọi rủi ro của phần mềm. Ví dụ EULA của một phần mềm WinRAR ghi: “WinRAR archiver is distributed "as is". No warranty of any kind is expressed or implied. You use at your own risk. Neither the author nor the agents of the author will be liable for data loss, damages, loss of profits or any other kind of loss while using or misusing this software.” (“as is” như những gì hiện có) 3. Free/Open source softwares (FOSS) a. Định nghĩa Free/Open source softwares Bên cạnh phần mềm độc quyền hạn chế quyền của người dùng, còn có loại phần mềm cho người sử dụng các quyền của tác giả (dĩ nhiên tác giả vẫn giữ bản quyền). Với những phần mềm này, người sử dụng không phải trả mất tiền mua quyền mà vẫn có quyền sử dụng, phân phối lại, nghiên cứu, sửa đổi và phân phối lại phần mềm phái sinh (phần mềm sửa đổi). Các phần mềm này khi phát hành luôn kèm mã nguồn hoặc chỉ dẫn đến nơi có thể download mã nguồn để đảm bảo người dùng có thể nghiên cứu, sửa đổi. Có 2 tên gọi và tiêu chí được sử dụng rộng rãi cho loại phần mềm này đó là: free softwares và open source softwares. Free software Richard Stallman đưa ra thuật ngữ “free software” (phần mềm tự do) với tiêu chí: một phần mềm là “phần mềm tự do” nếu người dùng có 4 quyền tự do cơ bản: o Tự do chạy chương trình (0) o Tự do nghiên cứu và sửa đổi chương trình (1) o Tự do phân phối lại bản sao của chương trình (2) o Tự do cải tiến và phân phối lại cải tiến của chương trình (3) Tự do (1), (3) đòi hỏi mã nguồn của chương trình phải được công bố. Triết lý của Richard Stallman ở đây là “tự do” (chứ không phải miễn phí): người dùng được thoải mái sử dụng, nghiên cứu mã nguồn, sửa đổi, phân phối lại phần mềm gốc và phần mềm sửa đổi mà không bị ràng buộc phải hỏi xin hoặc trả tiền mua những quyền này từ tác giả. Để người dùng có 4 quyền tự do trên thì trong bản EULA của phần mềm, người giữ bản quyền phải tuyên bố cho người dùng những quyền này. 15/145 Chữ “free” trong free softwares có nghĩa là “tự do” (không bị ràng buộc) như trong “tự do ngôn luận” (free speech) chứ không có nghĩa “miễn phí” (giá tiền bằng 0) như trong “bia miễn phí” (free beer). Trên thực tế một người bất kì (dù người nói tiếng Anh bản xứ hay người nước ngoài) khi lần đầu gặp từ “free softwares” thì luôn luôn nghĩ rằng “free” là “miễn phí” do đó vô tình đánh đồng “free software” với “freeware” (phần mềm miễn phí). Cần hiểu rằng freeware (phần mềm miễn phí) là một thuật ngữ chỉ một loại phần mềm đặc thù khác hoàn toàn với free software. – Freeware là phần mềm độc quyền, chỉ cho người dùng mỗi quyền sử dụng và người dùng không phải mua quyền này (do đó mới nói là miễn phí), các quyền khác là sửa đổi, phân phối lại thường không được cấp trong khi đó Free softwares thì cho người dùng hết các quyền trên. – Mã nguồn freeware thường không được công bố trong khi mã nguồn của free software luôn được công bố. Để thực hành triết lý tự do cho phần mềm, năm 1983, Richard Stallman đã phát động phong trào làm phần mềm tự do (free software movement) bằng cách kêu gọi mọi người tham gia dự án làm một hệ điều hành GNU có chức năng tương tự như UNIX nhưng với điều khoản “tự do” để thay thế cho hệ điều hành UNIX độc quyền bấy giờ. Ông cũng thành lập tổ chức Free Software Foundation để quản lý dự án và tuyên truyền triết lý tự do. Dự án đã sản sinh ra rất nhiều phần mềm tự do cho cộng đồng, trong đó chính Richard Stallman đã viết ra phần mềm xử lý văn bản Emacs, và đặc biệt trình biên dịch GCC mà tất cả các lập trình viên phần mềm tự do sau này dùng. Dự án không hoàn thành nhưng các phần mềm viết cho GNU có thể kết hợp với nhân Linux thành một hệ điều hành hoàn chỉnh mà sau này phát triển hẳn thành ngành công nghiệp Linux. Năm 1990, Richard Stallman cũng làm ra giấy phép phần mềm tự do GPL mà hầu hêt các phần mềm GNU, bản thân nhân Linux, cũng như vô vàn phần mềm sau này dùng. Open source software Đến năm 1998, phong trào phần mềm tự do bắt đầu bị chia tách, tất cả cũng chỉ tại cái tên “’free softwares”. Thứ nhất, chữ “free” trong tên gọi dễ gây hiểu nhầm là “miễn phí” hơn là “tự do”. Thứ hai, theo triết lý “tự do” của mình, Richard Stallman chỉ trích cay nghiệt các công ty làm phần mềm độc quyền là đã tước đoạt quyền tự do của người dùng, điều này gây ra sự căng thẳng giữa phong trào phần mềm tự do và các công ty phần mềm. Với niềm tin rằng cần thiết phải lôi kéo các công ty vào việc phát triển phần mềm tự do hơn là đối lập với họ, Eric S. Raymond, Bruce Perens, Linus Torvald và một số người khác đã họp bàn để chọn một cái tên khác thay thế cho tên “free softwares” và cái tên “open source softwares” đã được chọn. Theo Eric S. Raymond, cái tên này có ý nghĩa tiếp thị cho phần mềm tự do, vốn chỉ được biết đến và sử dụng bởi một thiểu số những hacker/những người say mê lập trình, đến với thị trường phần mềm. Bruce Perens cũng không dùng triêt lý tự do cũ nữa mà viết ra định nghĩa mới cho open source software, gọi là Open Source Definition (OSD) gồm 10 tiêu chí như ở dưới đây. Eric S. Raymond và Bruce Perens cũng thành lập tổ chức Open Source Initiatives để ủng hộ cho xu hướng mới này. Năm 1997 Eric S. Raymond đã xuất bản cuốn sách “The Cathedral and the Bazaar” (nhà thờ và cửa hàng tạp hóa) trong đó chỉ ra mô hình phát triển phần mềm Open source mới hiệu quả. Chịu ảnh hưởng từ cuốn sách này công ty Netscape đã công bố mã nguồn phần mềm trình duyệt web Netscape của mình với hi vọng mô hình phát triển mới sẽ giúp Netscape giành thêm được thị phần trong chiến với IE của Microsoft. Sự kiện này đánh dấu thời đại mới của phần mềm nguồn mở khi các công ty bắt đầu tham gia. Eric S. Raymond trở thành phát ngôn viên của phong trào nguồn mở. Eric S. Raymond (biệt danh ESR), người viết cuốn “The Cathedral and the Bazaar” đã có ảnh hưởng lớn đến phong trào “Open source softwares” và cũng là đồng sáng lập OSI. Ảnh lấy từ: 16/145 Nội dung của Open Source Definition (OSD): một phần mềm là open source softwares nếu như giấy phép sử dụng (EULA) của nó thỏa mãn 10 tiêu chí - xem nguyên văn tại dưới đây là tóm tắt: 1. Free Redistribution (tự do phân phối lại): Giấy phép phải cho phép người dùng phân phối lại phần mềm dù việc phân phối này thu phí hay miễn phí. 2. Source Code (mã nguồn): Phần mềm (ở dạng binary form) phải kèm theo mã nguồn hoặc mã nguồn phải được công bố sao cho người dùng có thể dễ dàng lấy về và sửa đổi được. 3. Derived Works (phần mềm phái sinh): Giấy phép phải cho người dùng quyền sửa đổi phần mềm và phân phối lại phần mềm phái sinh. 4. Integrity of The Author's Source Code (tính toàn vẹn của mã nguồn của tác giả phần mềm): Người dùng được phép sửa đổi mã nguồn và công bố lại mã nguồn phái sinh nhưng cần chỉ rõ ra đấy không phải là mã nguồn của phần mềm ban đầu để không ảnh hưởng tới danh tiêng của tác giả phòng trường hợp mã nguồn phái sinh có chất lượng tồi. Để phân biệt thì có thể dùng tên hoặc phiên bản khác đi so với phần mềm ban đầu. 5. No Discrimination Against Persons or Groups (không phân biệt đối tượng sử dụng): Giấy phép không được ràng buộc người sử dụng chỉ là cá nhân hay chỉ là tổ chức hoặc bất cứ một nhóm người cụ thể nào. 6. No Discrimination Against Fields of Endeavor (không phân biệt lĩnh vực sử dụng): Giấy phép không được ràng buộc phần mềm chỉ được dùng trong lĩnh vực kinh doanh hoặc chỉ được dùng trong nghiên cứu/giáo dục hoặc bất cứ một lĩnh vực cụ thể nào. 7. Distribution of License (sự phân phối giấy phép): Khi cá nhân/tổ chức A nhận được phần mềm từ tay cá nhân/tổ chức X thì tất cả các quyền trong giấy phép được tự động cấp cho A; A không cần phải kí thêm một giấy phép gì với X nếu chỉ để có các quyền này. 8. License Must Not Be Specific to a Product (giấy phép không được định hướng việc sử dụng tới một ngữ cảnh nào đặc biệt): Giấy phép này không được giới hạn phần mềm chỉ được sử dụng khi nó đi kèm với một phần mềm cụ thể nào. 9. License Must Not Restrict Other Software (giấy phép không được đặt ràng buộc lên các phần mềm khác): Giấy phép không được đặt ràng buộc lên các phần mềm khác được phân phối cùng với phần mềm chẳng hạn như không được yêu cầu các phần mềm đi cùng cũng phải là phần mềm nguồn mở 10. License Must Be Technology-Neutral (giấy phép phải trung lập về mặt công nghệ): giấy phép phải cho phần mềm được phân phối dưới bất kì phương tiện gì như CD, FTP Về việc dễ gây hiểu nhầm thì cái tên “open source” cũng chẳng khá hơn cái tên “free software”, tuy nó tránh được “vỏ dưa” là chữ “free” (miễn phí/tự do ?) nhưng nó lại gặp “vỏ dừa” là trước khi OSI ra đời, người ta đã quen dùng cái tên “open source” rồi. Khi một người dân nghe thấy phương tiện truyền thông nhắc đến open source softwares (phần mềm nguồn mở), họ chỉ đơn giản nghĩ ngay rằng: “open source softwares” là phần mềm có mã nguồn được công bố (ai cũng có thể xem được mã nguồn) chứ không hề biết đến định nghĩa 10 điều khoản của tổ chức OSI. Cách suy nghĩ giản đơn này không xét đến việc khi công bố mã nguồn thì người dùng mã nguồn đó có quyền gì, chả hạn liệu có thể cải tiến mã nguồn đó rồi công bố lại cải tiến được không ? Chính vì việc cái tên Open source softwares vốn là thuật ngữ riêng của OSI bị trùng vào danh từ chung của mọi người nên câu đầu tiên trong bản định nghĩa 10 tiêu chí, OSI phải nói ngay là “Open source doesn't just mean access to the source code”. Tóm lại định nghĩa Open source softwares là không tương đương với “phần mềm có mã nguồn được công bố”. Khi người ta bàn về phần mềm nguồn mở là muốn nhắc đến định nghĩa 10 tiêu chí kia chứ không phải cách hiểu thiếu chặt chẽ thường ngày. Bruce Peren, người viết ra Open Source Definition (OSD) Ảnh lấy từ trang web cá nhân của Bruce Peren: 17/145 Free softwares vs Open source Nhìn lại lịch sử, cộng đồng phần mềm tự do được hình thành bắt đầu từ năm 1983 qua dự án xây dựng hệ điều hành GNU, đến năm 1998 khi thuật ngữ “open source softwares” ra đời thì cộng đồng này bị tách thành 2 xu hướng: free softwares và open source softwares - “Free softwares”: những người của phong trào này, đứng đầu là tổ chức Free Softwares Foundation, tiếp tục đề cao triết lý “tự do”, nỗ lực vận động để “quyền” của người sử dụng (tự do chạy, sao chép) và của lập trình viên (tự do sửa đổi và phân phối lại sửa đổi) khỏi bị phần mềm và các công ty phần mềm độc quyền tước đoạt. Có rất nhiều EULA phần mềm thỏa mãn triết lý tự do, trong số đó, những người này ủng hộ nhất là giấy phép GPL do chính FSF đưa ra. Đây là giấy phép phần mềm tự do yêu cầu mọi phần mềm phái sinh từ nó cũng phải là phần mềm tự do. Nhìn chung các công ty rất sợ giấy phép GPL và ác cảm với cái tên “free softwares”, còn giới truyền thông thì vẫn hay nhầm free softwares thành freeware. - “Open source softwares”: phong trào này được tách ra từ free softwares với mục đích phát triển free softwares thành thành một xu hướng trong nền công nghiệp phần mềm chứ không chỉ bó hẹp là của riêng những người say mê lập trình/hackers. Tổ chức OSI đứng đằng sau phong trào này, mục đích của nó là thu hút được nhiều công ty tham gia phong trào. Khi một công ty nào đó muốn công bố mã nguồn nhưng không muốn đặt dưới giấy phép GPL, nó có thể tự đưa ra giấy phép của mình và đến để OSI chứng nhận thỏa mãn điều kiện Open source. Ngày nay các công ty phần mềm độc quyền khổng lồ đều đã tham gia phát triển phần mềm open source. Ví dụ Microsoft có hẳn trung tâm Open Source, nó cũng đưa ra giấy phép riêng của mình là Microsoft Public License và đã được OSI chứng nhận là phần mềm nguồn mở. Mô hình phát triển phần mềm của phong trào được phân tích trong cuốn “The cathedral and Bazaar” của Eric S. Raymond. Nhìn chung người ta thường ví “free softwares” là mục tiêu còn “open source” là phương tiện. Tuy triết lý 2 xu hướng khác nhau nhưng điều khoản của 2 định nghĩa “free softwares” và “open source softwares” là gần tương đương nhau; cả OSI và Richard Stallman đều công nhận điều này. Hầu như một EULA nào được tổ chức Free Softwares Foundation chứng nhận là thỏa mãn free softwares thì cũng được OSI xác nhận là thỏa mãn Open Source Definition và ngược lại thế nên trong thực tế việc phân biệt 2 định nghĩa này không còn quan trọng nữa. Để tránh một sự thiên vị nào người ta đã đưa ra cái tên Free and Open Source (FOSS hoặc F/OSS) hoặc Open Source and Free Softwares (OSS/FS) thậm chí Free/Libre/Open Source (FLOSS) để chỉ những phần mềm của cả 2 phong trào này. Cái tên Free and Open Source Softwares đã được dùng rất phổ biến hiện nay. Thuật ngữ đối ngược với FOSS là proprietary softwares hoặc closed source softwares. b. FOSS và chuyện “miễn phí” FOSS thì miễn phí ? Nếu bạn nghĩ “FOSS thì miễn phí”, điều này đúng nhưng cần lưu ý thêm mấy điểm tinh tế sau: Cách mà FOSS “miễn phí” khác với cách mà một phần mềm độc quyền “miễn phí”. Mục đích của FOSS là cấp quyền cho người dùng khác với mục đích của phần mềm độc quyền là giá tiền. Chúng ta đã quen thuộc với việc công ty bán và chúng ta mua phần mềm độc quyền; việc bán hay mua ở đây thực chất là bán hay mua quyền sử dụng phần mềm. Khi chúng ta gặp loại phần mềm độc quyền có giá tiền bằng không mà thuật ngữ cho nó là freeware – phần mềm miễn phí thì tức là các công ty đã tặng không quyền sử dụng cho người dùng. Tuy nhiên các quyền khác như quyền sao chép, nghiên Biểu tượng của Open Source Initiative – tổ chức ủng hộ Open source software Biểu tượng của Free Software Foundation – tổ chức ủng hộ “free software” 18/145 cứu và sửa đổi mã nguồn thì thường người dùng không được cấp và cũng không thể mua được. Với FOSS thì người dùng được cấp quyền sử dụng, sao chép, nghiên cứu và sửa đổi mã nguồn, phân phối lại phần mềm sửa đổi mà không phải trả khoản phí nào. Nếu bạn lý sự rằng: “Tôi không phải là lập trình viên, tôi không quan tâm đến mã nguồn, tôi chỉ muốn dùng phần mềm mà không phải trả tiền. Đều được sử dụng miễn phí nên tôi thấy freeware hay FOSS đều như nhau cả”. Không hẳn, có những phần mềm freeware đặt giới hạn bạn chỉ được dùng phần mềm cho mục đích cá nhân và không được phân phối lại. Khi đó nếu bạn là giám đốc của một công ty bạn chỉ có thể cài đặt phần mềm cho laptop của bạn mà không thể sao chép ra cho tất cả các máy tính ở của công ty để nhân viên dùng. Phần mềm FOSS thì ngược lại, bạn có thể sao chép ra bao nhiêu tùy ý, được sử dụng thoải mái mà không bị hạn hẹp chỉ dùng cho cá nhân hay chỉ được dùng trong trường học. Một lưu ý nữa là tuy “FOSS thì miễn phí” nhưng không được đánh đồng “FOSS là freewares (phần mềm miễn phí)”. Freewares là một loại phần mềm độc quyền hoàn toàn đối nghĩa với FOSS. Có thể bạn vẫn phải trả phí để có được phần mềm FOSS hoặc có thể bạn sẽ thấy với cùng một phần mềm FOSS, chỗ thì người ta cho không, chỗ thì người ta rao “bán” với giá đắt. FOSS không có ràng buộc gì về việc phân phối lại bản sao. Việc phân phối lại phần mềm bằng cách in ra CD, cung cấp đường truyền Internet để download, nhìn chung là tốn kém. Một lập trình viên có thể hào phóng cho bạn quyền sử dụng, sao chép, sửa đổi phần mềm của anh ta nhưng bước đầu tiên anh ta phải làm là phân phối phần mềm đó đến tay bạn đã rồi thì sau đó bạn mới sử dụng, sửa đổi mà việc phân phối này thì tốn kém. Do đó không có gì là mâu thuẫn với tinh thần hào hiệp của người lập trình viên khi anh ta thu phí cho việc phân phối phần mềm. Cần hiểu ở đây anh ta tính phí đĩa CD, đường truyền Internet để download phần mềm chứ không phải là bán quyền sử dụng phần mềm. Định nghĩa Open source của Bruce Peren cũng ghi rõ trong tiêu chí 1 là giấy phép của phần mêm Open source thì không được ràng buộc việc phân phối lại phần mềm là phải tính phí hay không tính phí. Định nghĩa free softwares của Richar Stallman cũng không hề có ràng buộc gì về giá tiền của việc phân phối phần mềm. Đến đây bạn có thể lý sự rằng: “Anh bán cho tôi một CD phần mềm FOSS và bảo số tiền tôi phải bỏ ra là tiền của đĩa CD chứ không phải tiền mua quyền sử dụng phần mềm. Nhưng tôi thấy có khác gì đâu vì đằng nào tôi cũng phải mất tiền mua. Mà mua xong đĩa CD đó tôi cũng chỉ có biết chạy phần mềm chứ tôi đâu quan tâm đến việc đọc và sửa mã nguồn phần mềm, nên với cách sử dụng của tôi thì FOSS cũng bằng độc quyền, vẫn mất phí”. Một phần mềm FOSS với phí phân phối cao là khác với một phần mềm độc quyền giá cao. Vấn đề ở đây là khi ai đó có được phần mềm FOSS trong tay thì người ấy có thể sao chép cho người khác tùy ý với thu phí hay không thu phí. Điều này có nghĩa là bạn có thể tìm được cách để không mất phí mà vẫn có phần mềm FOSS. Chả hạn nếu người hàng xóm của bạn phải mất tiền để có được đĩa CD phần mềm FOSS, bạn hoàn toàn có quyền sao chép lại CD đó về dùng. Tuy nhiên với phần mềm độc quyền thì đây là hành vi phạm pháp, nếu bạn bỏ tiền ra mua 1 bản sao của phần mềm thì phần mềm đó chỉ được phép cài trên đúng 1 máy mà không thể sao ra để cài trên 2 máy. Hệ quả quan trọng của việc tự do phân phối lại FOSS là người lập trình phần mềm FOSS khi lần đầu tiên phân phối phần mềm FOSS nếu có tính phí phân phối rất cao thì cũng không cản trở việc nhiều người dùng phần mềm đó. Lý do là chỉ cần có người có được 1 bản sao của phần mềm đó thì ngay lập tức có thể phân phối lại phần mềm đó mà không đòi hỏi phí. Có thể bạn sẽ gặp tình huống: cùng một phần mềm FOSS chỗ thì “bán” đĩa CD rất đắt, chỗ thì tặng không. FOSS thương mại ? Những gì có tính “thương mại” (commercial) là những gì có thể kiếm lời được từ nó. Commercial softwares (phần mềm thương mại) là phần mềm mà người ta có thể hốt bạc nhờ nó, ví dụ như Windows, Photoshop, Norton Antivirus, Cũng chỉ tại hiểu giản đơn “FOSS thì miễn phí” mà nhiều người cho rằng “không thể thương mại hóa FOSS được” hoặc cho rằng “FOSS là loại phần mềm đối ngược với phần mềm thương mại”. Thực sự phần lớn các phần mềm FOSS là phần mềm thương mại ! Vâng, phần lớn chứ không phải một vài. 19/145 Ví dụ cho việc kinh doanh FOSS chính là việc phân phối lại phần mềm FOSS bằng cách bán đĩa CD hoặc cung cấp đường truyền Internet để download như đã nói ở trên. Đây chỉ là một hình thức kinh doanh đơn giản nhất của FOSS, các hình thức cao cấp khác có thể xem ở mục “Mô hình kinh doanh với FOSS”. Nhắc lại rằng từ trái nghĩa với FOSS là “proprietary softwares” (phần mềm độc quyền), chứ không phải là commercial softwares. Cả phần mềm độc quyền lẫn FOSS đều có thể là phần mềm thương mại. c. Các mẫu giấy phép FOSS Cho đến nay người ta đưa ra rất nhiều mẫu EULA cho phần mềm FOSS trong đó chỉ có khoảng 30 mẫu là phổ biến. Người ta thường khuyên: khi một người làm phần mềm FOSS thì nên lựa chọn 1 trong hàng tá mẫu EULA có sẵn kia làm EULA cho phần mềm của mình hơn là tự soạn ra một bản EULA của riêng mình. Lý do: các mẫu EULA có sẵn đã trải qua một quá trình phát triển được cộng đồng kiểm định và hiểu kĩ lưỡng, còn khi ai đó tạo ra một bản EULA của riêng mình thì có thể nó không chặt chẽ, khó hiểu thậm chí tự mâu thuẫn với định nghĩa FOSS. Các mẫu EULA, mà từ đây ta gọi là giấy phép sử dụng, phổ biến nhất hiện nay (theo thứ tự giảm dần của thị phần sử dụng năm 2010): • (63%) GPL licence (copyleft) gồm strong GPL và Lesser GPL của Free Sosftware Foundation • (9%) Artistic licence (Perl) của Larry Wall • (6%) BSD licence (copycenter) của đại học Berkeley • (5%) MIT (X) licence của đại học MIT • (4%) Apache Software licence của Apache Software Foundation Thống kê chi tiết xem bảng xếp hạng của Black Duck Open Source Resource Center năm 2010 Rank License % 1 GNU General Public License (GPL) 63.07% + GNU General Public License (GPL) 2.0 47.22% + GNU Lesser General Public License (LGPL) 2.1 8.98% + GNU General Public License (GPL) 3.0 6.39% + GNU Lesser General Public License (LGPL) 3.0 0.48% 2. Artistic License (Perl) 8.96% 3. BSD License 2.0 6.23% 4. MIT License 5.15% 5. Apache License 2.0 4.36% 6. Code Project Open 1.02 License 2.87% 7. Microsoft Public License (Ms-PL) 1.66% 8. Mozilla Public License (MPL) 1.46% + Mozilla Public License (MPL) 1.0 0.25% + Mozilla Public License (MPL) 1.1 1.21% 9. Common Public License (CPL) 0.52% 10. Eclipse Public License (EPL) 0.51% 11. zlib/libpng License 0.41% 12. Academic Free License 0.39% 13. Common Development and Distribution License (CDDL) 0.33% 14. Open Software License (OSL) 0.29% 15. Ruby License 0.23% 16. PHP License Version 3.0 0.23% Bảng xếp hạng thị phần sử dụng các EULA năm 2010 của Black Duck Open Source Resource Center 20/145 • Do Free software và Open source software là gần tương đương nhau nên các giấy phép nếu thỏa mãn định nghĩa này thường thỏa mãn cả định nghĩa kia. • Các giấy phép FOSS thường luôn có các các điều khoản sau: i. Copyright //Xác định rõ người giữ bản quyền phần mềm. ii. Cho phép người dùng: sử dụng, phân phối lại bản sao, đọc mã nguồn, sửa mã nguồn, phân phối lại phần mềm phái sinh (phần mềm sửa đổi từ phần mềm gốc) mà không phải trả khoản phí nào cho người giữ bản quyền iii. Ràng buộc người dùng khi phân phối lại phần mềm: o nếu phân phối lại phần mềm (mà không có sửa đổi) thì phải kèm theo giấy phép này. o nếu phân phối lại phần mềm phái sinh thì trong giấy phép của phần mềm phái sinh phải ghi rõ: người giữ bản quyền phần mềm gốc, disclaimer of warranties (mục iv), và ràng buộc này (*) iv. Disclaimer of warranties (chối bỏ trách nhiệm về các thiệt hại do phần mềm gây ra) (*): yêu cầu ghi lại “ràng buộc này” trong giấy phép để một cách đệ quy bắt các phần mềm phái sinh tiếp theo cũng phải nêu lại chú thích bản quyền, disclaimer of warranties. Nếu không có yêu cầu này thì xảy ra tình huống: phần mềm gốc A yêu cầu ghi chú thích bản quyền trong phần mềm phái sinh, phần mềm phái sinh A1 của A tuân theo nên ghi chú thích bản quyền phần mềm gốc A nhưng không bắt phần mềm phái sinh tiếp theo A2 ghi chú thích bản quyền. Lúc đó phần mềm phái sinh A2 không cần phải ghi chú thích bản quyền phần mềm gốc A nữa. • Trong định nghĩa FOSS không có qui định chặt chẽ về phần mềm phái sinh. Các giấy phép FOSS khác nhau chủ yếu ở ràng buộc với phần mềm phái sinh (ngoài điểm chung là bắt phải ghi chú người giữ bản quyền phần mềm gốc, disclaimer of warranties). Có thể chia làm các giấy phép FOSS làm 3 loại: • Kiểu gần với public domain: BSD, MIT, Apache ràng buộc với phần mềm phái sinh là rất lỏng lẻo. • Copyleft: GPL - phmềm phái sinh phải đặt dưới cùng giấy phép phần mềm gốc, không được liên kết với phần mềm độc quyền. • Weak copyleft: LGPL, Artistics Licence (Perl) - phmềm phái sinh phải đặt dưới cùng giấy phép phần mềm gốc, được phép liên kết với phần mềm độc quyền. 4. Các giấy phép FOSS kiểu public domain: BSD, MIT, Apache Các giấy phép như BSD, MIT X11, Apache ngoài ràng buộc chối bỏ bảo đảm và yêu cầu ghi chú thích người giữ bản quyền phần mềm gốc khi phát hành lại, thì trao hết các quyền của tác giả cho người sử dụng. Người sử dụng có các quyền như với phần mềm public domain (thế nên gọi là giấy phép kiểu public domain), trong đó có thể bán lại phần mềm, kết hợp phần mềm với phần mềm khác tạo thành phần mềm độc quyền. Điều khoản các giấy phép này rất dễ dãi nên các giấy phép này còn được gọi là “permissive free software licence” (tính từ “permissive” nghĩa là: có xu hướng cho phép, dễ dãi thoải mái) BSD (copycenter) Giấy phép này do đại học Berkeley lần đầu đưa ra kèm theo hệ điều hành BSD (Berkeley Software Distribution). Ban đầu nó gồm 4 điều khoản (vì thế còn gọi là 4-clause BSD) trong đó có điều khoản về quảng cáo vốn gây ra sự bất tiện trong thực tế nên đã bị bỏ đi và ngày nay người ta thường dùng giấy phép BSD 3 điều khoản (còn gọi là BSD 2.0 hay 3 clause BSD) như dưới đây Copyright (c) , All rights reserved. 21/145 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Giấy phép BSD chỉ với 2 điều khoản (1), (2) được gọi là giấy phép FreeBSD (hoặc 2 clause BSD) nó được dùng cho hệ điều hành FreeBSD, NetBSD, OpenBSD, Darwin. Hai điều khoản (1), (2) nói rõ người dùng được phép sử dụng và phân phối lại phần mềm ở dạng source code và binary dù chưa hay đã sửa đổi với điều kiện phải kèm theo: ghi chú bản quyền phần mềm, “điều khoản này” và chối bỏ đảm bảo (phần chữ in hoa). Ràng buộc ghi lại “điều khoản này” nhằm một cách đệ quy bắt các phần mềm phái sinh sau này luôn ghi chú bản quyền phần mềm gốc và chối bỏ bảo đảm. Ở điều khoản (3), ở đây là organization của , có thể coi = . Điều khoản (3) yêu cầu không được dùng tên của tác giả phần mềm gốc để quảng cáo/xác nhận chất lượng cho phần mềm phái sinh khi tác giả phần mềm gốc chưa cho phép. Điều này đảm bảo danh tiếng của tác giả phần mềm gốc không bị bôi nhọ khi phần mềm phái sinh có chất lượng tồi. Ngoài 3 điều khoản trên, giấy phép BSD không có ràng buộc gì thêm với phần mềm phái sinh nên người sử dụng có thể biến phần mềm phái sinh thành phần mềm độc quyền và bán lại cho người khác hoặc sử dụng phần mềm BSD như một thành phần trong phần mềm độc quyền khác (miễn là có ghi chú bản quyền phần mềm BSD ban đầu). Ví dụ điển hình là một số đoạn mã về networking của hệ điều hành BSD (giấy phép BSD) được sử dụng trong một số sản phẩm độc quyền của Microsoft, hoặc rất nhiều thành phần của hệ điều hành FreeBSD được sử dụng trong hệ điều hành MAC OS X. Người dùng không bị bắt buộc phải công bố lại mã nguồn của phần mềm phái sinh. Các công ty làm phần mềm độc quyền thường thích giấy phép này. Giấy phép BSD còn được gọi là copycenter để chơi chữ với copyright, copyleft (GPL). Từ copycenter ngụ ý “bạn có thể đem phần mềm đến một trung tâm sao chép để tạo ra bao nhiêu bản copy tùy ý” tuy nhiên hầu như mọi phần giấy phép FOSS đều có mục đích này. MIT licence Giấy phép này do đại học MIT lần đầu đưa ra kèm theo phần mềm X Windows System, nó cũng còn được gọi là MIT X11. Điều khoản của nó tương đương với giấy phép BSD 2 điều khoản (1), (2) Copyright (c) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 22/145 - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. (chú ý: the “Software” = software + associcated documentation files) Giấy phép liệt kê cụ thể các quyền của người sử dụng: “use, copy, modify, merge” và “publish, distribute, sublicense, and/or sell” với 2 điều kiện (chỗ gạch đầu dòng): ghi lại chú thích bản quyền, “điều khoản này” và chối bỏ bảo đảm. Giấy phép này có nói tường minh rằng người dùng có thể “sell” – bán lại và “sublicense” - đặt phần mềm phái sinh dưới các giấy phép khác, Vì không có ràng buộc gì nên người dùng có thể đặt phần mềm phái sinh dưới giấy phép độc quyền. Các phần mềm nổi tiếng dùng giấy phép này là PuTTy, Expat, Rails, Lua. Apache Giấy phép này do tổ chức Apache Software Foundation (ASF) đưa ra, các phần mềm của ASF đều dùng giấy phép này, trong đó đáng chú ý nhất là phần mềm web server Apache. Ngoài ra có đến 25% của 100.000 dự án đặt trên Google Code là đang sử dụng giấy phép Apache (theo một blog của Google). Giấy phép Apache ver 2.0 đang được dùng hiện nay rất dài, tới 4 trang với 1400 từ trong khi BSD chỉ có khoảng hơn 200 từ. Giấy phép Apache quy định rất tỉ mỉ các quyền được cấp và không được cấp nhưng tựu trung lại nó tương đương với giấy phép BSD cộng thêm với điều kiện cho trường hợp phần mềm có bằng sáng chế. 5. Các giấy phép FOSS kiểu weak copyleft: LGPL và Perl (chưa viết) 6. Giấy phép (strong) copyleft: GPL (chưa xong) Khi có một sáng tạo thì chủ thể sáng tạo giữ bản quyền của sáng tạo đó; sửa đổi một phần mềm để tạo ra phần mềm phái sinh là một sáng tạo nên người tạo ra phần mềm phái sinh sẽ tự động giữ bản quyền của phần mềm phái sinh. Các giấy phép kiểu public domain (hay permissive free software license) như BSD, MIT X11, Apache, không có ràng buộc chặt chẽ với phần mềm phái sinh nên phần mềm phái sinh thường bị biến thành phần mềm độc quyền, tác giả phần mềm phái sinh ngăn không cho người dùng tiếp tục nghiên cứu, phát triển phần mềm phái sinh và thường bắt người dùng mua quyền sử dụng. Richarch Stallman gặp phải một tình huống “trớ trêu”: ông làm ra phần mềm A và cho quyền người khác phát triển tiếp thành phần mềm A1, một ngày kia ông muốn tự mình phát triển tiếp A1 thành A2 nhưng tác giả A1, với tư cách là người giữ bản quyền A1, đã ngăn không cho ông quyền làm điều này. Chính điều này đã thôi thúc Richard Stallman làm ra giấy phép GPL để đảm bảo tác giả phần mềm phái sinh phải tiếp tục cấp cho người dùng các quyền sử dụng, nghiên cứu, cải tiến phần mềm phái sinh. Ý tưởng của giấy phép GPL: - Phần mềm đặt dưới GPL phải là phần mềm Tự do (theo định nghĩa của Stallman) tức là người dùng có 4 quyền tự do: sử dụng, phân phối lại, nghiên cứu, sửa đổi và phân phối lại sửa đổi. - Phần mềm phái sinh từ phần mềm GPL cũng phải đặt dưới giấy phép GPL tức là phần mềm phái sinh cũng là phần mềm Tự do và như vậy người dùng lại tiếp tục có quyền sử dụng, phân

Các file đính kèm theo tài liệu này:

  • pdfgiao_trinh_nhap_mon_quan_tri_he_thong_linux_7501_2121085.pdf
Tài liệu liên quan