Jika Anda mengelola proyek sumber terbuka berlisensi BSD, bagaimana Anda melindungi seseorang yang secara ilegal berkontribusi dengan kode lisensi GPL?

8

Proyek sumber terbuka yang dilisensikan di bawah BSD, MIT atau lisensi permisif lainnya menerima kontribusi kode dari komunitas.

Bagaimana saya bisa mencegah seseorang mengambil kode berlisensi GPL yang bukan miliknya dan mengirimkannya ke proyek berlisensi BSD saya? Saya tidak tahu bahwa sumbangan itu dicuri dari proyek berlisensi GPL dan menerimanya.

Saya tidak ingin menerima kontribusi seperti itu, agar tidak membuat seluruh proyek GPL. Tetapi saya tidak memiliki cara untuk mengetahui apakah kontributor benar-benar memegang hak cipta untuk kode yang mereka kontribusikan. Jadi, jika seseorang secara ilegal menyumbangkan kode berlisensi GPL ke proyek saya, saya tidak tahu cara apa pun untuk menghentikannya (kecuali tidak menerima kontribusi sama sekali).

Tentunya, ada banyak proyek berlisensi BSD dan MIT di luar sana, jadi pasti ada solusinya.

Terima kasih!

Joe
sumber
1
mungkin karena pertanyaan mencari nasihat hukum umumnya disukai sebagai di luar topik
Newtopian
3
@Newtopian Bagaimana nasihat hukum ini? Ini tentang mengelola proyek sumber terbuka. Saya tidak melihat bagaimana ini di luar topik di sini sama sekali. Mungkin lebih cocok untuk Open Source, tetapi mengelola proyek bagus di sini.
Thomas Owens
3
@ThomasOwens: Saya tidak melihat bagaimana upaya untuk menjawab tidak menyentuh masalah hukum. Pada akhirnya, Anda mengandalkan kata dari kontributor kecuali Anda meminta bukti hak cipta, menjadikannya masalah hukum lagi.
Robert Harvey
3
Saya bukan downvoter, saya juga tidak memilih untuk menutup. Itu adalah pertanyaan yang sah tetapi pertanyaan yang sulit dijawab tanpa, seperti yang dikatakan Robert, kembali ke sisi hukumnya. Yang terbaik yang bisa saya harapkan di sini adalah bergantung pada itikad baik dari para kontributor sementara pada saat yang sama menyimpan catatan yang sangat baik tentang apa, kapan, siapa dari kode yang dikomit dan mempersiapkan untuk rollbacks panjang akhirnya dan menulis ulang jika ada potongan menyelinap melalui retakan.
Newtopian
5
Ketahuilah bahwa menambahkan kode GPL ke proyek BSD secara tidak patut tanpa menyertakan atribusi yang tepat, dll, tidak secara otomatis membuat proyek GPL. Sebaliknya itu membuat proyek tidak mungkin untuk didistribusikan secara sah. Itu dapat diperbaiki dengan menghapus kode GPL atau menghubungkannya dengan benar, dll, dan mengonversi seluruh proyek ke GPL.
bdsl

Jawaban:

6

masukkan deskripsi gambar di sini

Seseorang tidak hanya "menjaga terhadap" kontribusi ilegal.

Anda tidak pernah menerima sumbangan secara membabi buta, dan harus memiliki proses untuk memeriksa sumbangan (termasuk milik Anda) untuk beberapa jenis masalah:

  • tes unit (otomatis)
  • backdoors dan kelemahan keamanan (analisis statis mungkin membantu, ada alat lain)
  • bau kode (otomatis)
  • logika kode yang buruk (peer review, "cukup mata untuk membuat bug dangkal", dll. - kisah OpenSSL menunjukkan bahwa ini mungkin tidak cukup)
  • Saya yakin saya melewatkan beberapa yang lain - kontribusi diterima

"Semua" yang perlu Anda lakukan adalah menambahkan cek untuk plagiarisme . Ini dapat dilakukan, sampai titik tertentu, dengan alat otomatis dengan hanya googling baris kode yang relevan.

