Apakah LGPL mengizinkan saya melakukan ini?

16

Saya berencana untuk mengembangkan perangkat lunak komersial menggunakan perangkat lunak LGPL.

Dalam perangkat lunak LGPL yang saya gunakan beberapa fungsi di kelas tidak sepenuhnya diimplementasikan. Saya ingin memodifikasi kode LGPL sehingga fungsi kelas dan tidak diimplementasikan dibuat terlihat di luar dll dengan menambahkan dllexport infront kelas dan dengan menambahkan kata kunci virtual infront fungsi.

Kemudian saya berencana untuk mengimplementasikan fungsi-fungsi itu dalam perangkat lunak berpemilik saya. Saya siap untuk mendistribusikan kode LGPL yang dimodifikasi tetapi bukan perangkat lunak berpemilik yang mengimplementasikan fungsi seperti yang saya inginkan.

Apakah itu melanggar syarat dan ketentuan LGPL?

Daenyth
sumber
6
Masalah dengan pertanyaan Anda berada di sini adalah bahwa Anda tidak mencoba menggunakan lisensi dalam semangat yang ditulisnya. Kami mungkin dapat menjawab pertanyaan tentang makna lisensi yang dimaksudkan, tetapi kami tidak dapat masuk ke detail hukum sama sekali dengan andal . Untuk itu, kami hanya dapat merekomendasikan pengacara. Selain itu, apa yang Anda lakukan tergantung pada pertanyaan hukum (apa yang merupakan hasil kerja dari perangkat lunak LGPLed?) Yang belum diselesaikan di AS dalam kasus hukum, dan saya telah melihat pendapat yang berbeda di antara pengacara yang sebenarnya. (Saya bukan pengacara, tapi saya dengan santai mengikuti masalah ini.)
David Thornley
Sulit untuk dikatakan. Baca ini: javalobby.org/java/forums/t15903.html - mereka berbicara tentang Jawa, tetapi tampaknya berlaku untuk semua bahasa OO.
Mike Baranczak

Jawaban:

26

Ini adalah pertanyaan yang kompleks, tetapi saya percaya bahwa apa yang Anda usulkan tidak diizinkan.

Anda menyarankan menambahkan kait ke perpustakaan untuk memudahkan Anda membuat sub-kelas perpustakaan dan setidaknya, setidaknya. untuk memotong semangat LGPL.

Masalahnya adalah, jika Anda mensubkelas kelas yang tunduk pada lisensi LGPL dalam kode Anda sendiri, maka pekerjaan Anda menjadi karya berdasarkan pustaka , bukan karya yang menggunakan pustaka yang berarti bahwa kode Anda merupakan turunan dari pekerjaan yang dicakup dalam bagian 2 ( LGPL v2.1 ) daripada yang dicakup dalam bagian 6 ( LGPL v2.1 ). Yaitu menjadi tunduk pada LGPL !

Saya pikir Stephen Colebourne memberikan ringkasan yang bagus tentang javalobby.

Saya bukan penggemar berat bicara kasar dengan saran pengacara Anda , tetapi dalam hal ini saya pikir akan sangat layak untuk melakukannya jika Anda berencana untuk melanjutkan ini, jika tidak, Anda mungkin akan mendapatkan surat jahat dari Perangkat Lunak Bebas Tim hukum yayasan .

Sebagai alternatif, Anda dapat menanyakan FSF secara langsung. Dari halaman kontak mereka :

Untuk pertanyaan tentang lisensi dan hak cipta perangkat lunak bebas

Silakan periksa FAQ perizinan kami , daftar lisensi , informasi umum copyleft , dan halaman terkait . Jika masih ada pertanyaan, kirim email ke <[email protected]>.

Kebetulan, dalam pertanyaan terkait Refleksi dan LGPL , gbjbaanb menjawab dengan perspektif LGPL 3.0 .

Mark Booth
sumber
4
Saya suka saran "minta FSF"
ZJR
Bacaan saya adalah bahwa mereka ingin mengekspos lebih banyak fungsi dalam lib LGPL. Selama lib yang dihasilkan masih LGPL dan pengguna perangkat lunak OP bebas untuk mengganti lib dengan build mereka - saya akan senang
Martin Beckett
3
@ MartinBeckett - Tidak cukup, si penanya mencoba untuk menghindari LGPL dengan memodifikasi perpustakaan untuk membuatnya lebih mudah baginya untuk secara diam-diam memodifikasi perpustakaan dalam kode sumber tertutupnya. Jika ia menambahkan fungsi pustaka barunya ke LGPL secara langsung dan kemudian menggunakannya dalam kode sendiri, tidak akan ada masalah. Itu fakta bahwa dia mencoba untuk menjaga sumbernya sendiri ditutup fungsi baru namun masih bagian dari perpustakaan, itulah masalahnya.
Mark Booth
6
LGPL 3.0 menyatakan: "Mendefinisikan subkelas dari kelas yang ditentukan oleh Perpustakaan dianggap sebagai mode menggunakan antarmuka yang disediakan oleh Perpustakaan." Jadi ini harus diizinkan, setidaknya di bawah LGPL 3.0.
David
3
@ David - Saya percaya bahwa dengan memodifikasi pustaka LGPL untuk memungkinkan Anda untuk menimpa fungsi yang biasanya tidak dapat ditunggangi, Anda secara diam-diam mengakui bahwa kode Anda cukup erat digabungkan sehingga kode tersebut memiliki 'berdasarkan pada' dan bukan berdasarkan hubungan 'digunakan oleh' dengan perpustakaan, sehingga copyleft yang lemah diaktifkan.
Mark Booth
13

