"Open source" jadi istilah yang semua orang pakai tapi jarang didefinisikan dengan tepat. Buat sebagian orang, artinya kode yang bisa dibaca di GitHub. Buat yang lain, artinya free software. Buat lawyer perusahaan, artinya sederet kewajiban yang bisa memengaruhi cara produk didistribusikan.

Definisi-definisi itu nggak sama, dan bedanya penting. Repository publik tanpa lisensi bukan open source. Proyek dengan lisensi yang melarang penggunaan komersial juga bukan open source. Lisensilah yang mengubah kode sumber jadi software open source.

Panduan ini membahas sisi praktisnya: apa arti open source sebenarnya, bagaimana lisensi utama berbeda, cara memilih lisensi buat proyek kamu, dan apa yang perlu dilakukan saat memakai kode orang lain.

Disclaimer: ini gambaran teknis, bukan nasihat hukum. Kalau keputusan lisensi berdampak ke bisnis kamu, konsultasikan dengan lawyer yang paham lisensi software.

Apa arti open source sebenarnya

Open Source Initiative (OSI) memelihara Open Source Definition. Sebuah lisensi harus memenuhi kriteria di dalamnya untuk bisa disebut open source. Yang penting antara lain:

Free Software Foundation menjelaskan ide serupa lewat empat kebebasan:

  1. Menjalankan program untuk tujuan apa pun.
  2. Mempelajari cara kerjanya dan mengubahnya.
  3. Mendistribusikan salinan.
  4. Mendistribusikan versi modifikasi.

"Free" di sini berarti kebebasan, bukan harga. Kamu boleh menjual free software. Yang nggak boleh adalah mencabut kebebasan yang diberikan lisensi ke orang yang menerimanya.

Open source, free software, dan source-available

Istilahnya tumpang tindih, tapi nggak identik:

Redis, misalnya, mengubah lisensinya pada 2024. Source-nya masih bisa dilihat, tapi ketentuan barunya nggak disetujui OSI. Itu source-available, bukan open source. Bedanya bukan sekadar semantik; itu mengubah apa yang boleh kamu lakukan secara legal.

Kenapa lisensi bukan opsional

Copyright berlaku otomatis. Begitu kamu menulis kode, kamu memilikinya, dan orang lain nggak punya hak untuk memakai, menyalin, memodifikasi, atau mendistribusikannya kecuali kamu memberi izin.

Lisensi adalah izin itu. Lisensi memberi tahu orang apa yang boleh mereka lakukan dan dengan syarat apa. Tanpa lisensi, default-nya adalah "all rights reserved", walaupun repository-nya publik.

Ketentuan GitHub mengizinkan pengguna lain melihat dan melakukan fork repository publik lewat platform. Itu bukan lisensi open source. Itu nggak memberi mereka izin memakai kode kamu di produk mereka, memodifikasinya, atau mendistribusikannya ke tempat lain.

Jadi kalau kamu publish kode dan ingin orang lain memakainya, tambahkan lisensi. File lisensi bukan birokrasi; itu yang membuat niat kamu punya kekuatan legal.

Permissive vs copyleft

Sebagian besar lisensi open source masuk ke dua keluarga.

Lisensi permissive memberi sangat sedikit syarat. Kamu boleh memakai kode di software proprietary, memodifikasinya, dan mendistribusikan binary tanpa merilis source kamu sendiri. Biasanya kamu cukup mempertahankan copyright notice dan teks lisensi.

Contoh: MIT, Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC.

Lisensi copyleft mewajibkan derivative work tetap memakai lisensi yang sama. Kalau kamu mendistribusikan versi modifikasi, kamu juga harus menyediakan source dengan ketentuan yang sama. Ini dirancang supaya software tetap terbuka saat berpindah tangan.

Contoh: MPL-2.0, LGPL, GPL, AGPL.

Nggak ada keluarga yang "lebih baik". Lisensi permissive memaksimalkan adopsi, terutama di perusahaan yang nggak bisa membuka kode mereka. Lisensi copyleft melindungi commons dan memastikan perbaikan kembali ke proyek. Pilihan yang tepat tergantung apa yang kamu inginkan dari proyek itu.

