Bài 3: Phần mềm nguồn mở và phần mềm chạy trên Internet

Acrobat Reader (bản tự do) và Acrobat Pro DC (Ảnh Sách KNTT)

I. Lý thuyết trọng tâm

1. Phần mềm nguồn mở

1.1. Phân loại phần mềm theo cách chuyển giao sử dụng

Khi viết chương trình bằng ngôn ngữ lập trình bậc cao, lập trình viên tạo ra một văn bản gần với ngôn ngữ tự nhiên gọi là mã nguồn. Để máy tính thực thi được, mã nguồn cần được dịch sang dãy lệnh mà máy hiểu trực tiếp, gọi là mã máy. Việc chuyển giao phần mềm dưới dạng mã máy giúp bảo vệ ý tưởng và chống sửa đổi trái phép.

Dựa vào cách chuyển giao cho người dùng, phần mềm được chia thành ba loại chính theo mức độ “mở” tăng dần:

Phần mềm thương mại (commercial software): Đây là phần mềm được tạo ra để bán, người dùng phải trả phí mới có quyền sử dụng. Phần lớn phần mềm thương mại chỉ cung cấp dưới dạng mã máy nhằm bảo vệ ý tưởng và chống sao chép, vì vậy còn được gọi là phần mềm nguồn đóng. Ví dụ tiêu biểu: Microsoft Word, phần mềm chỉnh sửa ảnh Photoshop.

Phần mềm tự do (free software): Là phần mềm không chỉ miễn phí mà người dùng còn được tự do sử dụng mà không cần xin phép. Phần mềm tự do có thể tồn tại ở dạng mã máy hoặc mã nguồn. Ví dụ: Acrobat Reader cho phép đọc, in và ghi chú tệp PDF miễn phí; tuy nhiên nếu muốn các tính năng nâng cao hơn như soạn thảo, chỉnh sửa hay chuyển đổi định dạng thì phải mua bản thương mại Acrobat Pro DC.

Acrobat Reader (bản tự do) và Acrobat Pro DC (Ảnh Sách KNTT)
Acrobat Reader (bản tự do) và Acrobat Pro DC (Ảnh Sách KNTT)

Phần mềm nguồn mở (open-source software): Là phần mềm được cung cấp kèm toàn bộ mã nguồn, cho phép người dùng không chỉ sử dụng mà còn có quyền sửa đổi, cải tiến, phát triển và phân phối lại theo các giấy phép quy định. Thông thường, phần mềm nguồn mở là tự do và không được bảo hành. Ví dụ: phần mềm chỉnh sửa ảnh GIMP, phần mềm vẽ đồ họa Inkscape, môi trường lập trình Python.

1.2. Giấy phép đối với phần mềm nguồn mở

Khi sử dụng bất kỳ loại phần mềm nào, người dùng đều cần tuân thủ các điều kiện được phép sử dụng, thường gọi là giấy phép (license). Chẳng hạn, khi mua giấy phép một phần mềm thương mại, người dùng chỉ được cài đặt trên số lượng máy tính nhất định theo quy định.

Đối với phần mềm nguồn mở, có một sự mâu thuẫn với quy định bản quyền thông thường: theo luật bản quyền, tác giả có quyền bảo vệ chống sao chép, sửa đổi và phân phối; nhưng phần mềm nguồn mở lại khuyến khích người dùng thực hiện những điều này. Chính vì vậy, cần có giấy phép riêng để cấp cho người dùng các quyền mà quy định bản quyền thông thường không cho phép.

