Chuyển đến nội dung chính (Skip to content)
Mục lục bài viết
Linux Essentials

Linux Essentials 1.3: Phần mềm Mã Nguồn Mở và Giấy phép

Linux Essentials 1.3: Phần mềm Mã Nguồn Mở và Giấy phép

Phân biệt miễn phí, mã nguồn mở, permissive và copyleft; kiểm tra LICENSE, thông báo và giấy phép nội dung trước khi sử dụng hoặc phân phối sản phẩm.

Đọc được mã chưa có nghĩa được làm mọi việc với mã

Một kho mã public xuất hiện trong kết quả tìm kiếm. Bạn tải được tệp, sửa được lỗi và chạy được ứng dụng. Những khả năng kỹ thuật đó chưa trả lời câu hỏi bạn có được đưa mã vào sản phẩm, gửi bản build cho khách hàng hay sử dụng hình ảnh đi kèm trên website hay không. Trước khi phân phối, cần xác định giấy phép áp dụng cho đúng thành phần và phiên bản.

Bài thuộc mục tiêu 1.3 của Linux Essentials 010-160, liên hệ 011.3 của 010-200. Mốc đối chiếu: 23/10/2026. Bạn sẽ phân biệt miễn phí, phần mềm tự do, mã nguồn mở và nội dung mở; biết thu thập thông tin để chuyển người phụ trách tuân thủ. Các tình huống dưới là ví dụ học tập tự biên soạn, không phải kết luận pháp lý cho một sản phẩm cụ thể.

Tách giá bán, khả năng xem mã và quyền được cấp

Miễn phí nói đến chi phí trong một điều kiện cung cấp. Nó không tự trao quyền sửa, phân phối hoặc khai thác thương mại. Một chương trình miễn phí cho cá nhân có thể có điều kiện khác cho tổ chức. Một dịch vụ có mã nguồn mở vẫn có thể thu phí vận hành hoặc hỗ trợ. Khi đánh giá giải pháp, nên hỏi riêng quyền dùng phần mềm và chi phí dịch vụ.

Phần mềm tự do nhấn mạnh các quyền của người sử dụng đối với việc chạy, nghiên cứu, sửa và chia sẻ chương trình theo điều kiện cấp phép. Mã nguồn mở được nhận diện theo một tập tiêu chí về điều khoản phân phối, không chỉ việc có một nút tải source. Các cộng đồng có cách diễn đạt và trọng tâm khác nhau, nhưng “không mất tiền” không đủ để định nghĩa một trong hai khái niệm.

Open Source Definition của OSI yêu cầu nhiều điều kiện, bao gồm khả năng phân phối, có mã nguồn và cho phép tác phẩm phái sinh. Giấy phép hạn chế lĩnh vực sử dụng, chẳng hạn cấm dùng trong kinh doanh, không đáp ứng tiêu chí đó. Vì vậy, khi một dự án gọi mình là source-available, hãy đọc điều khoản thực tế thay vì tự đổi nhãn thành open source.

Giấy phép gắn với đối tượng và phiên bản cụ thể

Một repository có thể chứa mã chương trình, tài liệu, font, hình ảnh, dữ liệu mẫu và thư viện bên ngoài. Chúng không nhất thiết dùng cùng giấy phép. Tệp LICENSE ở gốc là điểm bắt đầu, sau đó cần xem thông báo riêng trong thư mục hoặc tệp, danh sách dependency và thông tin release. Giữ lại nguồn cùng commit hoặc phiên bản đã đánh giá để người khác tái kiểm tra.

Đừng kết luận quyền phân phối chỉ từ một badge hoặc trường license trong package manifest. Metadata có thể chưa đầy đủ; một bản vendored dependency hoặc asset tải từ nơi khác có thể có điều kiện riêng. Cũng không nên xóa comment bản quyền để làm mã ngắn hơn trước khi hiểu nghĩa vụ giữ thông báo.

Nếu chưa thấy giấy phép rõ ràng, ghi trạng thái chưa xác định và chuyển người phụ trách. Khả năng clone repository không giải quyết khoảng trống này. Không dùng bài học làm lý do đoán quyền sử dụng của một tệp không có thông báo. Những quyết định phát hành cần được xem trong bối cảnh tổ chức và luật áp dụng.

