Mục tiêu bài học
- Về kiến thức:
- Trình bày được các khái niệm về phần mềm nguồn mở, phần mềm thương mại, và phần mềm chạy trên Internet.
- So sánh và chỉ ra sự khác biệt giữa phần mềm nguồn mở và phần mềm thương mại.
- Nắm được các khái niệm về giấy phép phần mềm nguồn mở.
- Hiểu rõ vai trò quan trọng của cả phần mềm thương mại và nguồn mở đối với sự phát triển của ngành công nghệ thông tin.
- Về năng lực và phẩm chất:
- Nâng cao năng lực sử dụng và quản lý các phương tiện công nghệ.
- Phát triển khả năng tự học, giải quyết vấn đề một cách sáng tạo và có tinh thần vì lợi ích chung của cộng đồng.
- Biết lựa chọn loại phần mềm phù hợp với yêu cầu và khả năng của mình khi giải quyết công việc.
Hoạt động khởi động
Lợi ích đối với cộng đồng trong việc chia sẻ mã nguồn là gì?
Việc chia sẻ mã nguồn mang lại lợi ích to lớn cho cộng đồng, cho phép mọi người cùng nhau xem, sửa đổi, cải tiến và phát triển phần mềm. Điều này thúc đẩy sự sáng tạo, tăng tốc độ phát triển, giúp sửa lỗi nhanh hơn và tạo ra những sản phẩm phần mềm ngày càng tốt hơn, phục vụ lợi ích chung của nhiều người. Đây chính là tiền đề cho sự ra đời của phần mềm nguồn mở.
1. Phần mềm nguồn mở
a) Các cách chuyển giao phần mềm
Phần mềm có thể được chuyển giao đến người dùng theo các cách thức với mức độ “mở” tăng dần:
- Phần mềm thương mại (Commercial Software): Đây là phần mềm được bán dưới dạng mã máy (nguồn đóng). Người dùng phải trả phí để có quyền sử dụng và không thể xem hay chỉnh sửa mã nguồn. Điều này giúp bảo vệ ý tưởng và chống sao chép trái phép.
- Ví dụ: Microsoft Word, Adobe Photoshop.
- Phần mềm tự do (Free Software / Freeware): Là phần mềm miễn phí, người dùng có thể tự do sử dụng mà không cần xin phép. Tuy nhiên, freeware thường không cung cấp mã nguồn.
- Ví dụ: Adobe Acrobat Reader.
- Phần mềm nguồn mở (Open-source Software): Đây là hình thức “mở” nhất. Phần mềm được cung cấp miễn phí kèm theo cả mã nguồn. Người dùng có toàn quyền sử dụng, sửa đổi, cải tiến và phân phối lại sản phẩm theo các quy định của giấy phép đi kèm.
- Ví dụ: Hệ điều hành Linux, bộ gõ Unikey, trình duyệt web Firefox.

