
GNU General Public License (sering disebut "GPL") merupakan lisensi perangkat lunak open-source yang sangat menonjol. Lisensi ini mewajibkan bahwa setiap kali kode digunakan, dimodifikasi, atau didistribusikan, kode sumber tersebut harus tetap terbuka dan dibagikan dengan ketentuan lisensi yang sama. GPL adalah salah satu lisensi paling berpengaruh di ekosistem open-source.
Lisensi open-source mendefinisikan syarat di mana seorang penulis mengizinkan pihak lain menggunakan dan memodifikasi kodenya—mirip seperti berbagi resep dan memperbolehkan perbaikan. GPL mensyaratkan setiap versi "resep" yang telah diperbaiki juga dipublikasikan dan dibagikan dengan aturan identik. Ketentuan timbal balik ini memastikan komunitas terus memperoleh manfaat dari setiap pengembangan.
Pada dasarnya, GPL menerapkan konsep "copyleft", yang berarti "hak cipta timbal balik": ketika Anda menggunakan atau memodifikasi kode yang dibuka oleh pihak lain, setiap distribusi atas perubahan Anda juga harus terbuka, serta wajib mempertahankan pemberitahuan hak cipta dan teks lisensi asli.
Prinsip-prinsip utama antara lain:
Kernel Linux telah lama menggunakan GPL-2.0 (hingga 2025), menjadikannya contoh penerapan GPL yang paling dikenal luas.
GPL menentukan apakah Anda dapat mendistribusikan perangkat lunak yang menggunakan kode open-source dalam bentuk closed-source, atau Anda harus membuka kode sumber saat mendistribusikan proyek Anda. Dalam Web3, kewajiban GPL dapat berlaku pada node client, dompet, frontend, dan smart contract.
Contohnya, jika frontend dApp Anda mengintegrasikan komponen berlisensi GPL dan Anda mendistribusikan versi eksekusi kepada pengguna, Anda mungkin diwajibkan merilis kode sumber frontend dan mempertahankan seluruh pemberitahuan asli. Hal ini mendorong transparansi dalam kolaborasi, namun dapat membatasi model bisnis closed-source.
Di on-chain, praktik open-source meningkatkan auditabilitas dan keamanan. Banyak tim memilih merilis kode penting untuk membangun kepercayaan, namun tetap memperhatikan kecocokan lisensi dengan strategi produk mereka.
Smart contract umumnya ditulis dalam Solidity, dengan lisensi yang dicantumkan di bagian atas file melalui SPDX-License-Identifier (misal, "SPDX-License-Identifier: GPL-3.0-or-later"). Persyaratan lisensi timbal balik GPL menimbulkan beberapa pertimbangan untuk smart contract:
Pertama, Distribusi: Proses kompilasi dan deployment kontrak di on-chain umumnya dianggap sebagai distribusi publik. Jika kontrak Anda menyertakan atau memodifikasi kode GPL, deployment publik dapat mewajibkan Anda membuka modifikasi tersebut. Apakah hal ini termasuk distribusi bergantung pada konteks—evaluasi sejak tahap desain sangat penting.
Kedua, Linking dan Derivasi: Pewarisan kontrak atau pemanggilan library sering dianggap sebagai pembuatan karya turunan. Jika Anda mewarisi dari kontrak berlisensi GPL, kontrak yang Anda distribusikan harus tunduk pada lisensi yang sama.
Ketiga, Praktik Umum: Banyak tim memilih lisensi yang lebih permisif seperti MIT atau Apache untuk kontrak inti guna mengurangi kewajiban downstream. Jika menggunakan GPL, pastikan kode sumber, pemberitahuan hak cipta, dan instruksi build tersedia lengkap di repository Anda agar audit dan reuse lebih mudah.
Perbedaan utama GPL, MIT, dan Apache terletak pada kekuatan persyaratan timbal baliknya.
Singkatnya: Pilih GPL untuk kolaborasi terbuka maksimal dan kewajiban berbagi peningkatan; pilih MIT atau Apache untuk fleksibilitas lebih dalam komersialisasi open maupun closed-source.
Langkah 1: Tempatkan file LICENSE (teks lengkap GPL) di direktori root repository Anda, dan cantumkan detail lisensi pada README.
Langkah 2: Tambahkan header SPDX-License-Identifier (misal, "SPDX-License-Identifier: GPL-3.0-or-later") di bagian atas setiap file sumber agar toolchain dapat mengidentifikasi lisensi.
Langkah 3: Pertahankan pernyataan hak cipta dan lisensi penulis asli; tandai perubahan Anda sendiri dengan tanggal, nama, dan ringkasan.
Langkah 4: Sediakan cara memperoleh kode sumber dari setiap executable yang didistribusikan—misalnya, publikasikan kode sumber, skrip build, dan dokumentasi dependensi guna memastikan replikasi.
Langkah 5: Tinjau dependensi pihak ketiga untuk kompatibilitas lisensi; gunakan LGPL (lebih cocok untuk library) jika diperlukan.
Langkah 6: Lakukan review kepatuhan sebelum go-live; konsultasikan dengan penasihat hukum jika proyek bersifat komersial untuk meminimalkan risiko.
Versi utama adalah v2 dan v3:
"Or later" vs. "Only": Memilih "GPL-3.0-or-later" memungkinkan Anda mengadopsi versi selanjutnya untuk fleksibilitas; "only" mengunci versi demi manajemen kompatibilitas yang lebih baik.
Selain itu, LGPL diperuntukkan bagi library (memungkinkan linking dengan ketentuan lebih permisif), sedangkan AGPL memperluas kewajiban open-source ke perangkat lunak yang disediakan melalui jaringan—layanan backend Web3 dan interaksi frontend perlu memperhatikan pemicu AGPL.
Bisa—GPL memperbolehkan penggunaan komersial. Namun, saat Anda mendistribusikan karya turunan yang mengandung kode GPL, Anda wajib membuka kode sumber dan mempertahankan seluruh pemberitahuan. Strategi umum perusahaan meliputi:
Kesalahpahaman yang sering muncul antara lain:
Risiko meliputi pelanggaran dan sengketa kepatuhan, yang dapat memengaruhi pendanaan, listing, atau kemitraan. Proyek yang menangani dana atau keamanan kontrak sebaiknya menyelesaikan desain lisensi dan audit sumber sejak awal.
Jika tujuan Anda adalah mendorong kolaborasi komunitas, memastikan setiap peningkatan dikontribusikan kembali, dan menjaga auditabilitas, GPL adalah pilihan yang kuat. Jika Anda membutuhkan fleksibilitas lebih untuk model closed-source atau dual licensing, MIT atau Apache memberikan opsi yang lebih luas. Pastikan konsistensi dan keterlacakan lisensi untuk smart contract dan frontend—sertakan file LICENSE dan header SPDX di repository serta standarkan jalur distribusi kode sumber. Perhatikan perbedaan versi, kompatibilitas dependensi, dan apakah skenario Anda termasuk distribusi atau derivasi. Selalu lakukan pemeriksaan kepatuhan dan konsultasikan dengan penasihat hukum sebelum komersialisasi. Dengan strategi lisensi yang jelas, Anda dapat mendorong kolaborasi yang andal dan kepatuhan regulasi di ekosistem Web3.
Bisa—namun Anda juga harus merilis kode turunan Anda sebagai open-source. Desain “viral” GPL berarti jika Anda mengembangkan produk berbasis kode GPL dan menjualnya, Anda diwajibkan mempublikasikan kode sumber Anda di bawah ketentuan lisensi yang sama. Persyaratan inti ini membuat GPL tidak kompatibel dengan model bisnis closed-source. Jika bisnis Anda bergantung pada kerahasiaan kode, pertimbangkan menggunakan library berlisensi Apache atau MIT.
Risiko utama adalah potensi tindakan hukum dari penulis asli atas pelanggaran hak cipta. Meskipun hukum smart contract masih berkembang, pengadilan di banyak yurisdiksi telah menegakkan kepatuhan GPL—pelanggaran dapat berujung pada ganti rugi. Selain itu, jika Anda mencari pendanaan atau akuisisi, investor bisa ragu karena risiko GPL. Libatkan penasihat hukum sejak awal atau pilih lisensi yang lebih permisif untuk menurunkan risiko.
Ini istilah umum untuk menggambarkan efek “viral” GPL. Begitu Anda menyertakan kode GPL dalam proyek—bahkan secara tidak langsung—seluruh proyek bisa diwajibkan tunduk pada ketentuan GPL (dalam kasus tertentu). Untuk pengembang yang ingin menjaga kode tetap proprietary, “keterpaksaan keterbukaan” ini terasa seperti proyek mereka “terkontaminasi.” Ini bukan kelemahan, melainkan desain yang disengaja untuk melindungi prinsip perangkat lunak bebas.
Tergantung pada cara Anda berinteraksi dengan library dan versi GPL yang berlaku. Jika Anda hanya memanggil API secara dinamis (misal, layanan eksternal), umumnya Anda tidak perlu membuka kode sumber proyek. Namun, linking statis atau memodifikasi dan menggunakan kode GPL akan mewajibkan Anda merilis kode sumber proyek di bawah GPL. Konsultasikan dengan pengacara open-source untuk memperjelas apa yang dimaksud dengan “karya turunan” dan menghindari ambiguitas hukum.
Anda harus mematuhi kedua lisensi—hal ini bisa menjadi kompleks. GPL mewajibkan open-source seluruh karya turunan; MIT mengizinkan penggunaan closed-source—kedua ketentuan ini bertentangan. Dalam praktiknya, proyek Anda harus tunduk pada lisensi yang “lebih ketat” (GPL) untuk kompatibilitas. Hindari mencampur lisensi bila memungkinkan, atau pisahkan modul berdasarkan tipe lisensi untuk meminimalkan tantangan kepatuhan.


