Bài giảng Mã nguồn mở - Bài 1: Tổng quan về mã nguồn mở gồm 4 nội dung khái niệm phần mềm mã nguồn mở; các học thuyết về phần mềm mã nguồn mở; các loại giấy phép về phần mềm mã nguồn mở; phần mềm dịch vụ miễn phí.
Trang 1MÃ NGUỒN MỞ
Giảng viên: ThS Phan Thanh Toàn
Trang 2BÀI 1
TỔNG QUAN VỀ MÃ NGUỒN MỞ
Giảng viên: ThS Phan Thanh Toàn
Trang 4CÁC KIẾN THỨC CẦN CÓ
Để hiểu rõ bài này, yêu cầu sinh viên cần có các
kiến thức cơ bản liên quan đến các môn học sau:
• Công nghệ phần mềm;
• Nguyên lí hệ điều hành
Trang 5• Thực hành trực tiếp trên hệ điều hành Linux và
một số phần mềm mã nguồn mở như Open
office, PHP
• Làm bài tập và luyện thi trắc nghiệm theo yêu
cầu từng bài
Trang 6CẤU TRÚC NỘI DUNG
Trang 71.1 KHÁI NIỆM PHẦN MỀM MÃ NGUỒN MỞ
1.1.1 Phần mềm
miễn phí
1.1.2 Phần mềm mã
nguồn mở
Trang 81.1.1 PHẦN MỀM MIỄN PHÍ
Khái niệm phần mềm
• Phần mềm là chương trình chạy trên máy tính;
• Phần mềm được phát triển dựa trên ngôn ngữ lập trình;
• Chương trình là tập các lệnh theo một ngôn ngữ lập trình;
• Tập lệnh của chương trình được gọi là mã nguồn (Source code);
• Source code được dịch thành mã máy
Trang 91.1.1 PHẦN MỀM MIỄN PHÍ (tiếp theo)
Cơ sở về phần mềm
• Để sử dụng phần mềm người sử dụng không cần có mã nguồn
• Thay đổi chương trình thông thường yêu cầu quyền sở hữu và sự cho phép để thayđổi mã nguồn
• Bất kì ai kiểm soát mã nguồn hợp pháp thì có thể thay đổi, nâng cấp phần mềm
• Những người sử dụng không có mã nguồn thường không thể thay đổi đượcchương trình
Trang 101.1.1 PHẦN MỀM MIỄN PHÍ (tiếp theo)
• Có hai hình thức dùng phần mềm chi phí thấp
Phần mềm tự do, mã nguồn mở (Libre Software, Open Source Software):
Sử dụng, sao chép, phân phối và/hoặc sửa đổi tự do;
Một số được cung cấp mã nguồn;
Tuân thủ theo các giấy phép gốc của phần mềm đó
Phần mềm dạng dịch vụ miễn phí:
Sử dụng miễn phí theo tài khoản;
Chủ yếu đáp ứng nhu cầu phần mềm chạy trên nền web;
Xuất phát điểm từ trào lưu phần mềm như là dịch vụ (SaaSSoftware as
a Service)
Trang 11Free and Open Software Definition
(1998)
FLOSS(2001)
Trang 121.1.2 PHẦN MỀM MÃ NGUỒN MỞ (tiếp theo)
• Free software (hay Libre software)
Có thể có mã nguồn hoặc không có mã nguồn;
Mang nghĩa tự do (không hẳn miễn phí), được sử dụng, sao chép, phân phối,sửa đổi (nếu có mã nguồn)
• Open source software
Có mã nguồn, được sử dụng, sao chép, phân phối, sửa đổi theo quy định tronggiấy phép;
Mang nghĩa nhóm nhiều người có thể cùng nhau phát triển dựa trên mã nguồnđược cung cấp
• FOSS (Free and open-source software): Vừa là free software lẫn Open sourcesoftware
Trang 131.1.2 PHẦN MỀM MÃ NGUỒN MỞ (tiếp theo)
• Định nghĩa phần mềm mã nguồn mở (David Wheeler)
Các chương trình OSS/FS là những chương trình mà quy trình cấp phép sẽ chongười dùng quyền tự do chạy chương trình theo bất kì mục đích nào, quyền nghiêncứu và sửa đổi chương trình, quyền sao chép và tái phát hành phần mềm gốc hoặcphần mềm đã sửa đổi (mà không phải trả tiền bản quyền cho những người lập
Trang 141.1.2 PHẦN MỀM MÃ NGUỒN MỞ (tiếp theo)
• Sự bùng nổ về số lượng triển khai các hệ thống phần mềm nguồn mở đã làm thayđổi thế giới công nghệ thông tin
• Khi những hệ thống FOSS đầu tiên được phát triển, nhiều người sớm sử dụng các
hệ thống này như là các chuyên gia về công nghệ
Trang 151.1.2 PHẦN MỀM MÃ NGUỒN MỞ (tiếp theo)
So sánh phần mềm mã nguồn mở và phần mềm thương mại
Phần mềm thương mại Phần mềm mã nguồn mở
Được coi là • Một tài sản trí tuệ;
Vi phạm bản quyền Không vi phạm, mang lại
giá trị hơn cho phần mềm
Bảo mật được đảm
bảo nhờ
Không ai bên ngoài biếtđược cơ chế làm việcbên trong
Ai cũng có thể phát hiện lỗi
và đề xuất giải pháp xử lí
Lợi nhuận đem lại • Bán các phiên bản mới; • Bán dịch vụ đi kèm;
Trang 161.1.2 PHẦN MỀM MÃ NGUỒN MỞ (tiếp theo)
Tính cam kết duy trì sự phát triển thấp
Khó kiểm soát phiên bản và sự thay đổi mã nguồn
Trang 171.2 CÁC HỌC THUYẾT VỀ PHẦN MỀM MÃ NGUỒN MỞ
1.2.1 Học thuyết FSF
1.2.2 Học thuyết OSI
Trang 181.2.1 HỌC THUYẾT FSF
Tổ chức phần mềm tự do FSF (Free Software Foundation) đề xuất nhằm bảo vệ cácquyền tự do của người dùng
• Quyền tự do chạy một chương trình với bất kì mục đích nào
• Quyền tự do nghiên cứu cách thức vận hành của một chương trình và thích ứng nócho phù hợp với nhu cầu của mình
• Quyền tự do phân phát các phiên bản của phần mềm để giúp đỡ những ngườixung quanh
• Quyền tự do thêm mới các chức năng cho một chương trình và công bố những tínhnăng mới đó đến công chúng để toàn cộng đồng được hưởng lợi
Trang 191.2.2 HỌC THUYẾT OSI
Chương trình sáng kiến nguồn mở OSI (Open Source Initiative) đề xuất
• Chú trọng giá trị kĩ thuật của việc tạo ra những phần mềm mạnh, có độ tin cậy cao
và phù hợp với kinh doanh, đặc biệt là lợi ích thực tiễn của phương pháp xây dựng
và quảng bá phần mềm nguồn mở
• Open Source không chỉ có nghĩa là truy cập vào source code Các điều khoản phânphối phần mềm nguồn mở phải tuân theo các tiêu chí sau:
Free Redistribution – Miễn phí phân phối lại
Việc cấp giấy phép sẽ không hạn chế bất kì ai từ việc bán hoặc cho theo cáccách khác nhau
Việc cấp giấy phép sẽ không đòi hỏi phải có trả tiền hoặc các chi phí khác
Trang 201.2.2 HỌC THUYẾT OSI (tiếp theo)
Derived Works – Các sản phẩm dẫn xuất: Giấy phép phải cho phép sửa đổi, bổsung, các sản phẩm dẫn xuất phải cho phép họ được phân phối theo cùng mộtđiều khoản như giấy phép của phần mềm gốc
Integrity of The Author's Source Code – Sự toàn vẹn source code của tác giả
Giấy phép có thể đưa ra các hạn chế mã nguồn
Giấy phép có thể yêu cầu các sản phẩm dẫn xuất mang một tên khác hay phiên bản khác từ phần mềm ban đầu
No Discrimination Against Persons or Groups - Không phân biệt đối xử với cánhân hoặc nhóm: Giấy phép không được phân biệt đối xử đối với bất kì ngườinào hoặc nhóm người
No Discrimination Against Fields of Endeavor – Chống lại phân biệt sự cố gắngcủa các thành viên: Giấy phép không được giới hạn việc sử dụng chương trìnhtrong các lĩnh vực cụ thể
Distribution of License – Phân phối giấy phép: Các quyền kèm theo trong cácchương trình cần phải áp dụng cho tất cả các chương trình được phân phối, màkhông cần thực hiện thêm một giấy phép giữa các bên
Trang 211.3 CÁC LOẠI GIẤY PHÉP VỀ PHẦN MỀM MÃ NGUỒN MỞ
• Open Source Initiative (OSI) là tổ chức phi lợi nhuận đề xướng khái niệm nguồn mở
• OSI quản lí “The Open Source Definition” (định nghĩa về nguồn mở) nhằm xác địnhchính xác khái niệm về nguồn mở (http://opensource.org/docs/definition.php)
• Phần mềm mã nguồn mở đơn giản là phần mềm dùng loại giấy phép đáp ứng địnhnghĩa về nguồn mở trên
• Một số giấy phép mã nguồn mở phổ biến:
Gnu General Public License (GPL);
Gnu Lesser General Public License (LGPL);
Mozilla Public License (MPL);
Apache Software License;
Apple Public Source License;
Artistic License;
BSD License
Trang 221.3 CÁC LOẠI GIẤY PHÉP VỀ PHẦN MỀM MÃ NGUỒN MỞ (tiếp theo)
• Cơ bản các giấy phép đều cho phép tự do sử dụng, phân phối, sửa đổi
• Nguồn mở không có nghĩa là trở thành của công Tác giả vẫn là người nắm giữ bảnquyền và không bị khước từ bất cứ quyền nào Họ cho phép sử dụng với những giớihạn riêng Ví dụ: Phải giữ tên tác giả ở những phiên bản kế thừa
• Người giữ bản quyền gốc có thể cung cấp phần mềm theo cả giấy phép nguồn mở
và giấy phép thương mại với các điều khoản khác nhau
• Phần mềm nguồn mở đôi khi cũng phải trả phí bản quyền
• Với đối tượng cá nhân thì không có nhiều sự khác biệt giữa các loại giấy phép
Trang 231.4 PHẦN MỀM DỊCH VỤ MIỄN PHÍ
• Bên cạnh phần mềm tự do và mã nguồn mở, xu
hướng hiện tại cung cấp phần mềm dưới dạng
dịch vụ
• Chuyển từ “mua” sang “thuê” phần mềm
• Hay cung cấp miễn phí với tính năng tối thiểu, trả
phí với tính năng mở rộng – Freemium
• Dùng bao nhiêu trả tiền bấy nhiêu
Trang 241.4 PHẦN MỀM DỊCH VỤ MIỄN PHÍ (tiếp theo)
SaaS – Software as a Service
• Dữ liệu được lưu trữ trên “Đám mây” (Internet)
• Truy cập phần mềm qua Web Browser
• Lợi ích:
Truy cập được từ bất cứ đâu, bất cứ thời điểm nào
Chi phí thường rẻ hơn mua phần mềm dạng sản phẩm (không phải trả tiền chonhững tính năng không dùng)
Không cần sắm, cài đặt, bảo trì, hệ thống hay máy chủ Đơn giản chỉ cần có thiết
bị truy cập được và Internet
Không phụ thuộc nền tảng (platform)
• Nhược điểm:
Kết nối Internet và tốc độ đường truyền
Khó tùy biến để đáp ứng nhu cầu đặc thù của doanh nghiệp
Trang 25TÓM LƯỢC CUỐI BÀI
Trong bài học này, chúng ta đã tìm hiểu những nội dungchính sau:
• Khái niệm về phần mềm mã nguồn mở;
• Các học thuyết về phần mềm mã nguồn mở;
• Các loại giấy phép về phần mềm mã nguồn mở;
• Các phần mềm dịch vụ miễn phí