Mengapa saya harus menyimpan lisensi perangkat lunak sumber terbuka saya di root?

10

Hampir semua lisensi perangkat lunak open source membutuhkan (atau setidaknya pengacara umumnya menyarankan mereka mengharuskan) pengguna untuk memasukkan lisensi penuh ke dalam root proyek yang mereka lindungi.

Seorang pengacara yang saya ajak bicara mengatakan ini adalah peninggalan zaman CD, ketika itu perlu bahwa lisensi penuh dimasukkan dalam kasus permata.

Tapi hari ini, kita hidup di zaman awan. Mengapa saya tidak bisa, misalnya, hanya meng-host lisensi lengkap di situs web saya, dan memasukkan judul + URL lisensi itu di header file sumber saya?

Bonus: Jika disetujui secara umum bahwa lisensi yang ditetapkan harus tetap utuh di root, mengapa OSI FSF tidak menyetujui lisensi yang dapat Anda rujuk dengan URL, dan apa yang membuat seseorang tidak dapat membuat lisensi itu?

samthebrand
sumber
4
Satu masalah yang muncul di pikiran adalah bahwa URL dapat berubah atau dihentikan.
Aaron Kurtzhals
6
'Internet tidak ada di mana-mana' akan menjadi alasan yang paling jelas (bahkan jika seseorang memiliki internet ketika mereka mengunduh perangkat lunak Anda, itu mungkin tidak tersedia bagi mereka ketika mereka ingin memperpanjang / memodifikasinya).
TZHX
9
Apakah Anda bertanya mengapa LISENSI SELURUH MEMBUTUHKAN root, atau mengapa seluruh lisensi perlu dimasukkan dalam ROOT?
DougM
Hanya menunjukkan bahwa kita tampaknya membicarakan dikotomi palsu di sini; Anda bertanya mengapa lisensi harus di root dan mengapa tidak bisa online di URL? Ada opsi ketiga yang tidak ada yang disebutkan; lisensi dibundel dengan perangkat lunak tetapi dalam direktori "docs" atau sesuatu dan komentar di header file kode mencerminkan itu. Saya setuju dengan alasan yang baik mengapa Lisensi harus dibundel dengan perangkat lunak, tetapi itu tidak berhenti di direktori dokumen.
James
4
Alasannya hampir selalu di root adalah sehingga mudah ditemukan. Ketika saya mengunduh proyek Anda, saya menelusuri root, dan salah satu hal pertama yang saya lihat adalah lisensi. Sesederhana itu
JohnL

Jawaban:

24

Dari FAQ GPL (tetapi saran ini berlaku untuk semua lisensi):

Mengapa GPL mensyaratkan termasuk salinan GPL dengan setiap salinan program?

Memasukkan salinan lisensi dengan karya itu penting agar setiap orang yang mendapatkan salinan program dapat mengetahui apa hak-haknya.

Mungkin tergoda untuk memasukkan URL yang merujuk pada lisensi, alih-alih lisensi itu sendiri. Tetapi Anda tidak dapat memastikan bahwa URL akan tetap valid, lima tahun atau sepuluh tahun dari sekarang. Dua puluh tahun dari sekarang, URL yang kita kenal sekarang mungkin sudah tidak ada.

Satu-satunya cara untuk memastikan bahwa orang yang memiliki salinan program akan terus dapat melihat lisensi, terlepas dari semua perubahan yang akan terjadi dalam jaringan, adalah dengan memasukkan salinan lisensi dalam program.

(penekanan milikku)

Saat situs yang Anda lisensikan lisensi turun atau mengubah jalur URL-nya, orang-orang yang memiliki salinan perangkat lunak Anda tidak dapat lagi memverifikasi hak-hak apa yang dapat mereka gunakan dengan aman. Anggaplah Anda bisa menjamin bahwa URL yang tepat akan selamanya online: kemampuan bagi pengguna untuk memverifikasi bahwa penggunaan perangkat lunak Anda oleh mereka masih legal tergantung pada kemampuan untuk terhubung ke URL tersebut. Meskipun persyaratan ini mungkin tidak memberatkan di kota / negara / planet tertentu Anda, persyaratan ini mungkin memberatkan di tempat lain. Anda tidak boleh memaksakan persyaratan ini, terutama ketika solusi (termasuk teks lisensi penuh) sepele.