Lisensi yang akan sering kamu temui

MIT

MIT singkat, tua, dan sangat umum. Lisensi ini mengizinkan siapa pun memakai, menyalin, memodifikasi, menggabungkan, mempublikasikan, mendistribusikan, mensublisensikan, dan menjual software, selama mereka menyertakan copyright notice dan permission notice.

MIT nggak punya patent grant eksplisit, dan itu salah satu alasan sebagian perusahaan lebih memilih Apache-2.0. MIT juga nggak memberi hak trademark. Kamu nggak boleh memakai nama proyek untuk mengesankan bahwa fork kamu didukung proyek aslinya.

MIT adalah default yang bagus buat library kecil, tool, dan proyek yang ingin adopsi maksimal dengan friksi minimal.

Apache-2.0

Apache-2.0 permissive, tapi lebih eksplisit daripada MIT. Isinya mencakup:

Patent grant adalah alasan utama perusahaan besar menyukainya. Ini mengurangi risiko contributor mengklaim paten di kemudian hari.

Apache-2.0 kompatibel dengan GPLv3, tapi nggak dengan GPLv2-only. Detail kompatibilitas ini penting saat kamu menggabungkan kode dari proyek berbeda.

BSD-2-Clause dan BSD-3-Clause

Lisensi BSD permissive dan mirip MIT. Versi dua klausul mewajibkan mempertahankan copyright notice dan disclaimer. Versi tiga klausul menambah klausul "no endorsement": kamu nggak boleh memakai nama penulis atau contributor untuk mempromosikan derivative kamu tanpa izin.

Lisensi ini umum di sistem operasi, kode networking, dan proyek yang ingin lisensi permissive sederhana dengan bahasa disclaimer yang eksplisit.

ISC

ISC secara fungsi mirip MIT tapi lebih pendek dan sederhana. Lisensi ini umum di utility kecil dan proyek yang dikelola orang yang lebih suka teks legal minimal.

MPL-2.0

Mozilla Public License 2.0 adalah jalan tengah. Copyleft-nya di level file: kalau kamu memodifikasi file yang dilindungi MPL dan mendistribusikannya, file itu harus tetap MPL. Kamu boleh menggabungkannya dengan file proprietary dalam karya yang lebih besar, selama file MPL tetap MPL.

MPL 2.0 juga menyertakan patent grant dan kompatibel dengan GPLv2-or-later, LGPL, dan AGPL lewat mekanisme secondary license.

Ini pilihan bagus buat library atau aplikasi di mana kamu ingin perbaikan pada inti tetap dibagikan, tapi nggak ingin memaksa semua file di produk yang lebih besar jadi terbuka.

LGPL

Lesser General Public License adalah copyleft lemah yang dirancang untuk library. Kamu boleh menautkan aplikasi proprietary ke library LGPL, asalkan kamu mengizinkan pengguna mengganti atau menautkan ulang library tersebut dan membagikan modifikasi yang kamu buat pada library itu sendiri.

LGPL 2.1 dan LGPL 3.0 berbeda di detail, terutama soal installation information dan combined works. Kalau kamu menyematkan library LGPL di perangkat atau produk proprietary, baca versi spesifiknya dengan teliti.

GPL-2.0 dan GPL-3.0

GNU General Public License adalah lisensi strong copyleft yang paling dikenal. Kalau kamu mendistribusikan derivative work, kamu harus melisensikan seluruh karya di bawah GPL dan menyediakan source code yang sesuai.

GPLv3 menambahkan beberapa hal dibanding GPLv2:

GPLv2-only dan GPLv3 nggak kompatibel satu sama lain. Proyek yang menyatakan "GPL-2.0-only" nggak bisa langsung mengambil kode GPLv3. Proyek yang menyatakan "GPL-2.0-or-later" memberi kamu opsi memakai ketentuan GPLv3.

GPL nggak melarang menjual software. Yang dilarang adalah mendistribusikan binary tanpa menyediakan source dan kebebasan yang sama ke penerimanya.

AGPL-3.0

