Panduan · 04

Lisensi ganda (multi-lisensi)

Dua jenis lisensi ganda yang menawarkan dua lisensi atau lebih untuk satu kode, arti ekspresi SPDX OR·AND·WITH, alasan CLA diperlukan, dan hal yang perlu diperhatikan.

Terakhir diperiksa: 2026-09-23

Alasan memberi beberapa lisensi untuk satu kode

Pemegang hak cipta dapat mengizinkan kode yang sama dengan beberapa syarat sekaligus. Penerima cukup memilih salah satu dan mematuhi syaratnya. Tujuannya secara garis besar ada dua.

  1. Memperluas kompatibilitas — agar cocok dengan berbagai ekosistem yang berbeda.
  2. Model bisnis — merilis sebagai open source sekaligus menjual lisensi komersial terpisah.

Jenis 1: dua lisensi permisif sekaligus — MIT OR Apache-2.0

Cara ini dipakai bahasa Rust dan sebagian besar crate Rust. Pengguna memilih yang lebih nyaman antara MIT atau Apache-2.0.

Karena mendapatkan kedua keuntungan sekaligus, cara ini populer di kalangan penulis pustaka. Kebiasaannya adalah menaruh dua file, LICENSE-MIT dan LICENSE-APACHE, di repositori.

Jenis 2: copyleft + komersial — 'pakai GPL, atau bayar'

Kode dirilis sebagai GPL·AGPL, dan kepada perusahaan yang tidak ingin menanggung kewajiban membuka sumber dijual lisensi komersial lewat kontrak terpisah. MySQL (GPL + lisensi komersial Oracle) dan Qt (LGPL-3.0/GPL + komersial) adalah contoh utamanya.

Model ini hanya berjalan jika pemegang hak cipta memiliki hak atas seluruh kode. Sebab, untuk kode yang dikontribusikan pihak luar hanya di bawah GPL, pemegang hak cipta tidak berhak menjualnya dengan lisensi komersial.

CLA dan DCO

Cara menulis dengan ekspresi SPDX

Hubungan antarbeberapa lisensi ditulis dengan ekspresi lisensi SPDX.

EkspresiArtiContoh
A OR BPilih dan ikuti salah satu (lisensi ganda pilihan)MIT OR Apache-2.0
A AND BKeduanya harus diikuti (saat bagian yang berbeda tercampur)MIT AND BSD-3-Clause
A WITH pengecualianMenambahkan klausul pengecualian pada lisensiGPL-2.0-only WITH Linux-syscall-note
Tanda kurungMenentukan urutan penggabungan(MIT OR Apache-2.0) AND Unicode-3.0

Jika OR dan AND tertukar, artinya menjadi berlawanan. Jika pengguna boleh memilih, pakai OR; jika semuanya harus dipatuhi, pakai AND.

Hal yang perlu diperhatikan

Contoh penerapan

Untuk menerapkan lisensi ganda gaya Rust, unduh file MIT dan Apache-2.0 masing-masing dari generator, simpan sebagai LICENSE-MIT dan LICENSE-APACHE, lalu tulis license = "MIT OR Apache-2.0" di metadata. Di header setiap file, tulis SPDX-License-Identifier: MIT OR Apache-2.0.

Artikel ini adalah informasi umum, bukan nasihat hukum. Untuk keputusan penting, konsultasikan dengan ahli.

Sumber