Apa itu SPDX
SPDX (Software Package Data Exchange) adalah proyek di bawah Linux Foundation, yaitu standar untuk menyatakan komponen perangkat lunak dan informasi lisensinya agar dapat dibaca mesin. Pada 2021 SPDX menjadi standar internasional ISO/IEC 5962:2021. Bagian yang paling banyak dipakai adalah pengenal pendek dalam SPDX License List. Ini adalah kesepakatan untuk menulis MIT saja sebagai ganti nama yang beragam seperti 'MIT License', 'The MIT license', atau 'Lisensi MIT'.
Dua baris header file
Jika dua baris berikut dimasukkan sebagai komentar di bagian paling atas file sumber, manusia maupun alat dapat langsung mengetahui pemegang hak cipta dan lisensi file itu.
// SPDX-FileCopyrightText: 2026 Jane Doe <jane@example.com>
// SPDX-License-Identifier: MIT
SPDX-License-Identifierberisi pengenal atau ekspresi lisensi (MIT OR Apache-2.0).SPDX-FileCopyrightTextadalah pemberitahuan hak cipta. Jika pemegangnya lebih dari satu, tulis beberapa baris.- Kernel Linux mulai 2017 menerapkan cara ini, yaitu hanya satu baris sebagai ganti pemberitahuan lisensi yang panjang, sehingga ribuan baris boilerplate yang berulang berkurang.
Tab Header file di generator membuat dua baris ini dalam 7 gaya komentar.
Waspadai pengenal yang usang
Sejak SPDX License List 3.0 (Desember 2017), klausul versi lisensi GNU dinyatakan di dalam pengenal.
| Pengenal usang | Pengenal saat ini |
|---|---|
GPL-2.0 | GPL-2.0-only |
GPL-2.0+ | GPL-2.0-or-later |
GPL-3.0 | GPL-3.0-only |
LGPL-2.1 | LGPL-2.1-only |
AGPL-3.0 | AGPL-3.0-only |
Jika hanya ditulis GPL-3.0, tidak dapat diketahui apakah 'only' atau 'or later'. Perbedaan kedua cara itu dirangkum di only vs or-later.
Metadata paket
Sebagian besar manajer paket menerima pengenal atau ekspresi SPDX.
| Ekosistem | File | Contoh |
|---|---|---|
| npm | package.json | "license": "MIT" · untuk yang tertutup "UNLICENSED" |
| Rust | Cargo.toml | license = "MIT OR Apache-2.0" |
| Python | pyproject.toml | license = "Apache-2.0" (PEP 639) |
| Maven | pom.xml | Nama dan URL di dalam <licenses> |
UNLICENSED di npm berarti sesuatu yang sama sekali berbeda dari 'Unlicense', yaitu tanda paket tertutup yang tidak mengizinkan penggunaan. Ejaannya mirip sehingga kesalahan sering terjadi.
REUSE: membuat seluruh repositori dapat dibaca mesin
Spesifikasi REUSE dari Free Software Foundation Europe (FSFE) menetapkan cara menerapkan header SPDX secara konsisten di seluruh repositori.
- Taruh semua teks lisensi di folder
LICENSES/dengan namaPengenalSPDX.txt(misalnyaLICENSES/MIT.txt). - Masukkan
SPDX-FileCopyrightTextdanSPDX-License-Identifierke setiap file. - Untuk file yang tidak dapat diberi komentar (gambar, JSON, dll.), tulis informasinya di file pendamping
namafile.licenseatau diREUSE.tomldi akar repositori. - Periksa dengan alat
reuse lintapakah ada file yang terlewat.
Tips praktis
- Tulis pengenal persis seperti di daftar dengan memperhatikan huruf besar-kecil (
Apache-2.0, bukanapache2). - Lisensi buatan sendiri yang tidak ada di daftar ditulis dengan awalan
LicenseRef-(misalnyaLicenseRef-Proprietary). - Jika hanya ada pengenal tanpa teks lisensi, sulit dianggap kewajiban pemberitahuan telah dipenuhi. Sediakan file teks lisensi secara terpisah.
Artikel ini adalah informasi umum, bukan nasihat hukum. Untuk keputusan penting, konsultasikan dengan ahli.
Sumber
- SPDX License List — https://spdx.org/licenses/
- SPDX Specification, Annex: Using SPDX short identifiers in source files — https://spdx.github.io/spdx-spec/v2.3/using-SPDX-short-identifiers-in-source-files/
- REUSE Specification — https://reuse.software/spec/
- npm Docs, package.json license — https://docs.npmjs.com/cli/configuring-npm/package-json#license
- PEP 639 — https://peps.python.org/pep-0639/