Anda dapat menjawab keluhan ini dengan mengatakan, "Jadi apa? Jika URLnya turun atau tidak dapat diakses, deskriptor yang tidak ambigu seperti 'GNU GPL v3' harus memadai. Salinan lengkap teks GPL banyak, pengguna dapat mencari ke atas lisensi sendiri. " Beberapa masalah segera muncul dalam pikiran:

  1. Ini tidak menggeneralisasi ke pengidentifikasi lisensi yang kurang jelas (frasa "lisensi BSD" terlintas dalam pikiran).

  2. Ini tidak menggeneralisasi dengan baik untuk lisensi yang kurang umum atau telah dikustomisasi ("GPL dengan menghubungkan pengecualian" muncul di pikiran: yang menghubungkan pengecualian?). Seberapa umum lisensi perlu sebelum masuk akal untuk mengharapkan pengguna menemukannya secara andal dengan nama?

  3. Ini masih mengharuskan pengguna untuk memiliki koneksi Internet, yang mungkin tidak terjadi, bahkan jika mereka memiliki koneksi pada saat mereka mendapatkan perangkat lunak. (Dan mereka mungkin tidak memiliki akses Internet ketika mereka mendapatkan perangkat lunak: "usia CD" belum berakhir di banyak bagian dunia. Sebagai kasus tambahan, pertimbangkan populasi nasional yang memiliki akses Internet luas tetapi menyensor sebagian besar dari itu. .) Konsekuensi dari perangkat lunak yang dapat didistribusikan ulang secara bebas adalah bahwa penerima mungkin tidak menerima salinan perangkat lunak Anda langsung dari Anda atau melalui saluran distribusi yang semula Anda antisipasi.

Satu argumen terakhir terhadap tautan lisensi dicatat oleh komentar MichaelT di bawah ini: itu dapat memungkinkan Anda untuk mengubah lisensi secara dinamis dan surut. Ini bisa dilakukan dengan sengaja, tetapi bisa juga dilakukan secara tidak sengaja, jika Anda mengubah lisensi antara versi perangkat lunak, tetapi menggunakan tautan lisensi yang sama untuk kedua versi, sehingga merusak lisensi lama Anda dari keberadaan. Pergantian seperti itu akan menambah kesulitan bagi orang yang perlu membuktikan bahwa mereka mendapatkan salinan yang lebih lama di bawah lisensi yang berbeda dari versi saat ini.

Jadi mengapa saya harus menyimpan lisensi di root proyek?

Saya bukan pengacara, tapi aku belum pernah melihat setiap argumen yang Anda lakukan harus tetap lisensi di root proyek. Bahkan GPL, yang menentukan bahwa lisensi harus menyertai setiap salinan karya, tidak membahas bagaimana lisensi tersebut harus menyertai karya tersebut. (Ini mungkin karena GPL dapat diterapkan dalam konteks non-perangkat lunak, di mana gagasan "direktori root" tidak bermakna.)

Menyimpan lisensi di direktori root mungkin merupakan ide yang bagus karena memaksimalkan kemungkinan pengguna akan melihatnya, dan dengan demikian meminimalkan frustrasi pengguna dan kemungkinan keluhan terhadap Anda karena mencoba menyembunyikan lisensi di beberapa direktori yang tidak jelas. Jika Anda memiliki banyak lisensi, mungkin lebih masuk akal untuk menempatkan semuanya di folder mereka sendiri, dan menyertakan proyek README yang jelas yang berisi jalur file untuk menemukan lisensi untuk setiap komponen.

Menempatkan lisensi Anda di direktori root adalah praktik yang sangat membantu juga karena hal itu dapat membingungkan lisensi modul yang dilisensikan berbeda sehingga berfungsi secara keseluruhan. Misalkan proyek saya FooProj menggunakan modul BarMod yang berdiri sendiri. FooProj mungkin berlisensi GPL, sedangkan modul mandiri mungkin berlisensi MIT. Ketika saya pertama kali membuka FooProj, saya melihat salinan GPL di root dan memahami bahwa pekerjaan secara keseluruhan adalah lisensi GPL. Ketika saya masuk ke folder untuk BarMod, saya melihat file lisensi baru di sana, dan saya mengerti bahwa isi folder ini adalah berlisensi MIT. Tentu saja, ini hanya bantuan yang membantu; Anda harus selalu menunjukkan lisensi modul Anda secara eksplisit dalam README, PEMBERITAHUAN, atau file serupa.

