Bisakah GPL diterapkan ke karya turunan?

13

Ada tiga proyek perangkat lunak: A, B dan C.

A diterbitkan untuk siapa saja dan dilisensikan di bawah GPL.

B extends A, diterbitkan juga, tetapi tidak memiliki informasi lisensi atau keliru dilisensikan di bawah LGPL. Pada dasarnya itu melanggar lisensi A dengan tidak menjadi GPL. Kode sumber B masih tersedia.

C meluas B. Bisakah C dipublikasikan di bawah GPL? Motivasi akan menjadi "A adalah GPL, turunan apa pun juga harus GPL, jadi B adalah GPL dan C juga bisa menjadi GPL".

Andrej
sumber
5
Apa bagian dari B yang diperpanjang C? Jika mereka semua sudah dalam A, saya tidak melihat masalah. Jika C meluas bagian B yang mana tidak dalam A, semuanya menjadi menarik.
Saya akan menyebutkan proyek A, B, C dan menghubungi penulis B.
Basile Starynkevitch
1
Juga, saya percaya bahwa Anda setidaknya bisa menerbitkan C di bawah GPL, karena GPL kompatibel dengan LGPL. Tapi IANAL
Basile Starynkevitch
2
@Tichodroma, C meluas bagian B, tetapi B tidak bisa ada tanpa A :)
Andrej
Apakah penulis C juga menulis (bagian dari) A? Jika tidak, kami tidak tahu lisensi apa yang diberikan oleh penulis A kepada B, jadi kami tidak tahu apakah kami dapat mengembangkannya?
bekerja

Jawaban:

23

Pertama, B melanggar GPL pada A. Tapi itu bukan kekhawatiran Anda dan tidak relevan dengan pertanyaan di sini (siapa tahu, mungkin B mendapat lisensi LGPL dari A pada kode mereka sehingga dapat dirilis di bawah LGPL? ).

Pertanyaannya adalah "Bisakah Anda membuat perangkat lunak GPL berdasarkan kode LGPL?" Jawabannya adalah "ya".

LGPL tidak seketat GPL (jadi mengapa B melanggar lisensi pada A kecuali ada ketentuan lain yang dibuat), tetapi juga memungkinkannya untuk dikembalikan ke proyek GPL dengan cukup mudah.

Dari lisensi LGPL:

  1. Kode Obyek Memasukkan Bahan dari File Header Perpustakaan. Bentuk kode objek Aplikasi dapat memasukkan materi dari file header yang merupakan bagian dari Perpustakaan. Anda dapat menyampaikan kode objek tersebut berdasarkan ketentuan pilihan Anda, asalkan, jika materi yang dimasukkan tidak terbatas pada parameter numerik, tata letak dan pengakses struktur data, atau makro kecil, fungsi dan templat inline (panjang sepuluh atau lebih sedikit garis), Anda lakukan kedua hal berikut:

    a) Berikan pemberitahuan menonjol dengan setiap salinan kode objek bahwa Perpustakaan digunakan di dalamnya dan bahwa Perpustakaan dan penggunaannya dilindungi oleh Lisensi ini.
    b) Menemani kode objek dengan salinan GNU GPL dan dokumen lisensi ini.

Itu bagian dari lisensi. Anda dapat dengan mudah membangun perangkat lunak GPL berdasarkan kode LGPL.

Ada beberapa perbedaan versi yang harus Anda perhatikan untuk memastikan bahwa kode dilisensikan dengan cara yang benar, di bawah versi GPL yang benar.


Jika tidak ada informasi lisensi yang disajikan, Anda tidak memiliki hak untuk memperpanjangnya. B seharusnya tidak didistribusikan, tetapi kontribusinya tidak dilisensikan di bawah lisensi sumber terbuka. Ini mungkin merupakan proyek internal yang dipublikasikan atau acara lainnya.

Itu tidak disajikan di bawah lisensi yang kompatibel dengan perpanjangan dengan GPL. Pertimbangkan situasi di mana sebuah perusahaan, menggunakan perangkat lunak GPL secara internal (dapat diterima - bukan pelanggaran), membuat repo mereka dipublikasikan.

Dalam kasus ini, sangat mungkin bahwa proyek C melanggar pelanggaran hak cipta itu sendiri (materi yang ditambahkan B yang tidak berlisensi di bawah GPL karena seharusnya tidak didistribusikan di tempat pertama).

Seseorang tidak dapat memaksakan lisensi pada sumber orang lain. Itu sesuai dengan lisensi, atau melanggar itu. Jika itu melanggar, maka sebagaimana tercantum dalam lisensi:

Anda tidak dapat menyebarkan atau memodifikasi karya yang tercakup kecuali yang secara tegas disediakan di bawah Lisensi ini. Segala upaya untuk menyebarkan atau memodifikasinya tidak berlaku, dan akan secara otomatis mengakhiri hak Anda berdasarkan Lisensi ini (termasuk lisensi paten apa pun yang diberikan berdasarkan paragraf ketiga pasal 11).

Pelanggaran terhadap GPL tidak berarti bahwa materi tersebut berada di bawah GPL, melainkan bahwa materi tersebut tidak dapat didistribusikan.


