Dalam proyek tersebut, saya menemukan file math.c
,, dengan header GPL besar dan ...
//------------------------------------------------------------------------------
/// Returns the minimum value between two integers.
/// \param a First integer to compare.
/// \param b Second integer to compare.
//------------------------------------------------------------------------------
unsigned int min(unsigned int a, unsigned int b)
{
if (a < b) {
return a;
}
else {
return b;
}
}
OK, keren jadi saya harus mendapatkan nilai minimum dan ... file ini !? Jadi saya perlu membuka seluruh proyek karena itu? Atau apakah saya perlu menemukan kembali matematika?
Saya tidak percaya itu hanya gila, jadi pertanyaannya adalah: kapan kita bisa menghapus header GPL?
Harus saya menjadi aneh dan melakukannya ?:
unsigned int min( unsigned int
JEIOfuihFHIYEFHyigHUEFGEGEJEIOFJOIGHE,
unsigned int hyrthrtRERG ) { if
(JEIOfuihFHIYEFHyigHUEFGEGEJEIOFJOIGHE
< hyrthrtRERG ) { return JEIOfuihFHIYEFHyigHUEFGEGEJEIOFJOIGHE; }
else {return hyrthrtRERG ; } }
Serius, apakah mereka ingin saya menulis kode seperti di atas?
the jury did find that one nine-line function that Google acknowledged copying was infringing
(dari ArsTechnica ).min
tidak dilindungi oleh hak cipta. Lihat jawaban saya untuk detailnya.Jawaban:
Tidak seperti banyak pengguna di sini, saya hanya menyarankan: Salin!
Pastikan format kode sesuai dengan standar pengkodean Anda dan Anda mungkin harus menghapus atau menulis ulang komentar. Tidak ada yang akan tahu Anda menyalinnya - ketika sepotong kode ini sederhana, Anda mungkin telah menulisnya dari awal. Jika standar pengkodean Anda entah bagaimana memerlukan fungsi agar terlihat persis seperti pada snippet, maka jadikan itu - asalkan terlihat seperti yang akan terlihat jika Anda telah menulisnya dari awal.
Pikirkan tentang ini, ini hampir tidak (!) Pertama kali karya tulis ini ditulis - ketika ada sesuatu yang sepele ini, ada sedikit alasan untuk tidak menyalinnya, jika Anda tidak ingin menulis sendiri.
Bahkan berdiskusi ini sepertinya sedikit berlebihan bagi saya - kita harus pragmatis jika kita ingin menyelesaikan pekerjaan nyata!
sumber
Let us then say that the programmer wrote his own version of MIN and it ended up looking exactly like the one from math.c - would it then be okay?
Ya, jika itu kecelakaan. "Apa bedanya kalau dia baru saja menyalinnya?" Bit memiliki warna . ansuz.sooke.bc.ca/entry/23 Ini bukan sesuatu yang kebanyakan ilmuwan komputer bisa pahami - ini memang topik yang kompleks, tapi itu adalah sesuatu yang diakui oleh hukum. Jika Anda ragu apakah sesuatu itu legal atau tidak, Anda sebaiknya berbicara dengan pengacara .Itu tidak langsung menjawab pertanyaan Anda, tetapi coba ini:
Saya dengan ini merilis makro yang mulia dan kompleks ini ke domain publik. Padahal saya mungkin harus menerbitkan makalah tentang teknik ini.
Jika Anda makro-fob, coba versi inline ini (sungguh, kecuali jika Anda meng-coding pada SPARC, Anda akan menghemat banyak siklus CPU dengan tidak membungkus fungsi yang ada
min
di mana-mana seperti dalam kode masuk / keluar):Masalah lisensi kode untuk cuplikan sepele agak menyusahkan. Periksa dengan seorang pengacara, tetapi saya tergoda untuk berasumsi bahwa mereka tidak benar-benar dapat dilisensikan dan / atau lisensi tidak dapat ditegakkan dalam praktik. Sama seperti Anda tidak dapat hak cipta atau merek dagang kata 'kata', lalu bersandar pada orang yang menggunakannya. (oops)
sumber
min(a++,b++)
.min
.Penafian : Saya bukan pengacara. Gunakan saran saya dengan risiko Anda sendiri.
Implementasi
min
ini tidak dapat dilindungi hak cipta , karena hanya ada sedikit cara yang masuk akal untuk menulisnya.Di dunia hukum, ini dikenal sebagai doktrin merger (juga dikenal sebagai pemecah gagasan-ekspresi). Gagasan (non-hak cipta) dari fungsi dikatakan telah "digabungkan" dengan ekspresi (berpotensi dapat dilindungi hak cipta) . Oleh karena itu, kode ini tidak tunduk pada hak cipta - Anda bebas menggunakannya.
Agar aman, jangan menyalinnya kata demi kata . Gunakan nama berbeda untuk variabel, terapkan pemformatan Anda sendiri, jangan menyalin komentar kata demi kata. Representasi literal yang tepat dari kode ini dapat dilindungi oleh hak cipta.
Ingatlah bahwa ini tidak menjamin seseorang tidak akan menuntut Anda, tetapi setidaknya Anda akan memiliki pertahanan yang kuat.
Juga, ingatlah bahwa meskipun sepotong kode tidak dilindungi oleh hak cipta, kode tersebut mungkin masih dilindungi oleh paten perangkat lunak (Ini tidak berlaku untuk
min
fungsi Anda ).sumber
Saya merilis kode berikut di bawah lisensi BSD . Karena lisensi itu jauh lebih permisif, Anda seharusnya tidak mengalami masalah hak cipta jika Anda menggunakan implementasi saya.
sumber
min
dalam perangkat lunak sumber tertutup. Juga, @Sholy, sekarang ini masalah GordonM apakah ia telah menyalinnya, atau tidak.Saya setuju, ini situasi yang tidak masuk akal, tetapi Anda sendiri yang harus disalahkan. Jika Anda menulis kode hak milik, Anda tidak boleh membaca file sumber berlisensi GPL, titik. Hapus math.c dari sistem file Anda, simpan dokumentasi, dan jangan ragu untuk kembali mengimplementasikan bagian apa pun dari API yang Anda butuhkan. Jika Anda tidak membaca kode, Anda tidak perlu khawatir jika kode Anda sendiri ternyata mirip.
Buang-buang, katamu? GPL secara sengaja mencegah Anda mendapatkan manfaat dari kode bebas tanpa memberikan kembali kepada ekosistem. Jika Anda tidak dapat atau tidak akan memenuhi persyaratannya, dan Anda tidak ingin menerapkan perpustakaan matematika lain, Anda selalu dapat membeli atau menemukan yang gratis yang dilengkapi dengan lisensi yang dapat Anda terima.
Pemrogram Microsoft tidak diperbolehkan membaca kode sumber terbuka, untuk melindungi perusahaan dari masalah hukum. Untuk alasan yang murni etis, Anda harus melakukan hal yang sama dengan program mana pun yang lisensinya tidak Anda patuhi.
Anda tidak memiliki hak untuk menggunakan ini
math.c
, tetapi tidak ada yang mencoba memojokkan pasar pada implementasimin
. Tujuan dari GPL adalah untuk meningkatkan "kebebasan" programmer (dan kebebasan pengguna akhir), bukan untuk membatasi itu. Lisensi GNU, FSF, dan Gerakan Perangkat Lunak Bebas dimulai dengan Richard Stallman, dan Stallman memulai dengan menerapkan kembali dari awal setiap versi baru Symbolics lisp ketika dirilis. FSF tidak akan (dan tidak bisa) mengejar siapa pun untuk menerapkan kembali perpustakaan GPL.sumber
Jawab: Hanya dengan izin tertulis dari penulis.
Itu kode yang dilindungi hak cipta. Anda tidak dapat menyalinnya tanpa izin dari penulis.
Anda harus menulis versi Anda sendiri
min
, atau menyalin varianmin
yang menggunakan lisensi yang berbeda.Ingat, dengan hak cipta, itu adalah kode yang dilindungi, bukan algoritma. Hukum hak cipta berasal dari teks. Bahkan jika "math.c" tidak lain adalah komentar dan tidak memiliki kode yang dapat dieksekusi sama sekali, itu masih dilindungi oleh hak cipta.
sumber
min
, Anda memiliki urutan karakter tertentu yang akan diterapkanmin
.Ini yang ditipu Google. Ini sepertinya akal sehat untuk sebuah array.
sumber
Saya tidak akan menggunakan kode ini, karena komentar tidak cocok dengan apa yang dilakukan oleh kode tersebut. Komentar berbicara tentang
integer
, sementara kode tersebut digunakanunsigned int
. Siapa yang tahu kesalahan apa yang terkubur dalam kedalaman fungsi ini?Serius, di sinilah "Jangan menemukan kembali roda" menjadi konyol dan Anda lupa membawanya dengan sebutir garam. Cukup tulis versi Anda sendiri dari awal, cocokkan dengan konvensi penamaan dan panduan gaya kode Anda (mis.
math_min_uint(x, y)
), Pastikan itu berfungsi (uji unit atau apa pun) dan teruskan kehidupan Anda tanpa masalah hak cipta.Dengan pengalaman yang terus bertambah, cuplikan sepele yang Anda butuhkan berulang kali ini ada di kotak peralatan Anda dan Anda akan menulis ulang tanpa berpikir terlalu banyak, atau cukup mendapatkannya dari perpustakaan Anda sendiri.
sumber
Orang-orang sepertinya lupa bahwa undang-undang hak cipta, baik dalam semangat maupun surat, berarti bahwa tindakan penyalinan sebenarnya dilarang - bukan tindakan mengekspresikan pikiran yang sama sendiri, bahkan jika hasilnya ternyata serupa secara mencurigakan.
Jika Anda mengambil kode GPL, memodifikasinya, menggunakannya dengan cara yang bertentangan dengan lisensi yang Anda terima, dan mengklaim itu bukan karya turunan, maka Anda melanggar hukum. Bahkan jika Anda menggunakan versi kedua - Anda telah mengubah nama semua variabel, dan mengubah formatnya, tetapi masih berasal dari yang asli.
Namun, jika Anda menulis versi Anda sendiri
min
, dan karena sepele tugas, fakta bahwa hanya ada begitu banyak cara Anda dapat menulis hal seperti itu, dan sedikit kebetulan, versi Anda akhirnya persis sama ke kode GPL, maka Anda belum menyalin apa pun.Namun, apakah salah satu cerita akan lolos di pengadilan adalah masalah lain. Jika sampel kode yang lebih besar atau lebih kompleks muncul di tempat lain, lengkap dengan komentar, pemformatan, dan kesalahan pengejaan, Anda akan kesulitan meyakinkan siapa pun yang menulisnya secara independen, terlebih lagi jika dapat ditunjukkan bahwa Anda tahu yang asli source (yang, mengingat fakta bahwa Anda telah mempostingnya di sini, seharusnya cukup sepele).
sumber
Jika kode ini benar-benar sepele sebagai contoh "min" maka ada kemungkinan yang sangat tinggi bahwa orang lain telah menerapkan fungsi yang sama di bawah lisensi open source yang berbeda.
Bergantung pada lisensi, Anda mungkin diperbolehkan memasukkan kode ke dalam sumber terbuka Anda.
sumber
Cukup tulis sendiri dalam 30 detik. Anda dapat menggunakan algoritma yang persis sama. Hanya saja, jangan menyalin / menempel.
Hak cipta hanya melindungi ekspresi suatu ide, bukan ide itu sendiri. Anda dapat menggunakan ide secara langsung asalkan Anda tidak menyalinnya.
FWIW, saya ragu bahwa menyalin sepotong kode sepele seperti itu akan membuat Anda mendapat masalah. Kerusakan akan menjadi nol, dan mungkin akan jatuh di bawah penggunaan yang adil di sebagian besar yurisdiksi. Tetapi kasus-kasus hukum sangat menyakitkan sehingga saya tidak ingin mengambil risiko.
sumber
Sebagai kode GPL, pertanyaan besar di sini adalah apakah Anda berencana mendistorsi kode Anda atau menjual perangkat lunak Anda.
Jika Anda hanya menggunakannya secara internal, GPL memberi Anda kebebasan penuh untuk melakukan apa yang Anda inginkan.
Jika Anda berencana untuk mendistribusikan paket Anda - cara termudah adalah dengan GPL paket Anda dengan persyaratan yang sama dengan sumber GPL yang Anda gunakan. Ada cara lain tetapi menjadi rumit.
Jika Anda berencana untuk menjual perangkat lunak Anda, Anda harus mendistribusikan kode sumber untuk setiap kode GPL yang Anda gunakan dan / atau diubah di bawah lisensi GPL yang sama dengan yang Anda peroleh.
sumber
Jika Anda menggunakan C ++ dan bukan C, hindari masalah ini dengan menggunakan pustaka standar
std::min
ataustd::max
di<algorithm>
:http://www.cplusplus.com/reference/algorithm/min/
Itu membeli Anda secara umum, dan itu akan bekerja untuk semua jenis yang sebanding. Juga: ketika apa pun d-bag mencoba mengklaim bahwa mereka menciptakannya dan dilindungi oleh paten perangkat lunak, mereka akan bergemuruh dengan komite ISO ... bukan Anda.
Dalam kasus umum, catat siapa yang menerbitkan kode. Korporasi, atau individu yang waras? Jika itu adalah individu yang waras (seperti halnya dengan banyak sumber terbuka), tulis catatan yang bagus untuk mereka dan dapatkan izin. Simpan tanggapan mereka dengan mengatakan tidak apa-apa. Masalah terpecahkan.
sumber
Untuk kasus umum: Kode yang lebih kompleks yang pasti dapat dilindungi hak cipta, berbeda dengan min dan max (yang mungkin atau mungkin tidak dapat dilindungi hak cipta).
Kemudian Lisensi kode Anda sesuai dengan perpustakaan yaitu GPL! Namun perlu dicatat bahwa ada perpustakaan LGPL (dan GPL dengan pengecualian) yang memungkinkan Anda menggunakan implementasinya sambil memberikan kode apa pun lisensi yang Anda inginkan.
sumber