Affero GPL adalah GPLv3 plus klausul network. Kalau kamu memodifikasi software dan membiarkan pengguna berinteraksi dengannya lewat jaringan, kamu harus menawarkan source yang sesuai kepada mereka.

Ini menutup "celah SaaS" di mana perusahaan memodifikasi software GPL, menjalankannya sebagai layanan, dan nggak pernah mendistribusikan binary. Kalau kamu membangun produk hosted di atas kode AGPL, kewajibannya bisa berlaku ke kamu.

Public domain dedication

Sebagian proyek mencoba melepaskan copyright sepenuhnya:

Public domain dedication memang simpel, tapi bisa canggung di yurisdiksi yang nggak mengizinkan penulis melepaskan hak moral tertentu. Lisensi permissive sering jadi pilihan yang lebih aman.

Lisensi Creative Commons

Lisensi Creative Commons dirancang untuk karya kreatif, bukan software. CC BY dan CC BY-SA umum dipakai untuk dokumentasi, artikel, gambar, dan dataset.

Jangan pakai lisensi CC untuk kode. Lisensi CC nggak membahas paten, distribusi source, atau linking seperti lisensi software. Kalau kamu ingin lisensi konten yang permissive, CC BY 4.0 adalah pilihan yang wajar. Kalau ingin share-alike, pakai CC BY-SA 4.0.

Lisensi CC dengan NC (non-commercial) atau ND (no derivatives) bukan open source dan bukan free software. Keduanya membatasi penggunaan dengan cara yang nggak diizinkan definisi OSI.

Source-available bukan open source

Sejumlah perusahaan sekarang mempublikasikan source dengan lisensi yang terlihat terbuka tapi nggak disetujui OSI. Contoh umum:

Lisensi-lisensi ini bisa jadi keputusan bisnis yang sah. Mereka cuma bukan open source. Kalau kebijakan perusahaan kamu bilang "open source only", dependency source-available perlu review terpisah.

Perbandingan singkat

LisensiKeluargaBoleh dipakai di produk proprietary?Wajib membagikan modifikasi?Patent grant
MITPermissiveYaTidakTidak eksplisit
Apache-2.0PermissiveYaTidakYa
BSD-3-ClausePermissiveYaTidakTidak eksplisit
ISCPermissiveYaTidakTidak eksplisit
MPL-2.0Weak copyleftYa, dengan syaratYa, untuk file MPLYa
LGPL-3.0Weak copyleftYa, dengan syaratYa, untuk libraryYa
GPL-3.0Strong copyleftYa, tapi derivative harus GPLYa, seluruh karyaYa
AGPL-3.0Strong copyleftYa, tapi network use memicu kewajiban sourceYa, seluruh karyaYa
Unlicense / 0BSDPublic domain-ishYaTidakTidak

Tabel ini ringkasan, bukan pengganti membaca lisensi. Frasa "dengan syarat" di baris copyleft itu bobotnya besar.

Cara memilih lisensi

Mulai dari hasil yang kamu inginkan.

Kamu ingin adopsi maksimal, termasuk oleh perusahaan. Pakai MIT atau Apache-2.0. Pilih Apache-2.0 kalau paten penting buat kamu atau pengguna kamu. Pilih MIT kalau kamu ingin teks terpendek dan paling familiar.

Kamu ingin perbaikan kembali ke proyek. Pakai GPL-3.0 untuk aplikasi, AGPL-3.0 untuk layanan jaringan, dan LGPL atau MPL-2.0 untuk library.

Kamu membuat library yang akan ditautkan produk proprietary. LGPL atau MPL-2.0 biasanya lebih praktis daripada GPL. Library GPL bikin banyak perusahaan mundur.

Kamu menerbitkan dokumentasi, gambar, atau data. Pakai CC BY 4.0 atau CC BY-SA 4.0. Jangan pakai lisensi software untuk prosa.

Kamu ingin bereksperimen dengan model komersial. Kamu bisa dual-license kode kamu sendiri: copyleft untuk komunitas, lisensi komersial untuk perusahaan yang nggak bisa memenuhi syarat. Ini hanya berhasil kalau kamu memegang copyright atau punya CLA yang mengizinkannya.