sumber
3
Jawaban yang bagus. Apakah Anda mempertimbangkan untuk berkomitmen pada proposal Open Source Stackexchange ?
Philipp
5
@Andrej Satu-satunya orang yang memiliki hak untuk menentukan bagaimana B dilisensikan adalah orang-orang yang menulis B. Jika A adalah GPL'ed, mereka memiliki opsi untuk "tidak mendistribusikan" atau "lisensi sebagai GPL". Bahwa itu didistribusikan secara keliru, tidak berarti bahwa itu dilisensikan sebagai GPL.
6
Juga, tangkapan bagus pada "Anda tidak tahu apakah B mendapat lisensi yang berbeda dari penulis A;" mungkin saja B sama sekali tidak melanggar hak cipta A, karena Anda tidak tahu B menggunakan A di bawah GPL (penulis A dapat menerbitkan sebanyak mungkin lisensi dari berbagai jenis yang mereka inginkan, dan misalnya dapat menawarkannya di bawah GPL dan menjual lisensi untuk itu yang memungkinkan Anda menggunakannya dalam kode berpemilik).
cpast
1
Dalam kasus di mana penulis B menerima A di bawah lisensi GPL, fakta distribusi tidak memaksa GPL pada B. Tetapi apakah ada lisensi yang akan melakukan ini? Jadi seseorang dapat menerbitkan perangkat lunaknya dan memastikan bahwa siapa pun akan mendapatkan akses ke semua turunan yang diterbitkan di masa mendatang? Dan mengizinkan siapa pun untuk memaksakan lisensi pada turunannya. (Saya dapat memulai pertanyaan baru untuk yang ini :))
Andrej
2
Keempat, EULA jauh, jauh, jauh lebih dipertanyakan secara hukum daripada GPL. GPL tidak memberlakukan batasan; setiap pembatasan sebenarnya dari undang-undang hak cipta menurut undang-undang (yang dilakukan GPL adalah mengesampingkan pembatasan-pembatasan tersebut dalam beberapa kasus). Itu sebabnya GPL bekerja dengan sangat baik - tidak ada yang namanya "pelanggaran GPL," hanya ada pelanggaran hak cipta . Dengan EULA, Anda perlu membuat orang setuju untuk membatasi diri; ini berarti Anda berada di ranah hukum kontrak, yang sangat suram dan dipenuhi dengan kemungkinan pembelaan, seperti seseorang yang tidak setuju (Anda tidak perlu menyetujui hak cipta).
cpast
4

Ada pemegang hak cipta: Ada hak cipta atas karya yang dibuat oleh A, ada hak cipta pada penambahan oleh B, dan ada hak cipta atas setiap perubahan yang dilakukan C. C harus memeriksa apakah ia memiliki izin untuk menggunakan perangkat lunak tempat A dan B memiliki hak cipta.

A dilisensikan di bawah GPL. Saya cukup yakin bahwa GPL memberi Anda izin untuk menggunakan karya A berdasarkan ketentuan GPL, bahkan jika Anda menerimanya dari B yang melisensikannya secara tidak benar. Mungkin ada masalah praktis: Misalnya, Anda harus dapat memberikan kode sumber. Jika Anda menerima perangkat lunak tanpa kode sumber, maka Anda tidak memiliki cara untuk menerbitkannya di bawah ketentuan GPL.

B dilisensikan dengan lisensi lain. B seharusnya dilisensikan di bawah GPL, tetapi tidak. Jika lisensi B memberi Anda lebih banyak hak daripada GPL, Anda sebenarnya tidak memiliki hak apa pun untuk kode A - B tidak dapat memberi Anda hak tambahan untuk kode A. Anda dapat menggunakan kode A di bawah persyaratan GPL karena A mengizinkannya, dan kode tambahan B di bawah lisensi B.

Jika B merilis kode mereka di bawah lisensi yang lebih ketat dari GPL, maka B kemungkinan besar akan melakukan pelanggaran hak cipta. Anda tidak dapat menggunakan kode B di bawah lisensi GPL. Itu sering membingungkan: GPL tidak bisa memaksa B untuk melakukan apa pun. Ini hanya memberi B pilihan: Terbitkan dengan cara ini, dan itu sah secara hukum, atau terbitkan dengan cara lain, dan itu ilegal. B memiliki hak untuk melakukan sesuatu yang ilegal dan menderita akibatnya (dituntut karena pelanggaran hak cipta). Anda tidak memiliki hak apa pun atas kode B yang B tidak berikan kepada Anda.

gnasher729
sumber
3

Secara teknis, dimungkinkan untuk memperluas perpustakaan GPL dengan kode yang itu sendiri tidak dicakup oleh lisensi GPL. Masalahnya adalah ketika Anda mendistribusikan karya turunan yang Anda buat, Anda harus mematuhi semua persyaratan yang diberikan GPL pada Anda.

Dalam situasi Anda, ini berarti bahwa dimungkinkan untuk memiliki perpustakaan A di bawah GPL dan kode baru di perpustakaan B di bawah LGPL. Karya gabungan (perpustakaan B) didistribusikan secara efektif di bawah lisensi GPL, dan dapat didistribusikan karena lisensi LGPL kompatibel dengan lisensi GPL (Anda dapat menggunakan kode lisensi LGPL dalam proyek berlisensi GPL).
Dalam situasi itu, sangat baik untuk memiliki kode baru di perpustakaan C di bawah GPL, dengan hasil kerja di bawah GPL juga.

Bart van Ingen Schenau
sumber
Ini hanya berfungsi karena bagian B LGPLed dapat digunakan dengan GPLed A di bawah GPL. Jika kode baru berada di bawah lisensi yang bertentangan dengan GPL (misalnya, semua hak dilindungi undang-undang), Anda tidak dapat menganggap B secara keseluruhan didistribusikan secara efektif di bawah GPL.
cpast
1
@cpast: Anda benar, saya lupa menyebutkan bahwa LGPL kompatibel dengan GPL. Jika lisensi tidak kompatibel, Anda tidak akan diizinkan mendistribusikan hasilnya.
Bart van Ingen Schenau