Standar Saya bukan penafian pengacara.

LGPL memerlukan modifikasi pada kode sumber perpustakaan untuk didistribusikan kepada siapa saja yang menggunakan kode Anda. Itu tidak mengharuskan kode Anda, yang menggunakan perpustakaan, bersumber terbuka dan dirilis di bawah lisensi yang sama.

Wikipedia untuk deskripsi LGPL yang lebih terperinci, tetapi non-pengacara, termasuk bagian tentang warisan kelas .

unholysampler
sumber
+1. Untuk meringkas: kami pikir itu tidak melanggar LGPL (tapi IANAL)
MarkJ
@ MarkJ - Seperti yang saya jelaskan dalam jawaban saya , saya tidak yakin seperti yang diajukan, pertanyaannya hanyalah masalah warisan kelas.
Mark Booth
9
Saya pikir orang hanya suka mengetik IANAL karena mengandung "ANAL".
g33kz0r
5

"Saya ingin memodifikasi kode LGPL ..." ini mengatakan cukup bahwa Anda harus melepaskan salah satu dari kode yang dimodifikasi itu. Kemudian memperluas apakah memperluas atau tidak kode yang dimodifikasi adalah karya turunan untuk diperdebatkan dan jika demikian menjadi tunduk pada LGPL.

Apa yang tampaknya Anda coba lakukan adalah menghindari LGPL, yang dalam hal ini dengan teknik ini Anda tidak bisa.

Jika ini adalah karya turunan, maka ketentuan program harus memungkinkan untuk "modifikasi untuk penggunaan pelanggan sendiri dan rekayasa terbalik untuk debugging modifikasi tersebut." Apakah sebuah karya yang menggunakan program LGPL adalah karya turunan atau bukan merupakan masalah hukum.

Tetapi jika apa yang Anda coba lakukan adalah menghindari LGPL saya akan menghubungi FSF seperti yang direkomendasikan oleh Mark Booth .

Komunitas
sumber
1
Masalahnya adalah, LGPL memungkinkan beberapa bentuk karya turunan, sementara melarang yang lain. Saya telah memperbarui jawaban saya untuk membuat perbedaan antara karya turunan yang termasuk dalam kategori karya berdasarkan perpustakaan (yang harus LGPL) dan karya yang menggunakan perpustakaan (yang tidak).
Mark Booth
@MarkBooth Saya setuju dengan Anda dan orang lain, bahwa dalam hal ini work based onkarena mereka membuat perubahan pada LGPL untuk mengekspos kode pribadi yang sebelumnya.
1

Tebakan saya: (tapi IANAL) Anda harus merilis sebagai sumber terbuka pustaka yang dimodifikasi sebagai kode LGPL dan kemudian menjatuhkannya dalam program komersial. Itu akan berhasil. Secara efektif Anda akan berakhir memiliki garpu sumber terbuka perpustakaan di sekitar dan kemudian Anda akan menjual ujung depan untuk itu.

Tetapi seperti yang banyak orang katakan, tanyakan pada FSF : ini adalah skenario patologis yang menarik yang Anda miliki di sana; mereka mungkin bertanya-tanya sebanyak yang Anda lakukan apakah itu berlaku atau tidak. (atau paling tidak cukup repot mempublikasikan entri FAQ tentang topik tersebut)

ZJR
sumber
1

https://www.gnu.org/licenses/lgpl-java.html

Jika Anda mendistribusikan aplikasi Java yang mengimpor perpustakaan LGPL, mudah untuk mematuhi LGPL. Lisensi aplikasi Anda perlu memungkinkan pengguna untuk memodifikasi perpustakaan, dan merekayasa balik kode Anda untuk men-debug modifikasi ini. Ini tidak berarti Anda perlu memberikan kode sumber atau detail apa pun tentang internal aplikasi Anda. Tentu saja, beberapa perubahan yang mungkin dilakukan pengguna ke perpustakaan dapat merusak antarmuka, menjadikan perpustakaan tidak dapat bekerja dengan aplikasi Anda. Anda tidak perlu khawatir tentang hal itu — orang yang memodifikasi perpustakaan bertanggung jawab untuk membuatnya berfungsi.

Singkatnya, tidak ada masalah dengan warisan selama Anda tidak mengubah kode perpustakaan itu sendiri, tetapi bahkan jika Anda mengubahnya, Anda diharuskan untuk melepaskan hanya kode yang dimodifikasi perpustakaan, bukan kode aplikasi Anda.

Nik.B
sumber
1
Jawaban Anda bertentangan dengan beberapa jawaban lain tetapi tidak banyak mendukung klaim Anda. Jawaban lain lebih rinci dan melakukan pekerjaan yang lebih baik untuk menjelaskan pernyataan mereka. Harap edit jawaban Anda untuk memberikan kutipan yang relevan dari lisensi atau FSF untuk mendukung klaim Anda.
Bagaimana sebenarnya jawaban saya tidak banyak mendukung klaim saya? Saya telah memasang tautan ke halaman resmi GNU yang menghapus kebingungan tentang LGPL dan warisan kelas. Bahkan diperbarui untuk mencakup LGPL v3.
Nik.B