TRƯỜNG ĐẠI HỌC CÔNG NGHỆ GTVT KHOA CÔNG NGHỆ THÔNG TIN THS. PHAN NHƯ MINH (Bộ môn truyền thông và mạng máy tính) BÀI GIẢNG PHẦN MỀM MÃ NGUỒN MỞ DÙNG CHO SINH VIÊN KHOA CÔNG NGHỆ THÔNG TIN LƯU HÀNH NỘI BỘ Hà nội 2022 GNUFDL • PID_00148386 Phần mềm tự do Mục lục 1 Giới thiệu.1 Khái niệm về sự tự do của phần mềm.2 Các khái niệm có liên quan .3 Hệ quả của sự tự do của phần mềm.1 Đối với người sử dụng đầu cuối.2 Đối với nền hành chính nhà nước.3 Đối với lập trình viên.4 Đối với nhà tích hợp .5 Đối với các nhà cung cấp và duy trì dịch vụ.31 2 Một chút về lịch sử.1 Phần mềm tự do trước phần mềm tự do.1 Và lúc ban đầu nó từng là tự do.2 Những năm 70 và đầu những năm 80.3 Sự phát triển ban đầu của Unix.2 Sự bắt đầu: BSD, GNU.1 Richard Stallman, GNU, FSF: phong trào PMTD ra đời.2 CSRG của Berkeley.3 Sự khởi đầu của Internet.3 Mọi thứ đều theo cách của nó.1 Yêu cầu về một nhân kernel.3 Sự ra đời của GNU/Linux.4 Thời gian chín muồi.1 Kết thúc những năm 90.5 Tương lai: Một tiến trình đầy trở ngại?.53 3 Các khía cạnh pháp lý.1 Giới thiệu ngắn gọn về sở hữu trí tuệ.2 Bí mật thương mại.3 Các bằng sáng chế và các mô hình tiện ích.4 Thương hiệu và logo được đăng ký.2 Các giấy phép của PMTD.1 Các loại giấy phép.61 Trang 20/218 GNUFDL • PID_00148386 Phần mềm tự do 3.2 Những giấy phép dễ dãi.3 Các giấy phép mạnh.4 Phân phối theo vài giấy phép.5 Tài liệu chương trình.70 4 Các lập trình viên và những động lực của họ.2 Các lập trình viên là những ai?.3 Lập trình viên làm gì?.4 Phân bố theo địa lý.5 Sự cống hiến.6 Những động lực.7 Sự lãnh đạo.8 Tóm lược và các kết luận.1 Cấp vốn cho các dự án PMTD.1 Vốn nhà nước.2 Việc cấp vốn không vì lợi nhuận của tư nhân.3 Cấp vốn bởi ai đó yêu cầu những cải tiến.4 Việc cấp vốn với những lợi ích liên quan.5 Việc cấp vốn như một sự đầu tư nội bộ .6 Các phương thức cấp vốn khác.2 Các mô hình kinh doanh dựa trên PMTD.1 Hiểu biết tốt hơn.2 Hiểu biết tốt hơn với những hạn chế.3 Nguồn của một sản phẩm PMTD.4 Nguồn sản phẩm với những hạn chế.5 Các giấy phép đặc biệt.6 Bán thương hiệu.3 Những phân loại mô hình kinh doanh khác.1 Phân loại theo Hecker.4 Ảnh hưởng lên vị thế độc quyền.1 Các yếu tố thiên vị cho các sản phẩm áp đảo.2 Thế giới của PMSHĐQ.3 Tình trạng với PMTD.4 Các chiến lược cho việc trở thành một sự độc quyền với PMTD.97 6 PMTD và hành chính nhà nước.1 Ảnh hưởng lên các cơ quan hành chính nhà nước.1 Những ưu điểm và những ảnh hưởng tích cực .2 Những khó khăn của việc áp dụng và những vấn đề khác.2 Hành động của cơ quan hành chính nhà nước trong thế giới PMTD.1 Làm sao thỏa mãn nhu cầu của các cơ quan hành chính nhà nước?.2 Khuyến khích xã hội thông tin.107 Trang 21/218 GNUFDL • PID_00148386 Phần mềm tự do 6.3 Thúc đẩy nghiên cứu .3 Những ví dụ của những sáng kiến về pháp lý.1 Các dự luật tại Pháp.2 Dự luật của Brazil.3 Các dự luật tại Peru.4 Các dự luật tại Tây Ban Nha.112 7 Kỹ thuật của PMTD.2 Nhà thờ lớn và cái chợ.3 Sự lãnh đạo và ra quyết định trong cái chợ.4 Các qui trình của PMTD.5 Chỉ trích về “Nhà thờ lớn và cái chợ”.6 Các nghiên cứu có tính định lượng.7 Công việc tương lai.123 8 Các môi trường và công nghệ phát triển.1 Mô tả các môi trường, công cụ và hệ thống.2 Các ngôn ngữ và công cụ có liên quan.3 Các môi trường phát triển tích hợp.4 Các cơ chế cộng tác cơ bản.1 Hệ thống Phiên bản Đồng thời.2 Các hệ thống quản lý nguồn khác.7 Quản lý lỗi và các vấn đề khác.8 Hỗ trợ cho các kiến trúc khác.9 Các site hỗ trợ phát triển.2 Những người kế thừa của SourceForge.3 Các site và chương trình khác.141 9 Các trường hợp điển hình.1 Lịch sử của Linux.2 Cách thức làm việc của Linux.3 Hiện trạng của Linux.1 Lịch sử của FreeBSD.2 Sự phát triển trong FreeBSD.3 Qui trình ra quyết định trong FreeBSD.4 Các công ty làm việc xung quanh FreeBSD.5 Hiện trạng của FreeBSD.151 Trang 22/218 GNUFDL • PID_00148386 Phần mềm tự do 9.6 Bức tranh X quang của FreeBSD.7 Các nghiên cứu hàn lâm về FreeBSD.1 Lịch sử của KDE.2 Sự phát triển của KDE.3 Liên đoàn KDE.4 Hiện trạng của KDE.5 Hình ảnh X quang của KDE.1 Lịch sử của GNOME.3 Giới công nghiệp làm việc xung quanh GNOME.4 Hiện trạng của GNOME.5 Hình ảnh X quang của GNOME.6 Các nghiên cứu hàn lâm về GNOME.1 Lịch sử của Apache.2 Sự phát triển của Apache.3 Hình ảnh X quang của Apache.1 Lịch sử của Mozilla.2 Hình ảnh X quang của Mozilla.1 Lịch sử của OpenOffice.2 Tổ chức của OpenOffice.3 Hình ảnh X quang của OpenOffice.8 Red Hat Linux.1 Lịch sử của Red Hat.2 Hiện trạng của Red Hat.3 Bức tranh X quang của Red Hat.9 Debian GNU/Linux.1 Hình ảnh X quang của Debian.2 So sánh với các hệ điều hành khác.1 Lịch sử của Eclipse.2 Hiện trạng của Eclipse.3 Hình ảnh X quang của Eclipse.187 10 Các nguồn tự do khác.1 Những tài nguyên tự do quan trọng nhất.1 Các tài liệu khoa học.2 Luật pháp và chuẩn.3 Bách khoa toàn thư.193 Trang 23/218 GNUFDL • PID_00148386 Phần mềm tự do 10.5 Các bộ sưu tập và các cơ sở dữ liệu.7 Văn học và nghệ thuật.2 Các giấy phép cho những tài nguyên tự do khác.1 Giấy phép tài liệu tự do GNU.2 Các giấy phép chung sáng tạo.196 Trang 24/218 GNUFDL • PID_00148386 Phần mềm tự do 1 Giới thiệu “Nếu bạn có một quả táo và tôi có một quả táo và chúng ta trao đổi táo cho nhau, thì bạn và tôi sẽ vẫn mỗi người có một quả táo. Nhưng nếu bạn có một ý tưởng và tôi có một ý tưởng và chúng ta trao đổi cho nhau những ý tưởng đó, thì mỗi người chúng ta sẽ có 2 ý tưởng”. Phần mềm tự do (PMTD) là gì? Nó là gì và những ảnh hưởng của một giấy phép chương trình tự do là gì? PMTD được phát triển như thế nào? Các dự án PMTD được cấp vốn như thế nào và các mô hình kinh doanh nào có liên quan tới chúng mà chúng ta đang trải nghiệm? Cái gì thôi thúc các lập trình viên, đặc biệt là những tình nguyện viên, để tham gia vào trong các dự án PMTD? Các lập trình viên này thích cái gì? Các dự án của họ được điều phối như thế nào, và các phần mềm mà họ sản xuất ra giống thứ gì? Ngắn gọn, bức tranh toàn cảnh của PMTD là gì? Đây là dạng các câu hỏi mà chúng ta sẽ cố gắng trả lời trong tài liệu này.
Mặc dù vì PMTD đang gia tăng sự hiện diện của nó trên các phương tiện thông tin đại chúng và trong các tranh cãi giữa những người chuyên nghiệp về công nghệ thông tin (IT), và dù ngay cả các công dân nói chung đang bắt đầu nói về nó, thì điều này đối với hầu hết mọi người vẫn còn lạ lẫm chưa rõ. Và ngay cả những người mà đã quen với nó vẫn thường nhận thức được chỉ về một trong những tính năng của nó, và hầu hết bỏ qua về những thứ khác. Để bắt đầu, trong chương này chúng tôi sẽ trình bày những khía cạnh đặc thù của PMTD, tập trung chủ yếu vào việc giải thích nền tảng cơ bản của nó cho những người tiếp cận chủ đề này lần đầu tiên, và nhấn mạnh tới tầm quan trọng của nó. Như một phần của nền tảng cơ bản, chúng tôi sẽ phản ánh về định nghĩa của khái niệm này (để biết chúng ta đang nói về cái gì) và về những hậu quả chính của việc sử dụng (và chỉ là sự tồn tại của) PMTD.1 Khái niệm về sự tự do của phần mềm Kể từ đầu những năm 70 chúng ta đã bắt đầu quen với thực tế là bất kỳ ai thương mại hóa một chương trình có thể áp đặt (và đang áp đặt) những điều kiện theo đó chương trình có thể được sử dụng.
Việc cho một bên thứ 3 mượn có thể sẽ bị cấm, ví dụ vậy. Dù thực tế là các phần mềm là khái niệm của công nghệ hầu như mềm dẻo và có thể thích nghi được mà chúng ta có, thì nó có thể áp đặt sự ngăn cấm (và nó thường bị cấm) áp dụng nó cho những nhu cầu cụ thể nào đó, hoặc sửa các lỗi của nó, mà không có sự đồng ý rõ ràng của nhà sản xuất, người thường giữ quyền riêng cho những khả năng này. Nhưng điều này chỉ là một trong những khả năng mà pháp luật hiện hành đưa ra: PMTD, mặt khác, đưa ra những sự tự do mà các phần mềm sở hữu độc quyền từ chối. Phần mềm sở hữu độc quyền (PMSHĐQ) Trong tài liệu này chúng tôi sẽ sử dụng khái niệm PMSHĐQ để chỉ tới bất kỳ chương trình nào mà nó không được coi là PMTD theo định nghĩa mà chúng tôi sẽ đưa ra sau đây.
Trang 25/218 GNUFDL • PID_00148386 Phần mềm tự do 1.1 Định nghĩa Vì thế, khái niệm PMTD, như được hiểu bởi Richard Stallman trong định nghĩa của ông (FSF, “Định nghĩa PMTD” http://www.org/philosophy/free-sw.html [120]), tham chiếu tới các quyền tự do được đảm bảo cho người nhận nó, được nhắc tới 4 quyền sau: 1. Tự do chạy chương trình ở bất cứ đâu, vì bất kỳ mục đích gì và vĩnh viễn. Tự do nghiên cứu cách mà nó làm việc và để áp dụng nó cho các nhu cầu của chúng ta. Điều này cần tới sự truy cập vào mã nguồn.
Tự do phân phối lại các bản sao, sao cho chúng ta có thể giúp được những bạn bè và hàng xóm của chúng ta. Tự do cải tiến chương trình và đưa những cải tiến đó ra cho công chúng. Điều này cũng cần tới mã nguồn. Cơ chế mà đảm bảo cho những quyền tự do này, theo pháp luật hiện hành, là sự phân phối theo một giấy phép đặc biệt như chúng ta sẽ thấy sau (trong chương 3).
Thông qua giấy phép này, tác giả trao các quyền cho người nhận chương trình để thi hành các quyền tự do này, cũng như bổ sung thêm bất kỳ sự hạn chế nào mà tác giả có thể mong muốn áp dụng (như để công nhận các tác giả ban đầu trong trường hợp của một sự phân phối lại). Để giấy phép được xem là tự do, những hạn chế này phải không làm mất tác dụng các quyền tự do đã được nêu ở trên. Sự không rõ nghĩa của khái niệm tự do Khái niệm PMTD trong tiếng Anh là “Free” (“Tự do”), ám chỉ 'sự tự do', nhưng khái niệm này có thể còn có nghĩa là 'miễn phí' hoặc 'biếu không', mà nó gây ra nhiều sự hiểu lầm.