Apa praktik terbaik untuk mengatur lisensi perpustakaan pihak ketiga "dokumen"?

60

Saya sedang mengembangkan proyek open source kecil. Aplikasi ini menggunakan banyak perpustakaan pihak ketiga yang dirilis dengan berbagai lisensi: Apache, MIT, BSD, LGPL dan CDDL.

Masing-masing lisensi ini memiliki persyaratan "dokumen" sendiri. Sebagai contoh, Lisensi Apache, v2.0 mengatakan:

Jika Karya menyertakan file teks "PEMBERITAHUAN" sebagai bagian dari distribusinya, maka Karya Derivatif apa pun yang Anda distribusikan harus menyertakan salinan pemberitahuan atribusi yang dapat dibaca yang terkandung dalam file PEMBERITAHUAN tersebut.

Lisensi MIT berisi pemberitahuan hak cipta dan mengatakan:

Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus dimasukkan dalam semua salinan atau bagian penting Perangkat Lunak.

Lisensi BSD juga mengandung pemberitahuan hak cipta dan mengatakan:

Redistribusi dalam bentuk biner harus mereproduksi pemberitahuan hak cipta di atas, daftar persyaratan ini dan penafian berikut dalam dokumentasi dan / atau materi lain yang disediakan dengan distribusi.

LGPL v.3 mengatakan:

(Anda harus) memberikan pemberitahuan menonjol dengan setiap salinan Karya Gabungan bahwa Perpustakaan digunakan di dalamnya dan bahwa Perpustakaan dan penggunaannya dilindungi oleh Lisensi ini.

Lisensi LGPL dan CDDL juga mensyaratkan penyediaan kode sumber bersama dengan bentuk biner dari perpustakaan, sehingga informasi tentang cara kode sumber dapat diperoleh harus disediakan di suatu tempat.

Apa praktik terbaik untuk mengatur semua data ini? Haruskah saya membuat file teks dan menyalin konten semua NOTICEfile, lisensi MIT dan BSD dll ke dalam file itu? ... atau haruskah saya membuat direktori terpisah untuk setiap perpustakaan dan meletakkan semua data yang terkait dengan perpustakaan ke direktori itu? … atau sesuatu yang lain?

Menarik juga untuk melihat contoh “dokumen” ini dalam proyek yang dipublikasikan.

MEMPERBARUI:

Saya telah membaca Apakah Anda harus memasukkan pemberitahuan lisensi ke setiap file sumber? , tapi itu tidak mengatasi masalah saya. Pertanyaan saya adalah tentang perpustakaan pihak ketiga yang digunakan dalam suatu proyek, dan pertanyaan itu adalah tentang header dalam kode sumber proyek sendiri.

Alexey
sumber

Jawaban:

63

Pertama, penafian standar: IANAL tetapi orang asing acak.

Saya telah mengemas aplikasi AGPL (*) baru-baru ini. Ini menggunakan perpustakaan pihak ketiga yang didistribusikan di bawah lisensi jQuery, MIT, BSD (dan beberapa lainnya). Inilah cara saya melanjutkan.

Maksud utama saya ketika saya merancang ini adalah: patuh dan adil . Sementara yang pertama harus mencukupi, yang kedua memastikan bahwa siapa pun yang mencoba menuntut saya karena tidak mendapatkannya 100% benar harus mengakui saya telah melakukan hal-hal dengan itikad baik.

1) Sumber file: semua file saya memiliki header AGPL. Semua file pihak ke-3 dibiarkan (sebagian besar) tidak dimodifikasi, dan karenanya menyertakan header lisensi mereka sendiri.

2) LICENSE.txt, pada akar paket, berisi teks lisensi AGPL (seperti yang dijelaskan dalam bagian "Cara Mendaftar Ketentuan Ini ke Program Baru Anda").

3) File lisensi sekunder, yang saya beri nama LICENSE-3RD-PARTY.txt, juga terletak di root paket, berisi salinan kata demi kata SEMUA lisensi. Untuk setiap lisensi, tajuk menyatakan lisensi yang mana, dan bagian mana yang berlaku untuknya. Saya juga memasukkan nama pemegang hak cipta di sini - saya menggunakannya kembali di tempat lain setelahnya sehingga layak untuk diusahakan.

