Menempatkan lisensi di setiap file kode? [Tutup]

93

Saya merasa tidak perlu digandakan untuk memilikinya di setiap file kode, tetapi saya melihatnya di sebagian besar proyek open source. Haruskah saya melakukan hal yang sama, atau hanya menyertakan satu lisensi di luar kode?

Joan Venge
sumber
1
Anda harus mengecualikan garansi di setiap file sumber, jika tidak, Anda mungkin ketahuan. (Perhatikan bahwa editor yang tepat, seperti Vim, dapat dengan mudah dikonfigurasi untuk melipat boilerplate pengecualian garansi agar Anda tidak terlihat secara otomatis.)
Evgeni Sergeev

Jawaban:

74

Tolong satu orang di luar kode! Saya tidak tahu tentang yang lain, tapi saya benci melihat hal yang sama di atas setiap file.

Saya rasa saya sudah membacanya beberapa kali, hanya dengan page_down-ing melewatinya.

Benteng
sumber
10
Saya tidak setuju dengan Zifre. Lisensi berulang apa pun di atas membuat saya kesal.
strager
49
Masuk akal dan masuk akal untuk mengidentifikasi lisensi mana yang dirilis di bawah setiap file sumber, karena file tersebut mungkin dipisahkan dari kode lainnya (penggunaan kembali - dianjurkan, secara umum, oleh Open Source), dan jika file tidak berisi informasi tentang lisensi , lebih sulit untuk melacak kembali ke lisensi yang benar. Tetapi seluruh lisensi di setiap file - tidak; itu akan menjadi aneh untuk GPL atau LGPL. Seperti yang telah disarankan, untuk lisensi pendek, memang merepotkan untuk memiliki teks lisensi yang sebenarnya di dalam file, tetapi ini adalah keputusan pengadilan. Tetapi masuk akal untuk mengidentifikasi lisensi mana yang dirilis.
Jonathan Leffler
14
Saya baru saja memperbarui header file dalam proyek saya menjadi hanya tiga baris: hak cipta, nama lisensi, dan URL ke teks lisensi. Ini mempersingkat header saya dari 26 baris (BSD) menjadi 3 baris. :)
Esko Luontola
3
@ Esko: Bisakah Anda memposting sampel? Saya tidak tahu apa yang Anda tulis untuk hak cipta. Terima kasih.
Joan Venge
6
Jawaban ini ditandai sebagai solusi, tetapi menurut pendapat saya pertanyaannya masih terbuka selama kita tidak punya evidence for the legal situation. Perhaps a lawyer can add a link to a court decision.
Jonas Stein
25

EULA adalah istilah yang salah di sini, karena orang yang melihat kode sumber biasanya bukanlah pengguna akhir.

Secara hukum, tidak ada bedanya juga; hak cipta tidak perlu diumumkan secara eksplisit.

Pada dasarnya, semua yang Anda capai adalah risiko yang lebih rendah dari orang-orang yang secara tidak sengaja melanggar persyaratan lisensi Anda. Anda harus memutuskan seberapa penting hal itu bagi Anda.

Menurut saya, kompromi terbaik adalah dengan meletakkan tajuk yang sangat pendek yang berisi tautan (URL absolut serta relatif dalam proyek) ke teks lisensi lengkap ke dalam setiap file kode sumber. Dengan begitu, siapa pun yang peduli dengan lisensi tahu di mana menemukannya (idealnya, orang yang bersedia membayar biaya lisensi besar-besaran; Anda pasti ingin orang - orang itu dapat menghubungi Anda!)

Michael Borgwardt
sumber
Hak cipta mungkin tidak perlu eksplisit, tapi bagaimana dengan copy-left?
Kekoa
1
@kekoav: copyleft tidak seketat hak cipta. Secara default, Anda tidak dapat membuat karya turunan.
Zifre
3
Dalam perselisihan, itu bukanlah argumen yang valid. Jika diberi tahu bahwa ada lisensi, dan cara mendapatkannya kembali, Anda tidak dapat menemukan hambatan teknis yang merupakan kesalahan Anda yang menghalangi Anda untuk melihat lisensi tersebut.
Lasse V. Karlsen
1
"Copyleft" adalah bahasa gaul untuk ide dasar GPL untuk "menumbangkan" batasan hak cipta dari dalam, yaitu menggunakan hak Anda sebagai pemegang hak cipta untuk memberikan lisensi kepada siapa pun untuk menggunakan kode Anda secara bebas, tetapi memaksa mereka untuk melepaskan kode MEREKA yang mana berdasarkan milik Anda di bawah lisensi yang sama.
Michael Borgwardt
2
Benar; tapi dalam konteks ini, seperti yang dikatakan Zifre, itu tidak masalah. Jika Anda tidak mengetahui lisensi yang digunakan untuk menerbitkan bagian kode tertentu, Anda harus berasumsi bahwa Anda tidak diizinkan untuk menggunakannya sama sekali. Jadi sebagai penerbit, Anda tidak perlu bersusah payah untuk membuat orang membaca lisensi.
Michael Borgwardt
14

