Tại Sao Giấy Phép Mã Nguồn Mở Quan Trọng?

Khi bạn phát hành một dự án phần mềm mã nguồn mở, giấy phép không phải là chi tiết nhỏ — đó là bản hợp đồng pháp lý quy định người khác có thể làm gì với code của bạn. Chọn sai giấy phép có thể khiến dự án bị lợi dụng thương mại mà không có đóng góp trở lại, hoặc ngược lại, hạn chế việc doanh nghiệp áp dụng giải pháp của bạn.

Ba Giấy Phép Phổ Biến Nhất

MIT License — Tự Do Tối Đa

MIT là giấy phép permissive (cho phép) đơn giản nhất. Điều kiện duy nhất là giữ nguyên thông báo bản quyền và giấy phép trong code. Người dùng được:

  • Sử dụng, sao chép, sửa đổi, hợp nhất, xuất bản, phân phối tự do.
  • Bán phần mềm chứa code MIT mà không cần công bố mã nguồn sửa đổi.
  • Sử dụng trong phần mềm độc quyền (closed-source).

Phù hợp với: Thư viện, framework muốn được áp dụng rộng rãi nhất có thể. Ví dụ: React, jQuery, Rails.

Apache 2.0 License — Permissive Với Bảo Vệ Sáng Chế

Apache 2.0 tương tự MIT nhưng bổ sung thêm điều khoản cấp phép sáng chế — đóng góp viên cấp quyền sáng chế tự động cho người dùng, và nếu người dùng kiện về sáng chế, họ mất quyền dùng phần mềm. Yêu cầu:

  • Ghi lại mọi thay đổi quan trọng so với code gốc.
  • Giữ nguyên thông báo NOTICE (nếu có) trong bản phân phối.

Phù hợp với: Dự án doanh nghiệp, tổ chức lo ngại tranh chấp sáng chế. Ví dụ: Android (AOSP), Kubernetes, TensorFlow.

GPL (GNU General Public License) — Copyleft Mạnh

GPL là giấy phép copyleft: mọi phần mềm phái sinh từ code GPL phải được phát hành dưới cùng giấy phép GPL. Điều này nghĩa là:

  • Không thể tích hợp code GPL vào phần mềm closed-source thương mại.
  • Bắt buộc công bố toàn bộ mã nguồn của sản phẩm tích hợp code GPL.
  • Bảo đảm "sự tự do lan truyền" — cộng đồng luôn được tiếp cận mã nguồn.

Phù hợp với: Dự án muốn đảm bảo đóng góp luôn quay lại cộng đồng mã nguồn mở. Ví dụ: Linux kernel, WordPress, Git.

Bảng So Sánh Tổng Hợp

Tiêu Chí MIT Apache 2.0 GPL v3
Dùng trong phần mềm thương mại ⚠️ (phải GPL hóa)
Dùng trong closed-source
Bảo vệ quyền sáng chế
Bắt buộc công bố code sửa đổi
Độ phức tạp pháp lý Thấp Trung bình Cao

LGPL và AGPL — Các Biến Thể của GPL

  • LGPL (Lesser GPL): "Copyleft yếu hơn" — cho phép tích hợp thư viện LGPL vào phần mềm proprietary mà không cần GPL hóa toàn bộ, miễn là thư viện có thể được thay thế. Phổ biến cho thư viện hệ thống.
  • AGPL (Affero GPL): Như GPL nhưng áp dụng cả cho phần mềm chạy trên server (SaaS). Nếu bạn cung cấp dịch vụ sử dụng code AGPL qua mạng, bạn phải công bố mã nguồn.

Lời Khuyên Thực Tiễn

  1. Muốn được dùng rộng rãi, kể cả trong sản phẩm thương mại → MIT hoặc Apache 2.0.
  2. Dự án lớn, lo ngại tranh chấp sáng chế → Apache 2.0.
  3. Muốn bảo đảm cộng đồng luôn có mã nguồn → GPL v3.
  4. Viết thư viện nhưng vẫn muốn một chút copyleft → LGPL.
  5. Cung cấp SaaS và muốn bảo vệ copyleft → AGPL.