Chương 1: TỔNG QUAN VỀ PHÁT TRIỂN PHẦN MỀM MÃ NGUỒN MỞ Giới thiệu 3 Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Nội dung • Phần mềm và mã nguồn phần mềm • Chủ sở hữu phần mềm • Giấy phép sử dụng phần mềm (License) • Phần mềm tự do • Hệ điều hành Linux • Phần mềm mã nguồn mở (Open Source Software) Phần mềm và mã nguồn Một chương trình viết bằng C++, có tên file nguồn là hello.cpp và có nội dung #include<iostream> using namespace std; int main() { cout << "Hello World!"; return 0; } File nguồn được viết bởi tác giả A File nguồn này được biên dịch sang file thực thi.exe Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Phần mềm và mã nguồn • Tập tin hello.exe được gọi là một phần mềm, hay một chương trình phần mềm. Nội dung của hello.exe bao gồm các mã máy, mã thực thi hay mã nhị phân, là các chỉ thị mà máy tính phải thực hiện,. • Tập tin hello.cpp được gọi là mã nguồn của phần mềm hello.exe • A: chủ sở hữu của phần mềm (cả 2 tập tin hello.exe và hello.cpp) Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Chủ sở hữu phần mềm • Khi một phần mềm được tạo ra nó thuộc một chủ sở hữu nào đó. • Chủ sở hữu có thể là một cá nhân (lập trình viên viết ra phần mềm) hoặc là một công ty phần mềm (người bỏ tiền ra thuê mướn lập trình viên trực tiếp viết phần mềm cho công ty).
Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Chủ sở hữu phần mềm • Chủ sở hữu phần mềm có toàn quyền trên phần mềm mà họ là chủ sở hữu, và sẽ quyết định mức độ sử dụng và khai thác của những người khác trên phần mềm mà họ là chủ sở hữu. • Khi muốn sử dụng một phần mềm đó, người sử dụng phải xin phép chủ sở hữu phần mềm thông qua một giấy phép được cập bởi chủ sở hữu phần mềm. Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Giấy phép sử dụng phần mềm • Giấy phép sử dụng phần mềm (License) được chủ sở hữu phần mềm cấp cho người muốn sử dụng phần mềm. • Nó là một bản hợp đồng gồm các điều khoản và điều kiện, mô tả những gì mà chủ sở hữu phần mềm cho phép khai thác phiên bản phần mềm liên quan.
Nó qui định về những khả năng mà ta có thể có được trên phần mềm được cấp giấy phép sử dụng. Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Giấy phép sử dụng phần mềm • Giấy phép của một số loại phần mềm phổ biến – Phần mềm thương mại – Phần mềm miễn phí (freeware) và phần mềm trả một phần (shareware) – Phần mềm mã nguồn mở Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Phần mềm thương mại • Chỉ cho phép người sử dụng khai thác phần mềm theo những ràng buộc đã ghi rõ trong giấy phép. • Bản quyền loại này rất bị hạn chế. Trong trường hợp có những lỗi phần mềm được phát hiện hay một số chức năng hoạt động không tốt thì người sử dụng phải chờ cho đến khi chủ sở hữu phần mềm sửa đổi chúng.
Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Phần mềm miễn phí… – Là các phần mềm có chủ sở hữu. Được phân phối một cách tự do. – Phần mềm miễn phí không đòi hỏi tiền bản quyền sử dụng phần mềm. – Phần mềm trả một phần thì sau một khoản thời gian đã định người sử dụng phải trả tiền nếu như muốn được phép sử dụng tiếp.
– Cả hai loại phần mềm này đều không cho phép người sử dụng truy cập vào mã nguồn của phần mềm. Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Phần mềm mã nguồn mở • Giấy phép phần mềm này qui định rằng nó được phân phối đến người sử dụng cùng với mã nguồn của nó mà chúng có thể bị sửa đổi. • Nó có thể được phân phối lại mà không bị một ràng buộc nào khác. • Chúng ta có thể phân phối cả những thay đổi mà chúng ta đã thực hiện trên mã nguồn gốc Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Phần mềm mã nguồn mở • Các điều khoản, điều kiện trong các giấy phép sử dùng phần mềm khác nhau là khác nhau.
Có 3 khả năng đối với người sử dụng : – Khả năng phân phối lại ( Distribution Possibility): Quyền được phép sao chép và phân phối lại phiên bản phần mềm hay không ? – Khả năng truy cập vào mã nguồn (Accessibility to source code): cho phép xem mã nguồn, sử dụng, sửa đổi mã nguồn phần mềm của họ cho mục đích của bạn hay không ? – Phí sử dụng phần mềm (Free). Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN So sánh giấy phép phần mềm Khả năng phân phối lại Truy cập vào mã nguồn Miễn phí Phần mềm thương mại (Commercial Không Không Không Software) Phần mềm miễn phí (Freeware) Đa số Không Có Phần mềm trả một phần (Shareware) Đôi khi Không Không Phần mềm mã nguồn mở (Open Source Được phép Được phép Đa số Software) Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Phần mềm tự do • Phong trào phần mềm tự do • Phần mềm tự do (Free Software) • Giấy phép sử dụng phần mềm GPL (General Public License) • GNU GPL V2 • LGPL Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Phong trào phần mềm tự do • Nhằm tạo ra những Phần mềm tự do (free software) là những phần mềm mà người dùng có thể tự do chia sẻ, nghiên cứu và sửa đổi chúng. • Được khởi xướng bởi Richard M. Stallman vào năm 1983 khi ông bắt đầu dự án GNU (“GNU is Not UNIX”) nhằm thay thế hệ điều hành Unix với tính năng tự do • Thành lập quỹ phần mềm tự do (FSF - Free Software Foundation) năm 1985 Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Phần mềm tự do • Phần mềm tự do (Free Software) PMTD) đề cập đến sự do, không đề cập đến vấn đề chi phí/giá cả.
• Một phần mềm tự do cho phép người sử dụng phần mềm có 4 khả năng tự do sau: – Tự do thực thi chương trình cho bất kỳ mục đích gì – Tự do nghiên cứu cách thực thi của chương trình và sửa đổi chúng cho mục đích của bạn. Truy cập vào mã nguồn chương trình là tiền đề – Tự do phân phối phần mềm cho người khác – Tự do cải tiến chương trình và phân phối cải tiến của bạn cho cộng đồng. Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Giấy phép sử dụng phần mềm GPL • GPL (General Public License) • Thông thường, các phần mềm đều được copyright nhằm bảo về quyền tác giả. • Copyleft: là một phương pháp tổng quát nhằm làm cho một chương trình tự do và yêu cầu tất cả những phiên bản sửa đổi hay mở rộng của chương trình cũng phải tự do.
• Khái niệm Copyleft được cụ thể hóa trong giấy phép GNU General Public License (GNU GPL). • Đây là giấy phép cho phần mềm tự do, được phát hành cho phần lớn các sản phẩm của dự án GNU. Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Các phiên bản của GPL • Version 1 – General Public License – GPL v1, 1989 • Version 2 – Library General Public License – LGPL v2, 1991 • Version 3 – GPLv3, 2007 Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Phần mềm mã nguồn mở • Từ free trong tên gọi của phần mềm tự do (Free Software) làm liên tưởng đến một loại phần mềm miễn phí hơn là 4 yếu tố tự do của nó và phần mềm tự do thì không thể làm thương mại được. • Để tránh sự hiểu lầm này Eric Raymond and Bruce Perens đề xuất một tên gọi khác là Phần mềm mã nguồn mở (Open Source Software).
• Có 10 tiêu chí để đánh giá xem một giấy phép sử dụng phần mềm có đạt chuẩn là một phần mềm mã nguồn mở hay không. Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Phần mềm mã nguồn mở • Tiêu chí (1): Tự do phân phối lại ( Free Redistribution): Bản quyền sẽ không hạn chế bất cứ ai bán hoặc cho phần mềm; và không đòi hỏi tiền bản quyền hay một chi phí nào cho thương vụ này. • Tiêu chí (2): Mã nguồn ( Source Code) phải được phân phối cùng với mã nguồn được công bố bằng những phương tiện công cộng mà người ta có thể lấy được mã nguồn với một chi phí sao chép hợp lý nhất Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Phần mềm mã nguồn mở • Tiêu chí (3): Sản phẩm kế thừa (Derived Works): Giấy phép phải công nhận những sửa đổi và những sản phẩm kế thừa; và phải cho phép chúng được phân phối với cùng những điều khoản như giấy phép của phần mềm ban đầu • Tiêu chí (4) Tính toàn vẹn của mã nguồn của tác giả: Giấy phép có thể ngăn cản việc phân phối mã nguồn dưới dạng bị sửa đổi chỉ khi giấy phép chấp nhận sự phân phối các tập tin vá lỗi (patch file) với mã nguồn vì mục đích sửa đổi chương trình tại thời điểm xây dựng (built time) chương trình. Giấy phép phải cho phép một cách tường minh việc phân phối phần mềm tạo ra từ mã nguồn bị sửa đổi.
Giấy phép có thể yêu cầu những sản phẩm kế thừa phải mang một cái tên khác hoặc số phiên bản khác so với phần mềm gốc. • • Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Phần mềm mã nguồn mở • Tiêu chí (5): Không phân biệt đối xử giữa các cá nhân và các nhóm (No Discrimination Against Persons or Groups) • Tiêu chí (6): Không phân biệt đối xử với mục đích sử dụng (No Discrimination Against Fields of Endeavor) • Tiêu chí (7): Phân phối giấy phép (Distribution of License): Những quyền được kèm với chương trình phải được áp dụng đối với tất cả những người mà sau đó chương trình được phân phối lại mà không cần thiết phải thực thi thêm những giấy phép phụ của những thành phần này • Trường ĐH Công Nghệ Sài Gòn KHOA CÔNG NGHỆ THÔNG TIN Phần mềm mã nguồn mở • Tiêu chí (8): Giấy phép không được dành riêng cho một sản phẩm ( License Must Not Be Specific to a Product) • Tiêu chí (9): Giấy phép không được cản trở phần mềm khác ( License Must Not Restrict Other Software): không được đặt những hạn chế lên những phần mềm khác cùng được phân phối với phần mềm của giấy phép này.