Thu thập đúng thành phần, phiên bản, hành vi và điều khoản trước quyết định phân phối.
Hình 1. Thu thập đúng thành phần, phiên bản, hành vi và điều khoản trước quyết định phân phối. Mở hình để xem chi tiết.

Permissive cho phép linh hoạt nhưng vẫn có điều kiện

Nhóm giấy phép thường gọi là permissive có thể cho phép dùng và phân phối rộng với các nghĩa vụ tương đối ít. Tuy nhiên, “ít điều kiện” không phải “không có điều kiện”. Bạn vẫn phải đọc văn bản đúng loại và phiên bản, giữ thông báo cần thiết và xem phạm vi quyền được trao.

Ví dụ, MIT License cho phép nhiều hình thức sử dụng và phân phối, đồng thời yêu cầu giữ thông báo bản quyền và thông báo cấp phép trong các bản sao hoặc phần đáng kể của phần mềm. Văn bản cũng có điều khoản miễn bảo đảm. Trong ví dụ học tập, nếu nhóm đưa một thư viện MIT vào sản phẩm, danh sách bàn giao cần theo dõi thông báo đi kèm, không chỉ tên thư viện.

Không suy từ MIT sang mọi giấy phép được gọi là BSD hoặc Apache. Các văn bản khác có điều khoản và cấu trúc riêng. Một số vấn đề như bằng sáng chế, nhãn hiệu hoặc cách thể hiện attribution cần được đọc theo đúng giấy phép. Khi vượt khỏi ví dụ cơ bản, dùng bản văn chính thức và quy trình tuân thủ của tổ chức.

Copyleft cần xem hành vi phân phối và phạm vi chương trình

Copyleft sử dụng điều kiện cấp phép để duy trì những quyền tương ứng cho người nhận trong các trường hợp được văn bản quy định. Nó không có nghĩa mọi tệp trên cùng máy lập tức phải được công khai. Việc bạn chỉ chạy một công cụ, sửa nó để dùng nội bộ hoặc phân phối một chương trình kết hợp có thể đặt ra các câu hỏi khác nhau.

GNU GPL là một ví dụ cần đọc đúng phiên bản và điều khoản lựa chọn phiên bản. Đừng gộp GPL, LGPL và AGPL thành một nhãn có nghĩa vụ y hệt. Ở mức nhập môn, hãy nhận biết đây là tín hiệu phải xem kỹ cách tích hợp, cách cung cấp bản build và nguồn tương ứng; chưa kết luận tương thích chỉ từ việc hai thư viện cùng được gọi là mã nguồn mở.

Một tình huống giả lập: nhóm sửa một công cụ rồi gửi binary cho khách hàng. Người phụ trách cần xác định giấy phép của công cụ, thay đổi đã làm, thành phần liên kết và nội dung bàn giao. Bài không đưa phán quyết “chắc chắn phải mở toàn bộ sản phẩm” từ một câu mô tả thiếu dữ kiện. Mục tiêu là thu thập đủ thông tin trước khi quyết định.

Nội dung mở không giống giấy phép phần mềm

Giấy phép Creative Commons thường được dùng cho tài liệu, hình ảnh và các nội dung khác. Các thành phần BY, SA, NC hoặc ND diễn tả điều kiện cần đọc kết hợp với phiên bản. Một tài liệu có quyền tải miễn phí không vì thế dùng cùng giấy phép với mã nguồn của một phần mềm được tài liệu hướng dẫn.

Ví dụ gần với bộ bài này là CC BY-NC-ND 4.0: bản tóm lược nêu yêu cầu ghi công, giới hạn sử dụng thương mại và không cho phân phối bản sửa đổi theo giấy phép đó. Tài liệu Learning Materials bạn đang đối chiếu mang thông báo này. Cách biên soạn ở đây là bài giảng độc lập với lời giải thích, ví dụ, bài tập và hình ảnh mới, có tham chiếu nguồn; không đăng lại một bản sửa của PDF.

Việc chuyển định dạng, trích dẫn, dịch hoặc phối hợp nội dung có thể cần phân tích khác nhau theo tình huống và luật áp dụng. FAQ của Creative Commons giúp tìm đúng câu hỏi về adaptation và attribution. Không suy ra chỉ cần đổi vài từ hoặc thêm nguồn là mọi cách tái sử dụng đều được cho phép.