Tidak, Anda tidak harus meletakkan lisensi di setiap file kode sumber.

Jika Anda melihat lebih dekat, sebagian besar aplikasi FOSS juga tidak melakukannya. Mereka meletakkan pernyataan hak cipta di bagian atas setiap file dan kalimat pendek yang memberi tahu Anda lisensi apa yang dimiliki file tersebut dan di mana Anda dapat menemukan teks lengkap dari lisensi tersebut. Mereka biasanya mengarahkan Anda ke file COPYING atau LICENSE yang berisi teks lengkap dari lisensi dan / atau ke situs web yang berisi teks lengkap (jika file COPYING sudah tidak ada lagi).

Seperti yang dikatakan Michael Borgwardt dalam jawabannya, secara hukum Anda tidak perlu melakukan ini. Tetapi disarankan untuk kode sumber yang ingin Anda distribusikan karena orang dapat langsung melihat siapa yang memiliki hak cipta dan apa lisensinya.

Sander Marechal
sumber
1
Ini. Pemberitahuan hak cipta harus menyertakan referensi ke nama lisensi (jika standar) dan deskripsi tentang bagaimana menemukan file lisensi di pohon sumber.
jmucchiello
13

Itu mungkin tergantung pada lisensi. The GPL membedakan antara preambledanlicense . Ini dengan jelas menyatakan, bahwa pembukaan (mengganggu) harus menjadi bagian dari kode :

Dapatkah saya menghilangkan pembukaan GPL, atau instruksi bagaimana menggunakannya pada program Anda sendiri, untuk menghemat ruang?

Pembukaan dan instruksi merupakan bagian integral dari GNU GPL dan tidak boleh diabaikan. Faktanya, GPL memiliki hak cipta, dan lisensinya hanya mengizinkan penyalinan kata demi kata dari seluruh GPL. (Anda dapat menggunakan istilah hukum untuk membuat lisensi lain tetapi itu bukan GNU GPL.) (1)

Sumber: 1) http://www.gnu.org/licenses/gpl-faq.html#GPLOmitPreamble

Lihat juga http://softwarefreedom.org/resources/2012/ManagingCopyrightInformation.html

Sebuah ebook gratis dari ifrOSS menjelaskan dan komentar GPL 2 dalam bahasa Jerman. Ada satu lagi untuk GPL 3

Untuk jawaban yang beralasan Anda harus meminta nasihat hukum yang tidak tersedia di sx. Jika Anda tidak dapat menemukan pengacara untuk proyek (open source) Anda, lihatlah jaringan legal FSFE .

Jonas Stein
sumber
7
Pembukaan dan instruksi adalah bagian dari lisensi penuh , tetapi tidak ada yang mengatakan Anda harus meletakkan lisensi penuh di setiap file. [...] attach the following notices to the program.- pemberitahuan berikut hanyalah sebagian kecil dari lisensi penuh. safest to attach them to the start of each source file- teraman tetapi tidak wajib. each file should have at least the "copyright" line and a pointer to where the full notice is found. - satu-satunya persyaratan adalah baris hak cipta dengan penunjuk ke yang lainnya. Tidak masalah untuk meletakkan lisensi penuh dalam satu file terpisah.
Toxalot
3
Dan saya berpendapat bahwa seharusnya ! = Harus .
Toxalot
7

Saya pikir alasan di balik meletakkannya di setiap file adalah alasan hukum. Jika perjanjian ada di setiap file, tidak ada kemungkinan seseorang menemukan sepotong kode tanpa mengetahui lisensi.

Ini mungkin tidak bagus, tapi semua anak laki-laki besar menggunakannya jadi jika itu hanya rasa sakit visual, saya akan mencari alasan yang lebih baik untuk tidak melakukan hal yang sama.

Jika Anda menggunakan GPL, ini lebih merupakan masalah, tetapi jika Anda menggunakan lisensi domain publik seperti BSD atau MIT, saya rasa Anda tidak terlalu peduli dengan apa yang orang lakukan dengan kode tersebut. Saya kira itu tergantung pada seberapa ketat lisensi Anda.