-----------------------------------------------------------------------------
                        The MIT License (MIT)
        applies to: 
        - AJAX Upload, Copyright (c) Andrew Valums
        - jQuery hashchange event, Copyright (c) 2010 "Cowboy" Ben Alman
        - jquery.hotkeys, Copyright (c) 2010 John Resig
-----------------------------------------------------------------------------

Permission is hereby granted, free of charge [...]

4) README.txt, juga di root, menjelaskan bahwa perangkat lunaknya adalah AGPL (lihat LICENSE.txt) dan menggunakan perpustakaan pihak ketiga yang didistribusikan dengan ketentuannya sendiri (lihat LICENSE-3RD-PARTY.txt)

5) Dalam dokumentasi online, saya memiliki halaman Lisensi yang mengulangi informasi dari readme: perangkat lunak saya adalah AGPL, dan menggunakan komponen pihak ke-3 yang BSD / MIT / [...]. Saya telah memutuskan untuk menjaga halaman ini lebih bersih dan lebih mudah dibaca, oleh karena itu hanya nama lisensi yang disediakan, dengan tautan ke teks lengkap, dan nama pemegang hak cipta dengan tautan ke situs web mereka sendiri.

jQuery
    Copyright 2013 jQuery Foundation and other contributors
    http://jquery.com
    MIT License
Data Driven Documents (D3)
    Copyright (c) 2013, Michael Bostock    <-- link to personal website, if any
    http://d3js.org                        <-- link to software website
    BSD-like license                       <-- link to license full text
[...]

6) Juga dalam dokumentasi online, saya memiliki halaman Kredit , di mana saya mendaftar kontributor utama langsung dan tidak langsung. Misalnya saya mengutip grup PostgreSQL, walaupun PostgreSQL tidak termasuk dalam unduhan, tetapi Anda memerlukannya untuk menjalankan perangkat lunak. Ini akan menjadi tempat yang baik untuk menempatkan semua ucapan terima kasih yang dibutuhkan atau diinginkan oleh penulis alat / perpustakaan pihak ke-3 / dll.

7) Di dalam perangkat lunak itu sendiri, daftar perpustakaan bersama dengan pemegang lisensi dan hak cipta, diulang dalam kotak dialog Tentang .

Untuk menjawab pertanyaan spesifik Anda tentang penyertaan kode sumber dan tata letak file:

  • umumnya diterima hanya dengan menautkan ke kode sumber lengkap dari paket pihak ke-3. Konsultasikan setiap lisensi tertentu untuk memastikan, tetapi IMHO yang menyediakan tautannya sudah cukup. Misalnya, jika Anda menggunakan versi perpustakaan yang diperkecil, Anda dapat memberikan tautan ke unduhan standar dan baik-baik saja.

  • kecuali komponen pihak ke-3 secara eksplisit menuntut agar distribusi menjaga tata letak file tetap sama, Anda dapat mengatur kembali hal-hal yang Anda inginkan. Bayangkan Anda menggunakan pustaka web, memiliki masing-masing direktori css / dan js /, Anda dapat menggabungkannya menjadi satu direktori lib /, yang berisi gabungan css / dan js /, atau bahkan menyebarkannya di sekitar pohon sumber Anda - pilihan Anda.

Dan sebagai catatan terakhir, saya akan lebih dari menyambut komentator yang melambaikan tangan mengatakan "Anda melakukan ini salah" dan / atau "Anda juga harus melakukan itu ".

(*) Ini tidak dimaksudkan untuk menghubungkan spam, tetapi hanya untuk menjawab bagian "tolong berikan contoh" dari pertanyaan. Jangan ragu, mod, untuk menghapus tautan ini jika ini melanggar aturan.

hertzsprung
sumber
2
Terima kasih atas jawaban yang bagus! Ini persis seperti informasi yang saya cari. Saya belum akan menerimanya untuk melihat apakah orang lain memiliki sesuatu untuk dikatakan.
Alexey
8
Bagi mereka yang akan datang ke sini nanti, FireFox memiliki dokumen yang mirip dengan LICENSE-3RD-PARTY.txtfile yang dijelaskan dalam jawaban ini. (Klik Licensing Informationdi dalam Aboutkotak.) Ada juga dokumen serupa di Google Chrome.
Alexey
1
Berikut adalah dokumen serupa yang mencantumkan perangkat lunak pihak ketiga yang digunakan oleh IntelliJ IDEA: confluence.jetbrains.com/display/IDEADEV/…
Alexey