Một repository có thể chứa nhiều loại tài sản với thông báo cấp phép riêng.
Hình 2. Một repository có thể chứa nhiều loại tài sản với thông báo cấp phép riêng. Mở hình để xem chi tiết.

Thực hành kiểm kê giấy phép trên một gói đã có

Trong Ubuntu lab, xem danh sách tệp tài liệu của Bash rồi tìm thông báo bản quyền đã được đóng gói. Bài chỉ đọc dữ liệu local, không sửa package database và không tải mã lạ. Nếu gói hoặc đường dẫn khác trên máy của bạn, ghi khác biệt và dùng danh sách tệp để tìm đúng nơi.

dpkg-query -L bash
if [ -r /usr/share/doc/bash/copyright ]; then
  sed -n '1,80p' /usr/share/doc/bash/copyright
else
  printf '%s\n' 'Kiểm tra danh sách tài liệu của gói trên môi trường này.'
fi

Tệp thông báo có thể mô tả nhiều thành phần, copyright holder và giấy phép. Chỉ đọc 80 dòng đầu là bước quan sát, không phải kiểm toán đã hoàn tất. Muốn kết luận cho một bản phân phối cụ thể, cần xem toàn bộ tài liệu liên quan và mã được bàn giao. Bạn không cần sao chép nguyên văn thông báo vào bài ghi chú công khai để chứng minh đã đọc.

Hãy lập một hàng kiểm kê gồm: tên thành phần, phiên bản, nguồn, đường dẫn giấy phép, mục đích dùng và câu hỏi còn mở. Nếu công cụ quét đưa ra nhiều kết quả, giữ kết quả cùng bằng chứng thay vì chọn nhãn thuận tiện nhất. Công cụ hỗ trợ tìm dấu hiệu; trách nhiệm xác định phạm vi vẫn cần con người và quy trình phù hợp.

Quyền tự chủ số có cả điều kiện vận hành

Có mã nguồn và giấy phép phù hợp giúp tổ chức có thêm lựa chọn kiểm tra, sửa hoặc chuyển nhà cung cấp. Nhưng khả năng đó chỉ có ích khi có người, quy trình build, tài liệu và dữ liệu xuất được. Nếu không ai tái tạo được bản build hoặc khôi phục dữ liệu, việc có một bản source trên ổ đĩa chưa giải quyết toàn bộ phụ thuộc vận hành.

Trong một đánh giá nhập môn, bạn có thể hỏi dữ liệu được lưu ở định dạng nào, có cách xuất đầy đủ không, ai nhận cập nhật bảo mật và ai chịu trách nhiệm sửa lỗi. Đây là các câu hỏi tổ chức tự đặt ra để đánh giá khả năng kiểm soát; không phải điều khoản tự động suy ra từ mọi giấy phép. Giữ riêng phần quyền được cấp và phần năng lực thực hiện.

Tự kiểm tra bằng một hồ sơ đủ dữ kiện

Tình huống 1: Một thư viện không thu phí nhưng cấm dùng thương mại. Có gọi nó là open source chỉ vì source public không? Không theo tiêu chí đã nêu của OSI; cần đọc nhãn chính xác của dự án. Tình huống 2: Thư viện MIT được đưa vào bản phân phối. Có thể bỏ mọi thông báo vì giấy phép permissive? Không; phải xem và đáp ứng điều kiện của văn bản.

Tình huống 3: Có ND trong giấy phép tài liệu, bạn sửa và đăng lại toàn bộ dưới tên mình. Dẫn nguồn đã đủ chưa? Không thể kết luận như vậy; quyền phân phối bản sửa đổi không được giấy phép đó cấp theo cách tóm lược đã nêu. Tình huống 4: Một repository có logo và source. Có thể áp một giấy phép cho cả hai? Cần kiểm tra thông báo riêng, không mặc định.

Bạn đạt bài khi viết được hồ sơ một thành phần và giải thích điều gì đã biết, điều gì còn thiếu. Khi chuẩn bị phát hành sản phẩm thật, chuyển hồ sơ đó cho người phụ trách thay vì biến một bài nhập môn thành quyết định tuân thủ cuối cùng.

Bài liên quan trong bộ LPI

Tìm hiểu thêm