Giấy phép công cộng GNU GPL (GNU General Public License) là giấy phép được áp dụng rộng rãi nhất cho phần mềm nguồn mở. Phiên bản GNU GPL 3.0 được phát hành năm 2007. Giấy phép này không chỉ đảm bảo quyền tiếp cận mã nguồn mà còn đảm bảo sự phát triển bền vững của phần mềm nguồn mở. Cụ thể, một số nội dung đáng chú ý:

  • Quyền sao chép và phân phối: Người dùng được sao chép, phân phối phần mềm và có quyền yêu cầu trả phí cho việc chuyển giao đó; tuy nhiên phải thông báo rõ ràng về bản quyền gốc và thông báo miễn trừ trách nhiệm bảo hành.
  • Quyền sửa đổi và phân phối bản sửa đổi: Người dùng được sửa đổi phần mềm, nhưng phải công bố mã nguồn phần sửa đổi, nêu rõ bản nào đã thay đổi, chỉ rõ các thành phần được thay đổi. Đồng thời, phải áp dụng giấy phép GNU GPL cho chính phần thay đổi đó.
  • Tính lan truyền của GPL: Phần mềm có nguồn gốc từ việc sửa đổi một phần mềm nguồn mở theo GPL cũng bắt buộc phải mở theo GPL. Điều này đảm bảo chuỗi phát triển luôn duy trì tính mở.
  • Quyền miễn trừ của tác giả: Các tác giả được miễn trừ trách nhiệm về hậu quả khi người khác sử dụng phần mềm.
  • Quyền đứng tên: Các tác giả tham gia phát triển được đảm bảo quyền đứng tên trên sản phẩm.

2. Vai trò của phần mềm thương mại và phần mềm nguồn mở

Hiện nay, hầu như mọi lĩnh vực của công nghệ thông tin đều có phần mềm nguồn mở có thể thay thế cho phần mềm thương mại tương ứng. Bảng dưới đây liệt kê một số ví dụ điển hình:

Lĩnh vực Phần mềm thương mại Phần mềm nguồn mở thay thế
Phần mềm văn phòng Word, Excel, PowerPoint (Microsoft) Writer, Calc, Impress (OpenOffice)
Hệ điều hành Windows (Microsoft), iOS (Apple) Linux và các bản phân phối (Ubuntu, Red Hat,…), Android
Quản trị cơ sở dữ liệu Oracle, SQL Server (Microsoft) MySQL, PostgreSQL
Xử lí ảnh Photoshop (Adobe) GIMP

Tuy nhiên, phần mềm nguồn mở không thể thay thế hoàn toàn phần mềm thương mại. Lý do là phần mềm thương mại tồn tại dưới hai dạng:

  • Phần mềm “đặt hàng”: Được thiết kế riêng theo yêu cầu cụ thể của từng khách hàng, ví dụ phần mềm điều khiển dây chuyền lắp ráp, phần mềm đặt xe trên điện thoại. Loại này được thiết kế chính xác theo nhu cầu và có bảo hành theo hợp đồng.
  • Phần mềm “đóng gói”: Được xây dựng dựa trên nhu cầu chung của nhiều người, có tính hoàn chỉnh cao và kèm công cụ cài đặt tự động. Ví dụ: Photoshop, Microsoft Word.

Phần mềm nguồn mở chủ yếu đáp ứng nhu cầu chung, trong khi những nhu cầu riêng biệt, đặc thù thì chỉ phần mềm thương mại dạng “đặt hàng” mới có thể đáp ứng được. Ngoài ra, chính phần mềm thương mại mới đem lại nguồn tài chính chủ yếu để duy trì các tổ chức, cá nhân làm phần mềm chuyên nghiệp.

Bảng so sánh giữa hai loại phần mềm theo các yếu 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í Phải trả phí mua phần mềm và phí chuyển giao Chỉ mất phí chuyển giao nếu có
Hỗ trợ kỹ thuật Không chính thức, nhưng có hỗ trợ từ cộng đồng
Tính minh bạch Khó kiểm soát những gì bên trong Có thể kiểm soát được mã nguồn
Sự phụ thuộc Phụ thuộc vào nhà cung cấp về giải pháp và hỗ trợ Phát triển theo chuẩn chung, không phụ thuộc vào riêng ai

Tóm lại về ưu điểm và vai trò của từng loại:

Ưu điểm của phần mềm thương mại: Phần mềm dạng “đặt hàng” đáp ứng nhu cầu riêng và người dùng được hỗ trợ kỹ thuật. Phần mềm “đóng gói” có tính hoàn chỉnh cao, đáp ứng nhu cầu rộng rãi.

Ưu điểm của phần mềm nguồn mở: Chi phí thấp, minh bạch, không bị phụ thuộc nhiều vào nhà cung cấp.

Vai trò của phần mềm thương mại: Là nguồn thu nhập chính của các tổ chức, cá nhân làm phần mềm chuyên nghiệp, góp phần tạo ra thị trường phần mềm phong phú, đáp ứng các nhu cầu riêng của cá nhân, tổ chức và các yêu cầu chung của xã hội.

