Bisakah program GPLv2 mengandalkan perpustakaan yang berlisensi Apache?

12

Bisakah program perangkat lunak berlisensi GPL (versi 2) mengandalkan perpustakaan yang dilisensikan di bawah APLv2 tanpa melanggar GPL? Bahasa di sini menunjukkan kepada saya mungkin tidak.

Dalam kasus khusus saya, saya sedang melihat daemon yang menggunakan beberapa perpustakaan eksternal berlisensi-APLv2.

PEMBARUAN (Menanggapi jawaban / komentar.)

  1. Untuk keperluan pertanyaan ini, saya tidak dapat menghapus program utama (daemon)
  2. Program utama telah diperluas dengan fungsionalitas yang menggunakan apr-utildan mungkin komponen APLv2 lainnya

Pertanyaan saya adalah, dapatkah saya melepaskan daemon yang diperluas di bawah GPLv2, atau apakah ini sesuatu yang perlu saya simpan sendiri (tidak ada distribusi) dan / atau implementasikan kembali tanpa APLv2 jika saya berkomitmen untuk (a) merilis ekstensi ini, dan, (B) menjaga daemon GPL?

pilcrow
sumber
2
Dokumen yang Anda tautkan dengan jelas menyatakan bahwa tidak. Namun, sebagian besar kode GPL di luar sana memiliki ketentuan "atau, sesuai pilihan Anda, versi apa pun yang lebih baru", yang berarti Anda dapat memperlakukannya sebagai GPLv3 dan itu OK.
Jan Hudec

Jawaban:

7

Mari kita perjelas beberapa terminologi terlebih dahulu. Ketika FSF mengatakan lisensi kompatibel dengan GPL, mereka tidak memaksudkan apa yang dimaksud oleh banyak orang. Banyak yang mengartikan "kompatibel" berarti kedua perangkat lunak tersebut dapat dengan senang hati hidup berdampingan dalam aplikasi yang sama.

Itu dekat dengan apa yang FSF maksudkan, tetapi ketentuan copyleft dari GPL membawa hal-hal sedikit lebih jauh.

Dari FAQ GPL , beri penekanan pada saya.

Ini berarti bahwa lisensi lain dan GPL GNU kompatibel; Anda dapat menggabungkan kode yang dirilis di bawah lisensi lain dengan kode yang dirilis di bawah GNU GPL dalam satu program yang lebih besar.
Semua versi GNU GPL mengizinkan kombinasi semacam itu secara pribadi; mereka juga mengizinkan distribusi kombinasi tersebut asalkan kombinasi tersebut dirilis di bawah versi GNU GPL yang sama .

Jadi lisensi kompatibel dengan GPL jika persyaratannya dapat diserap di bawah GPL.


Jadi mari kita lihat APLv2 dan GPLv3.

  • APLv2_Lib + GPLv3_Lib => Gabungan lib sebagai GPLv3 tidak apa-apa.
  • APLv2_Lib + GPLv3_Lib => Gabungan lib sebagai APLv2 tidak apa-apa.

Dan Apache mengatakan banyak hal di sini :

Kami menghindari perangkat lunak GPLv3 karena hanya menautkannya dianggap oleh penulis GPLv3 untuk membuat karya turunan. Kami ingin menghormati lisensi mereka.


Tapi Anda bekerja dengan daemon yang dilisensikan di bawah GPLv2, bukan v3.

FSF cukup jelas bahwa apa yang ingin Anda lakukan tidak dapat diterima untuk distribusi publik.

Harap perhatikan bahwa lisensi ini tidak kompatibel dengan GPL versi 2, karena ia memiliki beberapa persyaratan yang tidak ada dalam versi GPL. Ini termasuk terminasi paten tertentu dan ketentuan ganti rugi.

Jadi, untuk menjawab pertanyaanmu:

Tidak , Anda tidak boleh mendistribusikan daemon gabungan menggunakan bahan berlisensi GPLv2 dan APLv2 .
FSF secara eksplisit menyebut kombinasi itu sebagai tidak diperbolehkan untuk distribusi publik.

Alternatif:

  1. Anda yang diperbolehkan untuk menggunakannya secara pribadi.

  2. Anda juga boleh menulis ulang fungsionalitas APLv2 dan kemudian menggabungkan karya baru Anda dengan karya GPLv2.

  3. Anda bisa melihat apakah daemon dapat diubah menjadi GPLv3. Jika demikian, Anda akan berada di clear untuk menggabungkan kerja APLv2 ke daemon GPLv3 yang sekarang.


sumber
2

Pandangan saya setuju dengan OP berdasarkan teks dari tautan ASF OP.

ASF (Apache Software Foundation) tidak suka gagasan kode ASFv2 menjadi bagian dari sistem yang menggunakan GPLv2, berdasarkan informasi terbatas dari kasus Anda dan pemahaman saya tentang berbagai lisensi FOSS: terlepas dari apakah proyek payung memiliki GPLv2 , atau proyek payung adalah GPLv2, berusaha memasukkan ASFv2.

Lebih lanjut tampaknya proyek payung ASFv2 yang memiliki kode GPLv3 tidak boleh terjadi, tetapi proyek payung GPLv3 dapat memiliki kode ASFv2.

Peringatan, mungkin (menurut Gnu), adalah bagaimana mereka berinteraksi satu sama lain. Jika ditautkan, berbagi salinan data yang sama selama eksekusi, mereka adalah satu di program yang sama; Namun, jika mereka bekerja sebagai proses terpisah (mis. bercabang) melewati data antara proses berbeda yang berbeda, apa yang Anda lakukan mungkin diizinkan karena mereka, bagi mereka, program terpisah. Jika menggunakan ruang data bersama selama eksekusi, dan tidak beroperasi dengan proses yang berbeda, maka apa yang Anda lakukan mungkin tidak diizinkan, karena bagi mereka, mereka sama atau terlalu erat digabungkan untuk berbeda atau independen.

JustinC
sumber