Apakah ada lisensi LGPL yang dimodifikasi yang memungkinkan tautan statis?

21

LGPL mengharuskannya jika suatu program menggunakan perpustakaan LGPL-ed, pengguna harus dapat menautkan kembali program tersebut dengan versi perpustakaan yang berbeda:

...

d) Lakukan salah satu dari yang berikut:

0) Sampaikan Sumber Korespondensi Minimal berdasarkan ketentuan Lisensi ini, dan Kode Aplikasi yang Sesuai dalam bentuk yang sesuai untuk, dan berdasarkan ketentuan yang mengizinkan, pengguna untuk menggabungkan kembali atau menghubungkan kembali Aplikasi dengan versi modifikasi dari Versi Tertaut untuk menghasilkan suatu Pekerjaan Gabungan yang dimodifikasi, dengan cara yang ditentukan oleh bagian 6 dari GNU GPL untuk menyampaikan Sumber Terkait.

1) Gunakan mekanisme perpustakaan bersama yang sesuai untuk menghubungkan dengan Perpustakaan. Mekanisme yang cocok adalah yang (a) menggunakan pada saat run-time salinan Perpustakaan sudah ada pada sistem komputer pengguna, dan (b) akan beroperasi dengan baik dengan versi Perpustakaan yang dimodifikasi yang kompatibel dengan antarmuka dengan Versi Tertaut.

...

Namun dalam beberapa kasus, ini dapat menimbulkan kesulitan yang cukup besar. Secara khusus, program Haskell hampir selalu dikompilasi secara statis. Selain itu, kompiler melakukan optimasi lintas-modul sehingga tidak mungkin untuk mengambil bagian dari kode dan menggantinya dengan yang lain. Jadi sangat sulit untuk memenuhi kondisi ini. (Lihat tautan ini di Haskell Wiki.)

Tautan dinamis akan menjadi solusi, tetapi dalam banyak kasus, ini tidak mungkin. Sebagai contoh:

  • Beberapa platform mungkin tidak memiliki tautan dinamis sama sekali.
  • Beberapa bahasa tidak memiliki kemungkinan penautan dinamis. Atau, tidak mungkin membuat modul multi-platform.
  • Dalam beberapa kasus, tautan dinamis akan mencegah optimalisasi penting. Meskipun saya mengatakan ini jarang merupakan masalah serius, dalam bahasa seperti Haskell kerugian kinerja bisa sangat besar.

Oleh karena itu, saya mencari lisensi standar LGPL yang tidak memerlukan kemungkinan untuk menautkan kembali (dan saya mengerti bahwa itu menghilangkan sedikit kebebasan yang diberikan kepada pengguna). Beberapa proyek menggunakan modifikasi LGPL mereka sendiri, misalnya wxWidgets . Tetapi saya lebih suka menggunakan beberapa lisensi standar yang agak lebih resmi, mungkin diperiksa oleh beberapa ahli hukum, dan (L) GPL kompatibel. Apakah ada yang seperti itu?

(Juga saya akan tertarik untuk mengetahui apakah ada konsekuensi yang tidak terduga dari modifikasi LGPL tersebut.)

Petr Pudlák
sumber
Anda tidak dapat menautkan pustaka luar secara dinamis di Haskell? Itu pasti sangat merepotkan.
Robert Harvey
2
Jika seluruh proyek Anda FOSS, maka ini mungkin bukan masalah. Arahkan mereka pada sumber dan biarkan mereka mengatasinya! :-)
Peter Rowell
2
Apa yang membedakan lisensi itu dari lisensi non-copyleft?
2
@delnan Ada banyak hal lain di LGPL yang sering diinginkan. Misalnya, memerlukan modifikasi apa pun menjadi (L) GPL, atau melarang tivoisasi .
Petr Pudlák
Lisensi wxWindows kira-kira sama resmi, mengingat lisensi itu disetujui oleh OSI .
Joachim Sauer

Jawaban:

12

wxwidgets dilisensikan di bawah dasarnya = LGPL + tautan statis

