
Giấy phép Công cộng GNU (GPL) là một loại giấy phép phần mềm mã nguồn mở được áp dụng rộng rãi, với các phiên bản phổ biến như GPLv2 và GPLv3. Giấy phép này cho phép bạn sử dụng, chỉnh sửa và phân phối mã nguồn, nhưng yêu cầu mọi tác phẩm phái sinh đều phải tiếp tục giữ nguyên tính mã nguồn mở theo cùng điều khoản giấy phép.
Trong hệ sinh thái Web3, GPL tác động trực tiếp đến các client blockchain, kho hợp đồng thông minh, giao diện người dùng của ứng dụng phi tập trung (dApp) và bộ công cụ phát triển. Đơn cử, client Ethereum Geth sử dụng họ giấy phép GPL, qua đó xác định rõ ràng phạm vi sử dụng và phân phối lại phần mềm.
Trong Web3, GPL đảm nhận hai vai trò chính: bảo đảm tính liên tục của mã nguồn mở và định hình môi trường hợp tác, cạnh tranh. Những dự án áp dụng GPL buộc phải giữ các fork dưới dạng mã nguồn mở, từ đó tăng cường minh bạch và khả năng kiểm toán.
Đối với nhà phát triển, GPL thúc đẩy việc chia sẻ cải tiến và giảm thiểu lãng phí nguồn lực. Đối với đội ngũ dự án, GPL tác động trực tiếp đến chiến lược kinh doanh—chẳng hạn như xác định thành phần nào được phép đóng mã nguồn, thời điểm mở mã nguồn, cũng như cách quản lý thương hiệu và vận hành. Một giải pháp phổ biến là ban đầu sử dụng giấy phép hạn chế, sau đó chuyển sang GPL-3.0 vào thời điểm định trước (ví dụ năm 2023), qua đó thúc đẩy các fork tuân thủ và đổi mới thứ cấp.
Cốt lõi của GPL nằm ở điều khoản “copyleft”: nếu bạn sử dụng hoặc chỉnh sửa mã nguồn có giấy phép GPL và phân phối thay đổi, bạn bắt buộc phải công khai mã nguồn của mình theo cùng giấy phép, đồng thời giữ nguyên bản quyền và tuyên bố miễn trừ trách nhiệm của tác giả gốc.
“Tác phẩm phái sinh” đề cập đến các phát triển dựa trên mã nguồn ban đầu. Ví dụ, nếu bạn bổ sung logic định tuyến và thu phí vào hợp đồng giao dịch phi tập trung và triển khai phiên bản riêng, đó là tác phẩm phái sinh. Khi bạn cung cấp bản sao hoặc tập tin nhị phân cho người khác, nghĩa vụ phân phối được kích hoạt—bạn phải cung cấp mã nguồn và thông tin giấy phép.
GPL cũng bao gồm điều khoản “không bảo hành”, xác định mã nguồn được cung cấp “nguyên trạng”. GPLv3 bổ sung các quy định về bằng sáng chế và chống vượt rào (ví dụ DRM), từ đó giảm thiểu rủi ro pháp lý.
Đặc điểm cốt lõi của GPL là copyleft—yêu cầu các bản phân phối tiếp theo phải tiếp tục mã nguồn mở theo cùng giấy phép. Giấy phép MIT và Apache-2.0 linh hoạt hơn: cho phép sử dụng trong sản phẩm thương mại đóng mã nguồn miễn là giữ nguyên thông báo bản quyền và giấy phép.
Về mặt tương thích, Apache-2.0 và GPLv3 nhìn chung tương thích, nhưng có thể xung đột với “chỉ GPLv2”. Việc lựa chọn giấy phép nên dựa trên mục tiêu của đội ngũ: chọn MIT/Apache để tối đa hóa linh hoạt thương mại; chọn GPL để đảm bảo mọi đóng góp cộng đồng đều duy trì mã nguồn mở. Theo các báo cáo công khai (ví dụ GitHub Octoverse 2023), MIT, Apache và họ GPL vẫn chiếm ưu thế về mức độ sử dụng phổ biến.
Trong các tệp Solidity, nên ghi rõ mã định danh SPDX và bổ sung tệp LICENSE ở thư mục gốc kho lưu trữ khớp với phiên bản thực tế:
// SPDX-License-Identifier: GPL-3.0-or-later
Thứ nhất, cần đảm bảo các thư viện mà hợp đồng phụ thuộc tương thích với GPL để tránh trộn lẫn giấy phép không tương thích trong một hợp đồng. Thứ hai, đồng bộ hóa LICENSE, NOTICE và tuyên bố bản quyền trong kho trước khi triển khai. Thứ ba, công khai script dựng và hướng dẫn tái tạo thử nghiệm để cộng đồng thuận tiện kiểm toán và lặp lại.
Trong quá trình thẩm định dự án và kiểm toán hợp đồng tại Gate, các đội ngũ thường xác thực mã định danh SPDX và giấy phép kho lưu trữ nhằm đảm bảo chuỗi phụ thuộc không xung đột và giảm thiểu rủi ro tuân thủ sau khi triển khai.
Lựa chọn GPL đồng nghĩa với việc các fork cũng phải giữ nguyên mã nguồn mở, từ đó giảm rào cản gia nhập cho người mới và nâng cao hiệu quả hợp tác trong hệ sinh thái. Thương mại hóa không chỉ giới hạn ở việc bán phần mềm đóng mã nguồn; có thể tập trung vào dịch vụ quản lý, thương hiệu và vận hành, token quản trị, và hỗ trợ hệ sinh thái—chuyển lợi thế cạnh tranh từ “mã nguồn độc quyền” sang trải nghiệm sản phẩm và hiệu ứng mạng lưới.
Trong Web3, một số giao thức hàng đầu đã chuyển đổi một số phiên bản sang GPL-3.0 sau một khoảng thời gian nhất định, dẫn đến các fork tuân thủ và lặp lại tính năng. Cách làm này thúc đẩy đổi mới, cạnh tranh trong khuôn khổ giấy phép rõ ràng, nhưng đòi hỏi đội ngũ chủ động lên kế hoạch cho thương hiệu, miền giao diện, cung cấp thanh khoản và quản trị cộng đồng để tránh bị pha loãng quá nhanh do các fork.
AGPL (Affero General Public License) là biến thể mạnh hơn cho “sử dụng qua mạng”: nếu người dùng tương tác với phần mềm của bạn qua mạng, bạn phải cung cấp mã nguồn. Điều này đặc biệt quan trọng đối với giao diện Web3, dịch vụ lập chỉ mục và cổng dữ liệu. Nếu giao diện dApp của bạn sử dụng thành phần AGPL và triển khai dưới dạng dịch vụ công khai, bạn cũng phải công khai mã nguồn tương ứng.
LGPL (Lesser General Public License) phù hợp hơn với thư viện và thành phần; cho phép liên kết với chương trình đóng mã nguồn miễn là các chỉnh sửa đối với thư viện LGPL được công khai. Ứng dụng cấp trên vẫn có thể giữ độc quyền. Đối với ví hoặc plugin node, LGPL cân bằng giữa việc giữ thư viện mã nguồn mở và cho phép ứng dụng đóng mã nguồn.
Bước 1: Xác nhận phiên bản và tính tương thích. Ghi rõ GPLv2, GPLv3 hoặc “hoặc mới hơn”, đồng thời kiểm tra các phụ thuộc có tương thích với phiên bản đã chọn.
Bước 2: Giữ nguyên thông tin bản quyền và giấy phép. Bảo lưu ghi nhận tác giả gốc và nội dung giấy phép trong tệp nguồn cũng như README, bổ sung NOTICE nếu cần.
Bước 3: Mở mã nguồn tác phẩm phái sinh. Cung cấp cho người dùng toàn bộ mã nguồn, script dựng và hướng dẫn cài đặt để người khác có thể tái tạo sản phẩm của bạn.
Bước 4: Công khai rõ mã định danh SPDX. Thêm dòng SPDX vào từng tệp nguồn quan trọng và đặt tệp LICENSE ở thư mục gốc kho lưu trữ để đồng bộ.
Bước 5: Phân biệt giữa phân phối và sử dụng. Việc phát hành tập tin nhị phân, hình ảnh hoặc phần mềm đóng gói sẽ kích hoạt nghĩa vụ; nghiên cứu nội bộ thường không. Việc bytecode on-chain có được coi là “phân phối” hay không còn tùy cách hiểu—hãy tham khảo ý kiến pháp lý để làm rõ.
Bước 6: Lập tài liệu Software Bill of Materials (SBOM). Liệt kê tất cả các phụ thuộc và giấy phép để thuận tiện cho thẩm định, kiểm toán trên các nền tảng như Gate.
Những rủi ro chủ yếu bao gồm xung đột giấy phép và nghĩa vụ chưa thực hiện: sử dụng giấy phép không tương thích, không mở mã nguồn tác phẩm phái sinh, hoặc thiếu thông tin bản quyền/tuyên bố miễn trừ có thể dẫn đến gỡ mã nguồn (ví dụ DMCA), cản trở hợp tác hoặc làm tổn hại uy tín thương hiệu.
Khuyến nghị tuân thủ: Chọn giấy phép phù hợp mục tiêu kinh doanh ngay từ đầu dự án; sử dụng chiến lược kết hợp như AGPL cho giao diện, MIT/Apache cho dịch vụ; duy trì SBOM và checklist tuân thủ; kiểm toán bên thứ ba trước khi triển khai; tham khảo ý kiến pháp lý cho vấn đề trọng yếu. Các dự án có mục tiêu mở rộng trên nền tảng giao dịch nên ưu tiên tuân thủ giấy phép từ sớm để tránh rủi ro vận hành về sau.
GPL bảo vệ tính liên tục mã nguồn mở thông qua quy định copyleft—phù hợp với các dự án Web3 mong muốn các cải tiến cộng đồng quay trở lại hệ sinh thái. So với giấy phép MIT/Apache, GPL nhấn mạnh hơn việc giữ mã nguồn mở cho tác phẩm phái sinh; so với AGPL/LGPL, GPL tập trung nhiều hơn vào các trường hợp phân phối cục bộ. Thực hiện đúng mã định danh SPDX, tệp LICENSE, SBOM—kết hợp kiểm toán tuân thủ và lộ trình kinh doanh rõ ràng—giúp đội ngũ cân bằng giữa sự mở và khả năng thương mại hóa.
Không. GPL yêu cầu mọi tác phẩm phái sinh cũng phải được công khai mã nguồn theo cùng giấy phép—nguyên tắc gọi là “copyleft”. Nếu dự án của bạn có mã GPL, toàn bộ dự án phải tiếp tục mã nguồn mở. Nếu muốn thương mại hóa phần mềm đóng mã nguồn, hãy xác nhận giấy phép các phụ thuộc từ đầu hoặc xin phép tác giả gốc để sử dụng giấy phép kép.
Việc sử dụng riêng tư về lý thuyết không vi phạm GPL; tuy nhiên, ngay khi bạn phân phối hoặc triển khai (bao gồm cả dịch vụ trực tuyến), bạn phải tuân thủ yêu cầu mã nguồn mở. Nhiều nhà phát triển bỏ qua nghĩa vụ này và đối mặt rủi ro pháp lý về sau. Tốt nhất nên xác định rõ chiến lược giấy phép từ sớm để tránh thay đổi tốn kém về sau.
Nếu chỉ sử dụng nội bộ mà không phân phối, bạn không bắt buộc phải công khai mã nguồn. Tuy nhiên, nếu cung cấp phần mềm đã chỉnh sửa cho người dùng hoặc khách hàng—hoặc qua dịch vụ mạng—bạn cũng phải cung cấp mã nguồn và tóm tắt thay đổi. Điều này đặc biệt quan trọng với các dự án SaaS.
Khả năng thực thi pháp lý của GPL phụ thuộc vào từng khu vực pháp lý; trong Web3, việc thực thi yếu hơn do triển khai trên blockchain khó kiểm soát, thợ đào/node khó xác minh tuân thủ giấy phép. Tuy nhiên, vi phạm GPL có thể dẫn đến phản ứng cộng đồng hoặc bị fork dự án gây tổn hại uy tín—dù biện pháp pháp lý hạn chế. Khuyến nghị bạn nên chủ động tuân thủ để bảo vệ uy tín dự án.
Có—đây gọi là giấy phép kép hoặc đa giấy phép. Cộng đồng mã nguồn mở thường sử dụng mô hình này; ví dụ, cung cấp song song phiên bản GPL miễn phí/mã nguồn mở và phiên bản thương mại có trả phí. Lưu ý các giấy phép có thể xung đột; hãy ghi rõ phiên bản nào dùng giấy phép nào trong tài liệu dự án để tránh gây nhầm lẫn cho người dùng.