Singkatnya, menggunakan root file adalah masalah kenyamanan dan kejelasan. Saya belum melihat teks lisensi open-source yang mengikat secara hukum yang mensyaratkannya, saya juga tidak tahu alasan mengapa itu akan diperlukan secara hukum. Lisensi Anda seharusnya cukup mudah bagi penerima untuk ditemukan; termasuk lisensi di root proyek sudah cukup, tetapi tidak perlu, untuk memenuhi kriteria ini.

apsillers
sumber
3
Pertimbangkan juga kemungkinan bahwa Anda menautkan ke situs jarak jauh untuk site.com/foo/license.txt yang Anda dapatkan di bawah lisensi BSD, tetapi sejak itu telah dilisensikan kembali di bawah GPL v3 dan itulah situs.com/foo/license. txt sekarang mengandung. Tetapi versi yang Anda unduh memiliki hak yang berbeda.
Saya telah menandai jawaban ini dengan benar karena tampaknya menjabarkan kebijaksanaan konvensional & hukum seputar perizinan OSS. Yang mengatakan , pemikiran ini mengejutkan saya sebagai sedikit paranoid untuk dunia yang didukung dan dikendalikan versi ini yang kita tinggali. Saya tidak yakin risiko perusakan konten URL kanonik lebih besar daripada risiko seseorang secara tidak sengaja menghapus sebagian dari lisensi yang terkandung dalam root. Dan bahkan jika risikonya lebih besar, saya skeptis bahwa itu sangat bagus untuk memaksa para dev untuk memasukkan lisensi penuh dalam perangkat lunak mereka, yang bertentangan dengan, katakanlah, mengutip lisensi yang dihosting secara eksternal dalam komentar kode.
samthebrand
FYI, mungkin tanda hal yang akan datang untuk lisensi OSS: Creative Commons 4.0 memungkinkan pemegang lisensi untuk menautkan ke halaman terpisah yang mencakup informasi atribusi.
samthebrand
6

Tapi hari ini, kita hidup di zaman awan. Mengapa saya tidak bisa, misalnya, hanya meng-host lisensi lengkap di situs web saya, dan memasukkan judul + URL lisensi itu di header file sumber saya?

Memang ada lisensi yang mengizinkan itu. Apache 2.0, misalnya. Apache 2.0 hanya mensyaratkan bahwa setiap file sumber berisi tajuk kecil yang mengarah ke URL kanonik Lisensi Apache 2.0. Tidak perlu mereproduksi lisensi penuh di pohon sumber.

Dari lisensi Apache 2.0 itu sendiri:

APPENDIX: How to apply the Apache License to your work

To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets "[]" replaced with your own 
identifying information. (Don't include the brackets!) The text should be  
enclosed in the appropriate comment syntax for the file format. We also 
recommend that a file or class name and description of purpose be included 
on the same "printed page" as the copyright notice for easier identification 
within third-party archives.

    Copyright [yyyy] [name of copyright owner]

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
Chadversary
sumber
Saya pikir lampiran tidak lengkap atau setidaknya beroperasi dengan asumsi bahwa Anda sudah menyertakan salinan lisensi. Dari teks 2.0 itu sendiri , ketika mendistribusikan karya berlisensi Apache:4.(a) You must give any other recipients of the Work or Derivative Works a copy of this License;
apsillers
3

Tidak ada persyaratan bahwa itu harus di root proyek. Ini hanyalah tempat yang paling umum, dan dengan demikian tempat pertama yang akan dilihat orang untuk menemukan lisensi. Dalam hal ini, bahkan jika itu tidak umum, masih mungkin tempat pertama yang dilihat orang. Karena lisensi ada untuk menginformasikan, menyembunyikan informasi itu tidak masuk akal.

Jika Anda menyembunyikannya di belakang URL, tidak ada jaminan mutlak bahwa URL itu akan selalu tersedia. Jika itu adalah file di root proyek, menurut definisi itu akan selalu tersedia.

Singkatnya, ini adalah tempat yang paling efektif, paling ramah pengguna.

Bryan Oakley
sumber
Root proyek adalah tempat pertama yang akan dilihat: itu adalah bagian atas pohon, akar hierarki folder. Semua dokumentasi tingkat atas harus ada di sana: readme, lisensi, dll. File-file itu dapat mengarahkan pembaca untuk menggali lebih dalam di tempat lain dalam proyek, tetapi root adalah tempat pertama saya mencari apa pun.