Apa cara yang benar untuk memotong / menggunakan kembali kode dari proyek sumber terbuka?

22

Katakanlah saya sedang mengerjakan proyek open source dan ingin menggunakan kembali fungsi utilitas sepele dari proyek open source lain (misalnya, fungsi pencarian / penggantian file). Apakah sah untuk menyalin fungsi dan hanya menulis pemberitahuan hak cipta kecil di atas file? Haruskah saya memasukkan nama mereka sebagai pemegang hak cipta dari seluruh proyek dalam lisensi?

Demikian pula, katakanlah saya garpu proyek open source. Di mana dan bagaimana saya menentukan bahwa hak cipta dibagi antara pemegang hak cipta asli dan saya sendiri?

Saya kira jawabannya agak bervariasi sesuai dengan lisensi open source tapi saya ingin jawaban umum sebanyak mungkin.

PS: Saya kebanyakan prihatin dengan aspek hukum, tetapi merasa bebas untuk memasukkan sudut pandang etis Anda.

Olivier Lalonde
sumber
1
Apa lisensi proyek yang dimaksud, dan proyek yang Anda lepaskan? Ya, Anda dapat menggunakan kode ini, tetapi harap lebih spesifik sehingga kami dapat memberi tahu Anda lebih baik tentang persyaratan Anda di bawah lisensi yang sedang digunakan.
Tim Post
1
@Tim Post: Ini sebagian besar pertanyaan teoretis tetapi jika itu bisa membantu, misalkan kedua proyek memiliki lisensi GPL karena itu sangat umum.
Olivier Lalonde

Jawaban:

25

Saya mencoba menjadikan jawaban ini sebagai 'meta' yang berlaku mungkin.

Menggunakan potongan / bit dari proyek lain

Tandai kode dengan jelas dengan hak cipta penulis asli. Pastikan lisensi pilihan Anda sepenuhnya kompatibel dengan lisensi kode yang Anda gunakan. Anda akan memerlukan izin dari penulis untuk memindahkan kode ke lisensi yang berbeda (kecuali jika mereka secara khusus mengizinkan Anda untuk melakukannya, yaitu "GPL 2 atau versi yang lebih baru")

Program Anda harus memiliki file PENULIS (atau yang serupa), tempat Anda mencantumkan semua kontributor dan hal-hal yang Anda gunakan dari proyek lain.

Forking sebuah proyek

Untuk setiap modul yang Anda ubah secara substansial , tambahkan hak cipta Anda di bawah penulis asli. Hal yang sama berlaku untuk lisensi, Anda terikat oleh ketentuan lisensi yang berlaku ketika Anda bercabang itu. Jika proyek mengatakan "hanya GPL2", Anda harus menghargai itu, Anda tidak dapat pergi ke GPL3 tanpa izin mereka.

Ini sangat bervariasi, tergantung pada lisensi yang ada. QPL mengatakan Anda hanya dapat mendistribusikan perubahan dalam format tambalan, jadi pastikan Anda memahami ketentuan yang memungkinkan Anda untuk mendistribusikan versi modifikasi dari perangkat lunak.

Selain itu, selalu pertahankan hak cipta. Jika menambahkan hak cipta Anda sendiri ke apa yang ada, pastikan Anda menandai dengan jelas apa yang Anda klaim.

Pos Tim
sumber
Anda kadang-kadang dapat menambahkan lisensi. Misalkan Anda ingin menggunakan fungsi BSD dalam proyek GPL: Anda tidak dapat menghapus lisensi BSD, tetapi itu kompatibel dengan GPL, sehingga Anda dapat mengeluarkan seluruh proyek di bawah GPL dan perhatikan bahwa fungsinya juga di bawah BSD lisensi. Akan sopan untuk merilis perubahan apa pun yang Anda lakukan pada kode berlisensi BSD di bawah BSD.
David Thornley
@ David - OP menginginkan jawaban generik (maka desakan saya untuk meneliti lisensi). Anda benar sekali. NAMUN, sangat bagus untuk melisensikan dua lisensi setiap perubahan yang Anda lakukan pada kode BSD, sehingga penulis asli benar-benar dapat menggunakannya jika mereka menginginkannya.
Tim Post
1
Pada titik mana file lisensi utama memiliki pemberitahuan hak cipta Anda di atas penulis asli? Kapan SLOC Anda melebihi 200% dari SLOC proyek asli? 300%? Jika proyek yang Anda bercabang akhirnya menjadi salah satu dari banyak perpustakaan atau modul dalam proyek Anda?
Hobs
@hob imo, urutan pemberitahuan hak cipta bukan merupakan indikasi besarnya kontribusi, melainkan rincian asal kronologisnya.
@TechnikEmpire Urutan kronologis masuk akal, tetapi untuk daftar kontributor daripada pemberitahuan hak cipta? Saya pikir pemberitahuan hak cipta mungkin lebih baik diatur sesuai dengan bagian kode yang mereka terapkan dan nilai / kuantitas bagian-bagian dalam paket. Berguna untuk memiliki daftar orang yang perlu Anda hubungi, sesuai urutan prioritas, jika Anda ingin mengubah sesuatu tentang lisensi. Jadi jika Anda mendapatkan izin dari beberapa yang pertama, tetapi bukan yang terakhir, Anda memiliki jumlah kode yang lebih sedikit untuk dibuat kembali jika Anda bertekad untuk melakukan perubahan. Saya ingin tahu apa yang dilakukan Linus?
Hobs