b) Giấy phép đối với phần mềm nguồn mở
Việc sử dụng phần mềm nguồn mở không có nghĩa là không có quy tắc. Mọi người dùng cần tuân thủ các điều kiện trong một tài liệu gọi là “giấy phép” (license). Giấy phép này cung cấp cho người dùng các quyền mà luật bản quyền thông thường không cho phép, như quyền sao chép, sửa đổi và phân phối lại.
Giấy phép công cộng GNU GPL (General Public License) là một trong những giấy phép phổ biến nhất, với các điều khoản đáng chú ý:
- Được phép sao chép và phân phối lại phần mềm.
- Được phép yêu cầu trả phí cho dịch vụ chuyển giao, nhưng phải thông báo rõ về bản quyền gốc.
- Khi sửa đổi phần mềm, bạn phải công bố mã nguồn của phần đã sửa đổi.
- Quan trọng nhất: Bất kỳ phần mềm nào được phát triển dựa trên một phần mềm theo giấy phép GPL cũng phải được phát hành theo giấy phép GPL. Điều này đảm bảo cộng đồng nguồn mở luôn được phát triển bền vững.
Câu hỏi củng cố
Em hãy cho biết ý nghĩa của yêu cầu “người sửa đổi, nâng cấp phần mềm nguồn mở phải công bố rõ ràng phần nào đã sửa, sửa thế nào so với bản gốc”.
Yêu cầu này nhằm đảm bảo tính minh bạch và sự ghi nhận đóng góp của tất cả các thành viên tham gia phát triển phần mềm. Khi công bố rõ ràng các thay đổi, người dùng sau có thể dễ dàng nắm bắt được lịch sử phát triển, hiểu rõ những cải tiến đã được thực hiện và tiếp tục phát triển sản phẩm một cách hiệu quả hơn.
Ý nghĩa của yêu cầu “phần mềm sửa đổi một phần mềm nguồn mở theo GPL cũng phải mở theo giấy phép của GPL” là gì?
Đây là một điều khoản cốt lõi của giấy phép GPL, thường được gọi là “copyleft”. Ý nghĩa của nó là để đảm bảo sự phát triển bền vững và liên tục của cộng đồng phần mềm nguồn mở. Bất kỳ ai nhận được lợi ích từ việc sử dụng mã nguồn mở để phát triển sản phẩm mới cũng có nghĩa vụ phải đóng góp lại sản phẩm của mình cho cộng đồng, giữ cho dòng chảy tri thức và công nghệ luôn được tự do và rộng mở.
2. Vai trò của phần mềm thương mại và phần mềm nguồn mở
Phần mềm nguồn mở đã trở thành một giải pháp tuyệt vời cho những ai muốn có sản phẩm tốt với chi phí đầu tư thấp. Tuy nhiên, nó không thể thay thế hoàn toàn phần mềm thương mại.
a) Các loại phần mềm thương mại
- Phần mềm “đặt hàng” (may-đo): Được thiết kế riêng theo yêu cầu của một khách hàng cụ thể. Loại phần mềm này đáp ứng chính xác nhu cầu nghiệp vụ, có tính riêng biệt cao và thường đi kèm hợp đồng bảo hành, hỗ trợ kỹ thuật.
- Ví dụ: Phần mềm quản lý chuỗi cung ứng cho một siêu thị, app đặt xe cho một hãng taxi.
- Phần mềm “đóng gói”: Được thiết kế để đáp ứng nhu cầu chung của đông đảo người dùng. Chúng được viết hoàn chỉnh, dễ cài đặt và sử dụng.
- Ví dụ: Bộ phần mềm Microsoft Office, phần mềm diệt virus Kaspersky.
b) So sánh phần mềm thương mại và nguồn mở
Bảng dưới đây tóm tắt các điểm khác biệt chính:
Yếu tố | Phần mềm thương mại (Nguồn đóng) | Phần mềm nguồn mở |
Chi phí | Mất phí mua bản quyền và các phí liên quan. | Thường là miễn phí, chỉ mất phí chuyển giao (nếu có). |
Hỗ trợ kĩ thuật | Có, từ nhà cung cấp chính thức. | Không có hỗ trợ chính thức, nhưng có thể được giúp đỡ từ cộng đồng. |
Tính minh bạch | Khó kiểm soát, không xem được mã nguồn. | Có thể kiểm soát hoàn toàn mã nguồn, đảm bảo an toàn. |
Sự phụ thuộc | Bị phụ thuộc vào nhà cung cấp về giải pháp và lộ trình nâng cấp. | Không phụ thuộc vào ai, được phát triển theo chuẩn chung của cộng đồng. |
Rõ ràng, phần mềm nguồn mở không thể thay thế hoàn toàn phần mềm thương mại. Phần mềm “đặt hàng” đáp ứng các nhu cầu riêng biệt mà phần mềm nguồn mở (vốn phục vụ số đông) không thể đáp ứng. Hơn nữa, phần mềm thương mại chính là nguồn tài chính chủ yếu để duy trì các tổ chức, công ty phần mềm, thúc đẩy thị trường phát triển.
Câu hỏi củng cố
1. Cho ví dụ về phần mềm đóng gói và phần mềm đặt hàng. Ưu điểm của phần mềm thương mại là gì?
- Ví dụ phần mềm đóng gói: Microsoft Office, Adobe Photoshop, phần mềm diệt virus Bkav.
- Ví dụ phần mềm đặt hàng: Phần mềm quản lý nhà hàng, phần mềm quản lý giao dịch của ngân hàng, phần mềm bán vé xem phim qua mạng.
- Ưu điểm của phần mềm thương mại:
- Đối với phần mềm đặt hàng: Được thiết kế chính xác theo yêu cầu, có tính riêng biệt cao, được bảo hành và hỗ trợ kỹ thuật chuyên nghiệp.
- Đối với phần mềm đóng gói: Có tính hoàn chỉnh cao, dễ cài đặt và sử dụng, đáp ứng nhu cầu phổ biến của đông đảo người dùng.
2. Cho ví dụ về một phần mềm thương mại và một phần mềm nguồn mở có thể thay thế. Ưu điểm của phần mềm nguồn mở là gì?
- Ví dụ:
- Phần mềm thương mại: Microsoft Office (Word, Excel, PowerPoint).
- Phần mềm nguồn mở thay thế: LibreOffice hoặc OpenOffice (Writer, Calc, Impress).
- Ưu điểm của phần mềm nguồn mở:
- Chi phí thấp: Người dùng không phải trả tiền bản quyền.
- Minh bạch và an toàn: Người dùng có thể kiểm tra mã nguồn để đảm bảo không có mã độc hay chức năng ẩn.
- Không bị phụ thuộc: Người dùng không bị ràng buộc vào một nhà cung cấp duy nhất.
- Linh hoạt: Có thể tùy chỉnh, sửa đổi để phù hợp với nhu cầu riêng.
3. Phần mềm chạy trên Internet
Đây là loại phần mềm cho phép người dùng sử dụng trực tiếp qua mạng Internet mà không cần phải cài đặt vào máy tính cá nhân. Chúng còn được gọi là phần mềm trực tuyến hay ứng dụng web (web-based).
- Đặc điểm: Phần mềm được cài đặt trên một máy chủ từ xa. Người dùng chỉ cần một thiết bị có kết nối Internet và một trình duyệt web để truy cập và sử dụng.
- Ví dụ: Các mạng xã hội (Facebook), email (Gmail), các công cụ văn phòng trực tuyến (Google Docs, Google Sheets), các ứng dụng mua sắm, học trực tuyến (Microsoft Teams, Zoom).
- Ưu điểm:
- Linh hoạt: Có thể sử dụng ở bất cứ đâu, trên bất kỳ thiết bị nào có kết nối Internet.
- Không cần cài đặt: Tiết kiệm không gian lưu trữ và công sức cài đặt, cập nhật phần mềm.
- Dữ liệu tập trung: Dữ liệu thường được lưu trữ trên “đám mây”, dễ dàng truy cập và chia sẻ.
- Chi phí thấp: Nhiều dịch vụ là miễn phí hoặc có chi phí rẻ.