Saya baru saja mencoba dengan mengangkat beberapa contoh kode dari proyek, dan itu berhasil. Saya hanya mengekstraksi string, format, komentar, nama fungsi, dan prototipe dari kode, lalu googled semuanya, dan melihat di mana satu situs muncul dalam beberapa pertandingan. Dalam 17 tes dari 19 situs sumber adalah yang pertama dari lima kandidat; dalam semua kasus, situs itu memang muncul di antara lima yang pertama. Sebaliknya, potongan kode saya sendiri hanya memicu positif palsu dalam tiga (empat) kasus dari dua puluh, dengan target kualitas yang sangat rendah, sehingga dengan cepat membaca setengah lusin situs saya dapat mengabaikan peringatan tersebut. Selain itu, dengan kode GPL, cuplikan dari Google Search tampak sama dengan kode yang saya uji-filked.

Pada titik ini saya yakin Anda bisa melakukannya dengan tangan . Lihatlah kodenya, lihat komentarnya (apakah itu masuk akal? Jika tidak, itu jenis lain dari lampu merah. Jika ya, apakah mereka semua telah ditulis ulang (!) Atau Anda akan menemukannya), cobalah beberapa string teks, tancapkan di Google dan / atau mesin pencari lainnya.

Dan Anda hanya perlu ini untuk kontribusi yang cukup besar .

Dari sudut pandang hukum - saya dengan cepat mengarungi kedalaman saya - saya membayangkan bahwa Anda membutuhkan kontributor Anda untuk menerima beberapa bentuk pengabaian atau perjanjian di mana mereka menyatakan bahwa mereka akan berkontribusi secara jujur.

Ketika mereka tidak, dan Anda melewatkan itu (misalnya mereka mengubah / mengaburkan beberapa kode GPL sehingga tidak ditemukan dengan googling), kemungkinan IMHO adalah bahwa itu tidak akan pernah ditemukan kecuali dilakukan untuk tujuan penjebakan, dan mereka sendiri meniup peluit. Pada saat itu proyek Anda akan melanggar GPL dan Anda dapat:

  • hapus kode GPL dari proyek
  • menyatakan sisa proyek berada di bawah GPL

Agar seluruh skenario menjadi masalah yang realistis, "kontributor" harus:

  • cari bagian kode GPL yang bermakna dengan proporsi yang bermanfaat,
  • hapus semua informasi lisensi,
  • tulis ulang secara menyeluruh - komentar, nama fungsi, nama variabel non-sepele, string teks - sehingga pencarian tidak akan menemukan kode, namun tetap dikenali sama , dan pada saat yang sama biarkan berfungsi
  • biarkan kode "rebus" dalam basis kode dan kontributor lain bergantung pada fungsinya , ke titik di mana menghapusnya akan menjadi masalah

Seluruh skenario, terutama poin terakhir, menurut saya sangat mengada-ada. Setelah pemeriksaan plagiarisme dilakukan, saya akan berhenti khawatir.

LSerni
sumber
1
Jawaban yang sangat menarik dan komprehensif! Ya, beberapa googling dapat membantu mengidentifikasi beberapa salinan & tempel yang tidak diinginkan. Namun ini hanya berfungsi untuk salinan literal: jika seseorang mengambil kode yang sama dan mengganti beberapa nama variabel, atau mengubah urutan beberapa pernyataan, Anda tidak akan menemukannya, walaupun itu masih plagiarisme. Tapi Anda benar: setidaknya bisa membantu mengurangi risiko. The perjanjian kontributor harus membuat kewajiban yang jelas dan mentransfer risiko residual untuk kontributor.
Christophe
1
Untuk menambahkan jawaban ini, saya adalah seorang instruktur di bootcamp coding untuk sementara waktu. Plagiarisme tidak umum, tetapi itu terjadi. Itu biasanya cukup jelas bagi saya ketika itu terjadi karena seorang siswa akan menyerahkan kode yang jauh berbeda dari apa yang biasa saya lihat dari mereka. Ketika itu terjadi, saya akan mengambil beberapa baris kode yang agak membedakan, dan mencari di GitHub untuk kode tersebut. Jika saya tidak menemukannya di GitHub, Google akan menjadi yang berikutnya, tetapi saya selalu dapat menemukan kode asli di GitHub.
Dan Jones