Alur keputusan sederhana:

  1. Ini kode atau konten? Kalau konten, pakai CC.
  2. Kamu ingin derivative proprietary diizinkan? Kalau ya, permissive.
  3. Kamu ingin modifikasi dibagikan? Kalau ya, copyleft.
  4. Ini library? Pertimbangkan LGPL atau MPL daripada GPL.
  5. Ini layanan jaringan? Pertimbangkan AGPL.
  6. Paten jadi perhatian? Utamakan Apache-2.0 atau lisensi dengan patent grant.

Memakai open source dengan benar

Memakai open source bukan berarti mengabaikan lisensinya. Checklist praktisnya:

Penggunaan komersial diizinkan oleh sebagian besar lisensi open source. "Open source" bukan berarti "non-komersial". Ini juga bukan berarti "tanpa dukungan" atau "gratis"; perusahaan menjual support, hosting, dan layanan di sekitar software open source setiap hari.

Mitos yang sering muncul

"Ada di GitHub, berarti open source." Bukan. Tanpa lisensi, default-nya all rights reserved. Repository publik nggak otomatis open source.

"MIT berarti aku nggak perlu atribusi." Bukan. MIT mewajibkan kamu menyertakan copyright notice dan permission notice. Kamu nggak harus mengiklankan proyeknya, tapi kamu nggak boleh menghapus notice-nya.

"GPL berarti aku nggak boleh menjual produk." Kamu boleh menjualnya. Kamu hanya harus menyediakan source dan kebebasan yang sama ke penerima.

"Copyleft itu anti-bisnis." Banyak perusahaan membangun bisnis sukses di atas software copyleft. Kewajibannya soal menjaga kode tetap terbuka, bukan mencegah pendapatan.

"Open source lebih aman." Open source memungkinkan lebih banyak orang memeriksa kode, tapi pemeriksaan nggak dijamin terjadi. Keamanan tergantung maintenance, review, dan cara proyek dipakai.

"Lisensinya bisa diganti kapan saja." Hanya kalau kamu memegang copyright atau punya izin dari setiap contributor. Ini alasan banyak proyek memakai CLA atau DCO sejak awal.

Kalau kamu mengelola proyek

Beberapa kebiasaan bikin urusan lisensi membosankan, dan itu tujuannya:

  1. Tambahkan file LICENSE berisi teks lisensi lengkap.
  2. Tambahkan bagian lisensi singkat di README.
  3. Pakai identifier SPDX di metadata package dan, opsional, di header source:
SPDX-License-Identifier: MIT
  1. Tentukan apakah maksudnya GPL-2.0-only atau GPL-2.0-or-later, dan konsisten.
  2. Simpan file NOTICE kalau kamu memakai dependency Apache-2.0.
  3. Tambahkan aturan kontribusi. DCO ringan; CLA memberi lebih banyak fleksibilitas untuk relicensing di masa depan.
  4. Kalau kamu menerima kontribusi, pastikan lisensi inbound-nya jelas. "Inbound = outbound" adalah default yang umum.

Kalau waktu maintenance kamu terbatas, pilih lisensi yang nggak akan kamu sesali dalam lima tahun. Mengubahnya nanti jauh lebih sulit daripada memilihnya dengan hati-hati sekarang.

Penutup

Open source bukan satu hal tunggal. Ini kumpulan izin yang didukung hukum copyright, dan lisensi adalah tempat izin itu hidup. Memahami beda permissive, weak copyleft, strong copyleft, dan source-available sudah cukup untuk menghindari sebagian besar kejutan.

Buat sebagian besar proyek kecil, MIT atau Apache-2.0 adalah jawaban yang tepat. Untuk library yang akan disematkan perusahaan, LGPL atau MPL-2.0 sering lebih realistis daripada GPL. Untuk layanan yang ingin perbaikannya dibagikan, AGPL adalah alat yang dirancang untuk itu.

Baca lisensinya sebelum kamu bergantung padanya. Pertahankan notice saat memakai kode. Dan kalau kamu menerbitkan sesuatu yang ingin dipakai orang lain, tambahkan lisensi. Repository publik tanpa lisensi cuma repository publik.

Sumber