Vai trò của phần mềm nguồn mở: Giúp những người có nhu cầu được sử dụng phần mềm dùng chung chất lượng tốt, ổn định và chi phí thấp. Phần mềm nguồn mở đã mở ra cơ hội tiếp cận công nghệ cho tất cả mọi người, kể cả những ai có nguồn lực hạn chế.

3. Phần mềm chạy trên Internet

Phần mềm chạy trên Internet (hay còn gọi là phần mềm trực tuyến) là phần mềm cho phép sử dụng qua mạng Internet mà không cần cài đặt trực tiếp vào máy của người dùng. Loại phần mềm này có hai đặc điểm quan trọng:

  • Phần mềm được cài đặt trên một máy chủ nào đó có kết nối Internet.
  • Người dùng có thể sử dụng trên một máy khác (không cần cài phần mềm) thông qua kết nối Internet.

Phần mềm trực tuyến ngày nay rất phổ biến, bao gồm mạng xã hội, thư điện tử, các ứng dụng mua sắm trực tuyến và nhiều dịch vụ khác.

Lợi ích nổi bật: Có thể sử dụng ở bất cứ đâu, bất cứ khi nào, trên bất cứ máy tính nào, miễn là có kết nối Internet. Chi phí thấp hoặc hoàn toàn miễn phí.

Một ví dụ điển hình là bộ ứng dụng văn phòng trực tuyến của Google: Google Docs (soạn thảo văn bản, tương tự Word), Google Sheets (bảng tính, tương tự Excel), Google Slides (trình chiếu, tương tự PowerPoint). Để sử dụng, người dùng chỉ cần có tài khoản Google và truy cập qua trình duyệt web. Mọi dữ liệu được lưu trữ tự động trên không gian đám mây của Google.

Giao diện truy cập Google Docs (Ảnh Sách KNTT)
Giao diện truy cập Google Docs (Ảnh Sách KNTT)

II. Phương pháp giải các dạng bài tập

Dạng 1: Phân tích mối quan hệ giữa phần mềm nguồn mở và phần mềm thương mại

Phương pháp: Cần nắm vững rằng hai loại phần mềm này tồn tại song song và bổ sung cho nhau, không loại trừ nhau. Phần mềm thương mại có loại “đặt hàng” phục vụ nhu cầu riêng biệt mà phần mềm nguồn mở không thay thế được. Đồng thời, phần mềm thương mại là nguồn tài chính chính nuôi dưỡng ngành công nghiệp phần mềm.

Bài 1 (Luyện tập SGK). 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?

Lời giải:

Không thể nói như vậy, vì:

  • Phần mềm nguồn mở chủ yếu đáp ứng những nhu cầu chung của cộng đồng. Trong khi đó, phần mềm thương mại dạng “đặt hàng” được thiết kế riêng cho từng khách hàng với yêu cầu đặc thù – đây là mảng mà phần mềm nguồn mở không thể thay thế.
  • Phần mềm thương mại là nguồn thu nhập chính của các tổ chức, cá nhân phát triển phần mềm chuyên nghiệp. Nếu không có nguồn thu này, ngành công nghiệp phần mềm sẽ khó duy trì và phát triển.
  • Hai loại phần mềm thực chất bổ sung cho nhau: phần mềm nguồn mở phát triển tạo thêm lựa chọn cho người dùng, nhưng không làm mất đi nhu cầu đối với phần mềm thương mại.

Dạng 2: Nhận biết và phân biệt phần mềm trực tuyến

Phương pháp: Để xác định một phần mềm có phải là phần mềm trực tuyến (chạy trên Internet) hay không, cần kiểm tra đồng thời hai tiêu chí: (1) phần mềm được cài đặt trên máy chủ kết nối Internet, và (2) người dùng sử dụng từ một máy khác qua Internet mà không cần cài phần mềm đó lên máy mình. Thiếu một trong hai tiêu chí thì không được xem là phần mềm trực tuyến.

Bài 2 (Luyện tập SGK). 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?

Lời giải:

Phần mềm tại trạm ATM không phải là phần mềm trực tuyến. Mặc dù trạm ATM có kết nối mạng với hệ thống máy chủ của ngân hàng để xử lí giao dịch, nhưng phần mềm được cài đặt sẵn trên chính máy ATM đó. Người dùng chỉ thao tác được tại máy ATM chứ không thể truy cập và sử dụng phần mềm này từ bất kỳ máy tính nào khác qua Internet. Do đó, nó không đáp ứng đặc điểm của phần mềm chạy trên Internet.

Dạng 3: Vận dụng – Tìm hiểu thực tế

Phương pháp: Dựa vào định nghĩa chính xác của phần mềm nguồn mở (cung cấp mã nguồn + quyền sử dụng, sửa đổi, phân phối lại theo giấy phép) để phân tích các trường hợp thực tế. Không nhầm lẫn giữa “mã nguồn đọc được” với “phần mềm nguồn mở”.

Bài 3 (Vận dụng SGK). 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.

Lời giải:

  • Phần mềm đồ hoạ thương mại: Adobe Photoshop (chỉnh sửa ảnh), Adobe Illustrator (thiết kế đồ hoạ vector), CorelDRAW (thiết kế đồ hoạ).
  • Phần mềm đồ hoạ nguồn mở: GIMP (chỉnh sửa ảnh, thay thế Photoshop), Inkscape (thiết kế vector, thay thế Illustrator), Krita (vẽ và minh hoạ kỹ thuật số).

Bài 4 (Vận dụng SGK). 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?

Lời giải:

Không thể coi tất cả phần mềm viết bằng Python đều là phần mềm nguồn mở. Lí do:

  • Việc chương trình tồn tại ở dạng mã nguồn (không biên dịch sang mã máy) chỉ là đặc điểm kỹ thuật của ngôn ngữ Python, không đồng nghĩa với việc phần mềm đó là nguồn mở.
  • Để được xem là phần mềm nguồn mở, phần mềm phải thoả mãn điều kiện: được cung cấp kèm mã nguồn và người dùng được quyền sử dụng, sửa đổi, phân phối lại theo các giấy phép thích hợp.
  • Tác giả của một phần mềm viết bằng Python hoàn toàn có quyền giới hạn việc sao chép, sửa đổi hay phân phối – khi đó phần mềm vẫn là phần mềm thương mại dù mã nguồn có thể đọc được.

III. Sơ đồ tư duy

                       ┌─ Thương mại: bán, nguồn đóng (Word, Photoshop)
        ┌─ Phân loại ──┼─ Tự do: miễn phí, tự do dùng (Acrobat Reader)
        │              └─ Nguồn mở: cung cấp mã nguồn, sửa đổi & phân phối (GIMP, Inkscape)
        │
        │              ┌─ Sao chép, phân phối (thông báo bản quyền gốc)
 PM     ├─ Giấy phép ──┼─ Sửa đổi (công bố rõ ràng thay đổi)
 Nguồn  │   GNU GPL    ├─ PM từ GPL → cũng phải mở theo GPL
 Mở     │              └─ Miễn trừ bảo hành, đảm bảo quyền đứng tên
        │
        │              ┌─ PM thương mại: "đặt hàng" + "đóng gói"
        └─ Vai trò ────┤   → nguồn thu nhập, thị trường phong phú
                       └─ PM nguồn mở: chi phí thấp, minh bạch
                           → không phụ thuộc nhà cung cấp

              ╔══════════════════════════════════════╗
              ║  PM NGUỒN MỞ & PM CHẠY TRÊN INTERNET ║
              ╚══════════════════════════════════════╝

        ┌─ Cài trên máy chủ, dùng qua trình duyệt
 PM     ├─ Không cần cài đặt trên máy người dùng
 Chạy   ├─ Mọi lúc, mọi nơi, mọi máy (cần Internet)
 trên   ├─ Chi phí thấp hoặc miễn phí
 Internet└─ VD: Google Docs, Sheets, Slides, mạng xã hội
Thầy Phạm Thành Danh

Thầy Phạm Thành Danh

(Người kiểm duyệt, ra đề)

Chức vụ: Trưởng ban biên soạn môn Tin Học THPT

Trình độ: Cử nhân Sư phạm Tin học, Chứng chỉ hạng II, Chứng chỉ Tin học, Ngoại ngữ B1

Kinh nghiệm: 8+ năm kinh nghiệm tại Trường THPT Thuận Hóa