... pada dasarnya L-GPL (Library General Public License), dengan pengecualian yang menyatakan bahwa karya turunan dalam bentuk biner dapat didistribusikan dengan ketentuan pengguna sendiri. Ini adalah solusi yang memuaskan mereka yang ingin menghasilkan perangkat lunak GPL menggunakan wxWidgets, dan juga mereka yang memproduksi perangkat lunak berpemilik.

wxWidgets adalah Peserta Perangkat Lunak Sumber Terbuka Bersertifikat dalam diskusi yang mengarah pada keputusan ini termasuk orang-orang dari Abisource , Robert Roebling, Julian Smart, Markus Fleck, Karsten Ballueder, dan beberapa saran dari Richard Stallman. Richard telah mengkonfirmasi bahwa lisensi baru tersebut kompatibel dengan aplikasi GPL. Namun, tidak ada batasan signifikan pada aplikasi eksklusif.

Lisensi wxWindows telah disetujui oleh Open Source Initiative , dan Anda dapat menemukan lisensi di situs mereka di sini ...

Martin Beckett
sumber
0mq juga dilisensikan di bawah LGPL dengan pengecualian tautan statis yang eksplisit.
Trevor Powell
4

IANAL, tetapi saya dituntun untuk percaya, bahwa salah satu solusinya adalah menyediakan file objek untuk bagian non-LGPL. Dengan cara itu pengguna dapat menautkan kembali program sehingga bebas mengubah bagian LGPL, memenuhi persyaratan LGPL.

Dengan kata lain, Anda harus memiliki paket sumber, dengan sumber LGPL dan file objek yang dikompilasi dari kode non-LGPL. Jelas Anda kemudian perlu menyediakan file objek untuk setiap arsitektur yang berbeda untuk melepaskan binari, tapi saya rasa ini bukan masalah besar.

Dari sudut pandang pengembangan, yang paling sederhana mungkin hanya memiliki sistem build juga membangun paket sumber pada saat yang sama, ketika membangun biner untuk distribusi.

Hyde
sumber
apakah Anda memiliki skenario nyata di mana ini telah dilakukan?
knocte
3

Saya menemukan satu dengan Google: lisensi OpenScales

OpenScales dirilis di bawah versi 3 dari GNU Lesser Public License (LGPL, tersedia di sini ), dengan pengecualian terkait dengan pengecualian tautan statis (lihat di bawah) ...

Selain teks lisensi LGPL, pengecualian untuk ketentuan LGPL berlaku untuk OpenScales:

Sebagai pengecualian khusus untuk GNU Lesser General Public License versi 3, Anda dapat menyampaikan kepada pihak ketiga file yang dapat dieksekusi dari Combined Work yang menautkan, secara statis atau dinamis, bagian dari Perpustakaan ini dalam file yang dapat dieksekusi, menyampaikan Sumber yang Berkorespondensi Minimal tetapi tanpa perlu menyampaikan Kode Aplikasi yang Sesuai di bawah bagian 4d0 dari Lisensi Publik Umum GNU, selama Anda menggunakan versi Perpustakaan yang tidak terdistribusi secara publik yang tidak dimodifikasi. Pengecualian ini tidak membatalkan alasan lain mengapa file yang dapat dieksekusi mungkin dicakup oleh Lisensi Publik Umum GNU atau GNU General Public License.

Ini bukan standar, dan saya tidak tahu apakah ada.

Minthos
sumber
1

Bagaimana Anda akan terus menjamin kebebasan pengguna? Saya percaya jawaban "benar" adalah dengan menautkan shim yang secara dinamis memuat perpustakaan.

stonemetal
sumber
Ya, itu solusi terbaik. Namun dalam beberapa kasus, tautan dinamis tidak dimungkinkan. Beberapa bahasa tidak memiliki kemungkinan ini. Atau beberapa platform tidak memiliki kemungkinan ini.
Petr Pudlák
Sebenarnya linker melakukan hal ini, ketika Anda secara dinamis menghubungkan ke perpustakaan.
Calmarius