Kekoa
sumber
1
Nah, dalam hal ini, cukup tunjuk di setiap file bahwa setelah melanjutkannya, Anda menyetujui lisensi di file licence.txt. Tapi jangan salin / tempel teks yang sama di setiap file. Saya terkadang menemukan file dengan kode yang lebih pendek daripada lisensinya.
Benteng
Ya, saya setuju bahwa itu berfungsi dengan baik, terutama untuk lisensi yang panjang. Meskipun secara hukum mungkin tidak penting, atau bahkan dapat didukung di pengadilan, referensi ke lisensi Anda paling tidak baik untuk memberi tahu orang-orang tanpa mereka harus mencari-cari lisensi di bawah kode tersebut.
Kekoa
3

IANAL,

Dengan asumsi Anda berbicara tentang perizinan, bukan EULA, Anda dapat meletakkan lisensi di luar. Ini hampir selalu dilakukan dengan lisensi yang sangat panjang seperti GPL. Akan konyol untuk meletakkan seluruh lisensi GPL di setiap file. Biasanya Anda hanya memiliki beberapa jenis pemberitahuan yang mengatakan di mana Anda dapat menemukan lisensi yang sebenarnya. Ini sangat legal. Namun, dengan lisensi yang sangat pendek seperti BSD / Apache / MIT / apapun, akan lebih mudah untuk hanya memasukkan lisensi di setiap file, karena pemberitahuan yang mengatakan di mana menemukan lisensi hampir sepanjang lisensi itu sendiri.

Zifre
sumber
2

Itu tergantung pada apa yang ditentukan oleh lisensi. GPL, misalnya, menginstruksikan Anda untuk memberikan pemberitahuan singkat di setiap file sumber, menyertakan seluruh lisensi di suatu tempat dalam distribusi sumber Anda, dan membuat distribusi sumber Anda tersedia bagi siapa saja yang mendapatkan salinan dari distribusi biner tersebut.

Jika Anda tidak setuju dengan ini, dan ini adalah kode ANDA, Anda bebas memilih lisensi yang lebih disetujui, atau membuat sendiri.

Mark Jones
sumber
1

Jika kode Anda akan dikompilasi sehingga Anda hanya mendistribusikan biner maka itu tidak masalah. Karena ketika Anda membuat biner, komentar-komentar tersebut dihapus sebelum proses kompilasi berlangsung. Ini hanya masalah jika Anda akan mendistribusikan kode sumber sebenarnya baik sumber terbuka atau sumber tertutup. Hal ini penting jika Anda akan mendistribusikan aplikasi dalam bahasa skrip yang tidak dapat dikompilasi.

adimitri
sumber
Terima kasih. Ini akan menjadi open source.
Joan Venge
Anda dapat membuat string hard-code untuk memuat lisensi, sehingga akan muncul di biner, tapi itu mungkin terlalu banyak :).
Liran Orevi
1

Anda tidak memerlukannya untuk lisensi, satu file eksternal akan digunakan selama jelas file apa yang dicakupnya.

Namun untuk Hak Cipta, Anda harus memiliki pemberitahuan hak cipta di setiap bagian teks.

James Anderson
sumber
Terima kasih, jadi hak cipta berbeda?
Joan Venge
INAL tetapi lisensi adalah kontrak antara Anda dan pengguna / pelanggan. Hak Cipta adalah pernyataan kepemilikan atas suatu karya tertulis. Seseorang dapat mengambil bagian kode Anda dan mengklaim bahwa itu bukan hak cipta karena pemberitahuannya hilang. Jangan khawatir meskipun "Copyright Joe Soap (Cleansoft Inc.)" adalah semua yang Anda butuhkan.
James Anderson
10
Anda salah tentang itu. Meskipun secara umum baik untuk menambahkan pemberitahuan hak cipta di mana-mana hanya untuk memperjelas, tetapi itu tidak berarti permainan yang adil untuk "menganggap itu tidak memiliki hak cipta" Karena Anda tahu SEMUANYA berhak cipta. Ketika seseorang mendapatkan kode sumber, dia mungkin menemukan pernyataan lisensi yang memungkinkan dia untuk menggunakannya, atau dia mungkin mengetahui bahwa itu ada dalam domain publik karena satu dan lain alasan. Jika dia tidak melakukannya, itu adalah hak cipta dan tidak dapat disalin. Hak cipta adalah hal yang otomatis dan ada baiknya untuk menyebutkannya, tetapi tidak melakukannya tidak berarti Anda kehilangannya ...
Jasper
1

Yang saya lakukan adalah memberi komentar dua baris di bagian atas file, menyebutkan nama perusahaan saya, tanggal revisi terakhir dan nama lisensi yang dimiliki file sumber, lalu di bagian paling bawah file ada versi pendek dari lisensi.

Tentu saja, lisensi penuh (semuanya dalam kasus beberapa lisensi) selalu disertakan pada file sumber dan direktori rilis.

GaiusSensei
sumber
3
bagaimana Anda mengotomatiskan tanggal revisi terakhir?
Dustin Getz