
Giấy phép Công cộng GNU (thường được gọi là "GPL") là một giấy phép phần mềm mã nguồn mở nổi bật. Giấy phép này yêu cầu rằng bất cứ khi nào mã nguồn được sử dụng, chỉnh sửa hoặc phân phối, mã nguồn đó phải luôn mở và được chia sẻ theo cùng điều khoản giấy phép. GPL là một trong những giấy phép có ảnh hưởng lớn nhất trong hệ sinh thái mã nguồn mở.
Giấy phép mã nguồn mở xác định rõ các điều kiện mà tác giả cho phép người khác sử dụng và chỉnh sửa mã nguồn—tương tự như việc chia sẻ một công thức và cho phép người khác cải tiến. GPL quy định rằng bất kỳ phiên bản cải tiến nào của “công thức” cũng phải được công khai và chia sẻ theo các quy tắc giống hệt nhau. Yêu cầu đối ứng này đảm bảo cộng đồng luôn được hưởng lợi từ các cải tiến liên tục.
Về bản chất, GPL hiện thực hóa khái niệm “copyleft”, được hiểu là “bản quyền đối ứng”: khi bạn sử dụng hoặc chỉnh sửa mã nguồn mở do người khác công khai, bất kỳ việc phân phối thay đổi nào cũng phải được mở và giữ nguyên thông báo bản quyền cùng văn bản giấy phép gốc.
Các nguyên tắc chính bao gồm:
Nhân Linux đã lâu sử dụng GPL-2.0 (tính đến năm 2025), trở thành ví dụ điển hình nhất về việc áp dụng GPL.
GPL quyết định liệu bạn có thể phân phối phần mềm sử dụng mã nguồn mở dưới dạng đóng nguồn hay không, hoặc bạn có bắt buộc phải công khai mã nguồn khi phân phối dự án của mình không. Trong lĩnh vực Web3, các nghĩa vụ của GPL có thể áp dụng đối với client node, ví, giao diện frontend và hợp đồng thông minh.
Ví dụ, nếu frontend dApp của bạn tích hợp một thành phần được cấp phép GPL và bạn phân phối bản thực thi cho người dùng, bạn có thể phải công khai mã nguồn frontend và giữ nguyên mọi thông báo gốc. Điều này thúc đẩy sự minh bạch trong hợp tác nhưng có thể hạn chế các mô hình kinh doanh đóng nguồn.
Trên chuỗi, thực hành mã nguồn mở giúp tăng cường khả năng kiểm toán và bảo mật. Nhiều nhóm lựa chọn công khai mã nguồn quan trọng để xây dựng niềm tin, đồng thời cân nhắc kỹ tính tương thích giấy phép với chiến lược sản phẩm.
Hợp đồng thông minh thường được viết bằng Solidity, với giấy phép chỉ định ở đầu tệp thông qua SPDX-License-Identifier (ví dụ: "SPDX-License-Identifier: GPL-3.0-or-later"). Các yêu cầu cấp phép đối ứng của GPL đặt ra một số lưu ý đối với hợp đồng thông minh:
Thứ nhất, Phân phối: Việc biên dịch và triển khai hợp đồng lên chuỗi thường được coi là phân phối công khai. Nếu hợp đồng của bạn bao gồm hoặc chỉnh sửa mã GPL, việc triển khai công khai có thể yêu cầu bạn phải công khai mã nguồn các chỉnh sửa đó. Việc xác định đây có phải là phân phối hay không phụ thuộc vào ngữ cảnh—cần đánh giá trong giai đoạn thiết kế.
Thứ hai, Liên kết và phái sinh: Kế thừa hợp đồng hoặc gọi thư viện thường được xem là tạo ra sản phẩm phái sinh. Nếu bạn kế thừa từ hợp đồng được cấp phép GPL, hợp đồng phân phối của bạn cũng phải tuân thủ cùng giấy phép.
Thứ ba, Thực tiễn phổ biến: Nhiều nhóm chọn giấy phép mở hơn như MIT hoặc Apache cho các hợp đồng cốt lõi nhằm giảm nghĩa vụ về sau. Nếu sử dụng GPL, hãy cung cấp đầy đủ mã nguồn, thông báo bản quyền và hướng dẫn build trong repository để thuận tiện kiểm toán và tái sử dụng.
Điểm khác biệt chính giữa GPL, MIT và Apache là mức độ mạnh mẽ của yêu cầu đối ứng.
Tóm lại: Chọn GPL nếu muốn tối đa hợp tác mở và chia sẻ bắt buộc các cải tiến; chọn MIT hoặc Apache để linh hoạt hơn giữa thương mại hóa mở và đóng nguồn.
Bước 1: Đặt tệp LICENSE (toàn văn GPL) tại thư mục gốc repository và ghi rõ thông tin giấy phép trong README.
Bước 2: Thêm dòng SPDX-License-Identifier (ví dụ: "SPDX-License-Identifier: GPL-3.0-or-later") ở đầu mỗi tệp mã nguồn để toolchain nhận diện giấy phép.
Bước 3: Giữ nguyên các thông báo bản quyền và giấy phép của tác giả gốc; đánh dấu rõ thay đổi của bạn với ngày, tác giả và tóm tắt.
Bước 4: Cung cấp cách lấy mã nguồn cho mọi tệp thực thi được phân phối—ví dụ, công khai mã nguồn, script build và tài liệu phụ thuộc để đảm bảo khả năng tái tạo.
Bước 5: Kiểm tra tính tương thích giấy phép của các phụ thuộc bên thứ ba; nếu cần, sử dụng LGPL (phù hợp hơn cho thư viện).
Bước 6: Thực hiện rà soát tuân thủ trước khi phát hành; nếu có yếu tố thương mại, hãy tham vấn pháp lý để giảm thiểu rủi ro.
Các phiên bản chính là v2 và v3:
"Or later" so với "Only": Chọn "GPL-3.0-or-later" cho phép bạn áp dụng các phiên bản tương lai để linh hoạt hơn; "only" cố định phiên bản nhằm quản lý tương thích tốt hơn.
Bên cạnh đó, LGPL dành cho thư viện (cho phép liên kết dưới điều kiện mở hơn), còn AGPL mở rộng nghĩa vụ mã nguồn mở cho phần mềm cung cấp qua mạng—dịch vụ backend Web3 và tương tác frontend cần chú ý các kích hoạt AGPL.
Có—GPL cho phép sử dụng thương mại. Tuy nhiên, khi bạn phân phối sản phẩm phái sinh chứa mã GPL, bạn phải công khai mã nguồn và giữ nguyên mọi thông báo. Các chiến lược doanh nghiệp phổ biến gồm:
Các hiểu lầm thường gặp bao gồm:
Rủi ro bao gồm vi phạm bản quyền và tranh chấp tuân thủ, có thể ảnh hưởng đến gọi vốn, niêm yết hoặc hợp tác. Dự án xử lý tài sản hoặc bảo mật hợp đồng nên hoàn thiện thiết kế giấy phép và kiểm toán mã nguồn từ sớm.
Nếu mục tiêu của bạn là thúc đẩy hợp tác cộng đồng, đảm bảo các cải tiến được đóng góp lại và duy trì khả năng kiểm toán, GPL là lựa chọn vững chắc. Nếu bạn cần tự do hơn cho mô hình đóng nguồn hoặc cấp phép kép, MIT hoặc Apache sẽ linh hoạt hơn. Đảm bảo nhất quán và truy vết giấy phép cho hợp đồng thông minh và frontend—bao gồm tệp LICENSE và tiêu đề SPDX trong repository, chuẩn hóa đường dẫn phân phối mã nguồn. Lưu ý khác biệt phiên bản, tính tương thích phụ thuộc và liệu tình huống của bạn có phải là phân phối hay phái sinh. Luôn kiểm tra tuân thủ và tham vấn pháp lý trước khi thương mại hóa. Với chiến lược cấp phép rõ ràng, bạn có thể đạt được hợp tác tin cậy và tuân thủ quy định trong hệ sinh thái Web3.
Có—nhưng bạn cũng phải công khai mã nguồn sản phẩm phái sinh. Thiết kế “lây lan” của GPL có nghĩa là nếu bạn phát triển sản phẩm dựa trên mã GPL và bán nó, bạn bắt buộc phải công khai mã nguồn theo cùng điều khoản giấy phép. Yêu cầu cốt lõi này khiến GPL không phù hợp với mô hình kinh doanh đóng nguồn. Nếu doanh nghiệp của bạn cần giữ mã riêng tư, hãy cân nhắc sử dụng thư viện cấp phép Apache hoặc MIT.
Rủi ro chính là khả năng bị tác giả gốc kiện vi phạm bản quyền. Dù luật hợp đồng thông minh còn đang phát triển, tòa án ở nhiều quốc gia đã công nhận hiệu lực nghĩa vụ GPL—vi phạm có thể dẫn đến bồi thường. Ngoài ra, nếu bạn muốn gọi vốn hoặc bán lại, nhà đầu tư có thể e ngại rủi ro GPL. Nên tham vấn luật sư từ sớm hoặc chọn giấy phép ít ràng buộc hơn để giảm thiểu rủi ro.
Đây là cách phổ biến để mô tả hiệu ứng “lây lan” của GPL. Khi bạn đưa mã GPL vào dự án—dù gián tiếp—toàn bộ dự án có thể phải tuân thủ điều khoản GPL (trong một số trường hợp). Với nhà phát triển muốn giữ mã độc quyền, “bị ép mở” này giống như dự án bị “lây nhiễm”. Đây không phải là lỗi mà là chủ ý thiết kế—nhằm bảo vệ nguyên tắc phần mềm tự do.
Tùy vào cách bạn tương tác với thư viện và phiên bản GPL áp dụng. Nếu chỉ gọi API động (ví dụ: gọi dịch vụ ngoài), thường không cần mở mã nguồn dự án. Tuy nhiên, nếu liên kết tĩnh hoặc chỉnh sửa rồi sử dụng mã GPL thì phải công khai mã nguồn dự án theo GPL. Hãy tham vấn luật sư mã nguồn mở để làm rõ thế nào là “sản phẩm phái sinh” và tránh mơ hồ pháp lý.
Bạn phải tuân thủ cả hai giấy phép—có thể rất phức tạp. GPL bắt buộc mở toàn bộ sản phẩm phái sinh; MIT cho phép đóng nguồn—hai điều này xung đột. Trên thực tế, dự án của bạn phải theo giấy phép “nghiêm ngặt hơn” (GPL) để đảm bảo tương thích. Tránh trộn giấy phép khi có thể hoặc tách rõ module theo loại giấy phép để giảm thách thức tuân thủ.


