Kompatibilitas berarti 'bisakah digabung lalu didistribusikan'
Dua lisensi disebut kompatibel jika kode dari masing-masing lisensi dapat digabung menjadi satu program dan didistribusikan sambil memenuhi syarat kedua lisensi sekaligus. Jika salah satu melarang syarat pihak lain, keduanya tidak kompatibel. Misalnya, GPL mewajibkan 'jangan menambahkan batasan', sehingga kode berlisensi yang memiliki syarat tambahan yang tidak diizinkan GPL tidak dapat masuk ke program GPL.
Kompatibilitas punya arah
Kode permisif dapat masuk ke proyek copyleft, tetapi tidak sebaliknya.
- Kode MIT → proyek GPL: boleh. Asalkan pemberitahuan MIT dipertahankan, seluruh hasil gabungan dapat didistribusikan sebagai GPL.
- Kode GPL → proyek MIT: seluruh hasil gabungan harus mengikuti syarat GPL, sehingga tidak dapat tetap menjadi 'proyek MIT'.
Karena itu tabel kompatibilitas selalu dibaca sebagai 'kode apa → ke proyek apa'.
Kombinasi umum
Apache-2.0 dan GPL
FSF memandang Apache-2.0 kompatibel dengan GPL-3.0 tetapi tidak dengan GPL-2.0. Sebab, klausul penghentian paten dan ganti rugi Apache-2.0 merupakan syarat tambahan yang tidak ada di GPL-2.0. GPL-3.0 sejak tahap perancangan dibuat untuk menyelesaikan masalah ini. Karena itu, proyek GPL-2.0-or-later dapat memakai kode Apache-2.0 jika hasil gabungannya didistribusikan sebagai GPL-3.0.
MPL-2.0 dan lisensi GNU
Pasal 1.12 MPL-2.0 mendefinisikan GPL-2.0·LGPL-2.1·AGPL-3.0 dan versi sesudahnya sebagai 'Secondary License', dan Pasal 3.3 memungkinkan Larger Work yang menggabungkan kode MPL dengan kode-kode itu didistribusikan di bawah lisensi GNU. Pengecualiannya adalah jika penulis asli memasang Exhibit B ('Incompatible With Secondary Licenses').
Pustaka LGPL dan aplikasi tertutup
Pustaka LGPL dapat dipakai di aplikasi tertutup. Sebagai gantinya, pengguna harus bisa mengganti pustaka dengan versi yang dimodifikasi (paling mudah lewat tautan dinamis), dan sumber serta pemberitahuan lisensi bagian pustaka harus disediakan. Jika kode LGPL disalin dan dicampur ke sumber aplikasi, ceritanya lain: hasil gabungan harus mengikuti syarat LGPL/GPL.
GPL-3.0 dan AGPL-3.0
Kedua lisensi secara tegas saling mengizinkan penggabungan lewat Pasal 13 masing-masing. Dalam hasil gabungan, bagian GPL tetap mengikuti syarat GPL, dan bagian AGPL tetap mengikuti syarat AGPL, termasuk syarat penyediaan sumber lewat jaringan.
EPL-2.0 dan GPL
EPL-2.0 pada dasarnya tidak kompatibel dengan GPL, tetapi jika penulis asli menetapkan GPL dan sebagainya sebagai Secondary License lewat Exhibit A, penggabungan menjadi mungkin.
| Kode yang diambil | Aplikasi tertutup | Proyek MIT | GPL-2.0-only | GPL-3.0 |
|---|---|---|---|---|
| MIT·BSD·ISC | Boleh (pemberitahuan) | Boleh | Boleh | Boleh |
| Apache-2.0 | Boleh (pemberitahuan·NOTICE) | Boleh | Tidak boleh | Boleh |
| MPL-2.0 | Bersyarat (buka file) | Bersyarat | Bersyarat (Secondary) | Bersyarat (Secondary) |
| LGPL-3.0 | Bersyarat (penautan) | Bersyarat (penautan) | Tidak boleh | Boleh |
| GPL-3.0 | Tidak boleh | Tidak boleh | Tidak boleh | Boleh |
Sampai mana yang disebut 'penggabungan'
Masalah kompatibilitas muncul saat kode digabung menjadi satu program. FSF memandang kode yang ditautkan ke file eksekusi yang sama atau berbagi struktur data internal yang kompleks sebagai satu program, sedangkan komunikasi umum antarprogram terpisah seperti pipe, soket, dan argumen baris perintah biasanya dianggap 'agregat (aggregate)' dari program-program terpisah. Namun batas ini belum dipastikan oleh putusan pengadilan sehingga tafsirannya berbeda-beda. Memuat beberapa program bersama dalam satu distribusi pada dirinya sendiri bukanlah penggabungan.
Urutan praktis
- Buat daftar dependensi (dengan fitur laporan lisensi manajer paket atau alat SBOM).
- Rapikan lisensi setiap dependensi dengan pengenal SPDX.
- Periksa awal kombinasinya dengan lisensi proyek Anda di pemeriksa kompatibilitas.
- Untuk kombinasi 'bersyarat', periksa syaratnya (pemberitahuan, cara penautan, ada tidaknya Secondary License) di teks lisensi.
- Jika ada kombinasi yang tidak boleh, ganti dependensi, pisahkan program, atau sesuaikan lisensi Anda.
Artikel ini adalah informasi umum, bukan nasihat hukum. Untuk keputusan penting, konsultasikan dengan ahli.
Sumber
- FAQ lisensi GNU (matriks kompatibilitas, MereAggregation) — https://www.gnu.org/licenses/gpl-faq.html
- FSF, Various Licenses and Comments about Them — https://www.gnu.org/licenses/license-list.html
- Apache Software Foundation, GPL Compatibility — https://www.apache.org/licenses/GPL-compatibility.html
- Mozilla, MPL 2.0 FAQ — https://www.mozilla.org/en-US/MPL/2.0/FAQ/
- Eclipse Foundation, EPL 2.0 FAQ — https://www.eclipse.org/legal/epl-2.0/faq/