Câu hỏi củng cố
1. Em hãy nêu những ưu điểm của phần mềm chạy trên Internet.
Những ưu điểm chính của phần mềm chạy trên Internet bao gồm:
- Tính linh hoạt và tiện lợi: Có thể sử dụng ở bất cứ đâu, bất cứ khi nào, miễn là có kết nối Internet.
- Không cần cài đặt: Giảm bớt gánh nặng về cài đặt, bảo trì và cập nhật phần mềm trên máy cá nhân.
- Tiết kiệm chi phí: Giảm được chi phí mua bản quyền và chi phí cài đặt cho nhiều người dùng.
- Khả năng cộng tác cao: Dữ liệu được lưu trữ tập trung, giúp nhiều người dễ dàng làm việc chung trên một tài liệu.
2. Em hãy nêu tên một phần mềm trực tuyến khác với các phần mềm đã nêu trong bài.
- Một số ví dụ về phần mềm trực tuyến khác là:
- Các nền tảng học tập trực tuyến như Microsoft Teams, Zoom.
- Các công cụ thiết kế đồ họa trực tuyến như Canva, Figma.
- Các dịch vụ lưu trữ đám mây như Dropbox, OneDrive.
Luyện tập
Có thể nói “Phần mềm nguồn mở ngày càng phát triển thì thị trường phần mềm thương mại càng suy giảm” hay không? Tại sao?
Không thể nói như vậy. Thực tế cho thấy cả hai loại phần mềm này cùng tồn tại và phát triển song song. Phần mềm nguồn mở thường đáp ứng rất tốt các nhu cầu chung, phổ biến. Trong khi đó, phần mềm thương mại (đặc biệt là phần mềm “đặt hàng”) lại đáp ứng các nhu cầu riêng biệt, chuyên sâu của các doanh nghiệp, tổ chức. Các nhu cầu riêng biệt này rất phong phú và liên tục phát sinh, tạo ra một thị trường lớn mà phần mềm nguồn mở khó có thể bao phủ hết. Do đó, cả hai sẽ tiếp tục cùng phát triển để phục vụ các phân khúc thị trường khác nhau.
Phần mềm ở các trạm ATM (rút tiền tự động) có phải là phần mềm trực tuyến không?
Không. Phần mềm ở các trạm ATM không phải là phần mềm trực tuyến (chạy trên Internet công cộng). Để đảm bảo an ninh và bảo mật tuyệt đối cho các giao dịch tài chính, hệ thống máy ATM sử dụng một mạng diện rộng riêng (WAN) của ngành ngân hàng. Mạng này hoàn toàn tách biệt với Internet công cộng và không thể kết nối từ một máy tính cá nhân thông thường.
Vận dụng
1. Em hãy tìm trên Internet và cho biết tên một số phần mềm đồ hoạ nguồn mở và một số phần mềm đồ hoạ thương mại.
- Phần mềm đồ hoạ thương mại nổi tiếng:
- Adobe Photoshop (chỉnh sửa ảnh bitmap)
- Adobe Illustrator (thiết kế đồ hoạ vector)
- Corel Draw (thiết kế đồ hoạ vector)
- AutoCAD (thiết kế kỹ thuật, kiến trúc)
- Phần mềm đồ hoạ nguồn mở tương ứng:
- GIMP (thay thế cho Photoshop)
- Inkscape (thay thế cho Illustrator, Corel Draw)
- Blender (đồ hoạ 3D, hoạt hình)
- OpenOffice Draw (vẽ đồ hoạ vector cơ bản)
2. Nói chung, các môi trường lập trình trên ngôn ngữ Python đều không có chức năng biên dịch để chuyển mã nguồn thành mã máy. Các chương trình Python đều ở dạng mã nguồn. Liệu có thể coi mọi phần mềm viết bằng Python đều là phần mềm nguồn mở hay không?
Không thể coi mọi phần mềm viết bằng Python đều là phần mềm nguồn mở. Một phần mềm có phải là nguồn mở hay không phụ thuộc hoàn toàn vào giấy phép mà tác giả lựa chọn để phát hành nó, chứ không phụ thuộc vào ngôn ngữ lập trình.
Việc mã nguồn của Python ở dạng có thể đọc được chỉ là một đặc tính kỹ thuật. Tác giả hoàn toàn có quyền giữ bản quyền và không cho phép người khác tự do sử dụng, sửa đổi hay phân phối lại mã nguồn của họ. Chỉ khi nào tác giả công bố phần mềm của mình dưới một giấy phép nguồn mở (như GPL, MIT, Apache) thì nó mới chính thức được coi là phần mềm nguồn mở.