Saya ingin merilis perpustakaan perangkat lunak yang ditulis dalam bahasa pemrograman berorientasi objek berbasis kelas (Java) pada layanan hosting kode sumber berbasis web , yang memungkinkan percabangan proyek untuk digabungkan ke dalam proyek utama (GitHub via pull permintaan). Saya telah meneliti di web dan memberikan banyak pemikiran tentang cara melisensikan perangkat lunak. Apakah saya benar dalam asumsi berikut (dari perspektif IANAL )?
Baik LGPL dan MPL mempromosikan berbagi modifikasi pada perangkat lunak berlisensi LGPL / MPL yang digunakan di dalam proyek perangkat lunak lain. Alih-alih mengharuskan pengguna perpustakaan yang dimodifikasi untuk meng-host garpu terpisah dari perpustakaan, saya dapat mempromosikan berkontribusi ke perpustakaan asli (misalnya melalui permintaan tarik).
Perbedaan utama adalah bagaimana kode berlisensi MPL / LGPL harus ditautkan ke proyek. File kode sumber MPL dapat disalin secara langsung ke proyek perangkat lunak berpemilik (mungkin) ( statis menghubungkan ), sedangkan kode berlisensi LGPL harus terhubung secara dinamis (terkait secara longgar dengan proyek perangkat lunak yang mungkin berpemilik, sehingga pengguna akhir dapat mengganti perangkat lunak berlisensi tersebut perpustakaan untuk versi lain dari perpustakaan perangkat lunak berlisensi).
Tautan dinamis dan karenanya LGPL memberikan hambatan tambahan untuk mengemas produk perangkat lunak berpemilik, tanpa mempromosikan lebih banyak kontribusi ke pustaka perangkat lunak sumber terbuka dibandingkan dengan memiliki tautan statis (dan dengan demikian MPL). Ada LGPL yang dimodifikasi yang memungkinkan tautan statis.
Tidak ada perbedaan lain yang relevan (dari perspektif IANAL ).
Versi lisensi yang lebih lama tidak sesuai dengan kebutuhan saya sebaik yang terbaru.
Seperti yang Anda lihat persyaratan utama saya adalah modifikasi pustaka perangkat lunak yang bisa bermanfaat bagi masyarakat umum tetap open-source, tanpa memaksakan pembatasan dalam menggunakan pustaka perangkat lunak dalam produk berpemilik.
Tidak ada lisensi yang juga memerlukan ekstensi dari pustaka perangkat lunak yang relevan dengan karya asli yang akan dirilis sebagai sumber terbuka, karena ruang lingkup istilah yang relevan dapat sewenang-wenang kecil / besar, sehingga berakhir sebagai GPL yang tidak dapat digunakan dalam produk berpemilik (tanpa melepaskan seluruh sumber).
Saya tergoda untuk menggunakan LPGL yang dimodifikasi , tetapi di sisi lain berkecil hati karena ketidakpopuleran. Berdasarkan poin di atas saya lebih suka MPL.
Pertanyaan: Apakah pernyataan saya di atas benar? Lisensi mana yang harus saya pilih dengan mempertimbangkan persyaratan saya?
Solusi: Dengan bantuan diskusi dalam jawaban yang diterima, saya memilih untuk tetap berpegang pada MPL karena popularitas , kebebasan dalam menghubungkan dan karena itu adalah lisensi resmi yang tidak dimodifikasi .
sumber
Jawaban:
Saya yakin Anda telah menyatakan perbedaan antara Lisensi Publik Mozilla dan Lisensi Publik Umum GNU secara lebih akurat, dan keduanya mungkin sesuai dengan kebutuhan Anda, tetapi Anda melewatkan perbedaan paling penting antara kedua lisensi:
Siapa yang dapat membuat versi baru?
Baik MPL (bagian 10) dan LGPL (bagian 14) termasuk dalam lisensi mereka memberikan hak untuk mengganti versi saat ini dengan versi yang terakhir, dan tidak ada batasan aktual mengenai apa yang dapat masuk ke dalam lisensi tersebut. Meskipun sangat tidak mungkin baik Mozilla Foundation atau Free Software Foundation akan melakukan sesuatu yang gila seperti, katakanlah, buat klausa yang mengatakan "semua kontribusi untuk perangkat lunak ini menjadi milik kami", itu tidak di luar bidang kemungkinan bahwa salah satu organisasi akan merilis versi lisensi baru yang tidak Anda sukai.
Yang memunculkan poin lain tentang menggunakan "LGPL yang Dimodifikasi".
Lisensi yang dimodifikasi bukan lisensi yang sama!
Meskipun Anda memiliki kemampuan yang cukup luar biasa untuk menentukan persyaratan lisensi Anda sendiri, dan pada dasarnya dapat mengatakan "Anda dapat mendistribusikan ini sesuai dengan GPL, tetapi Anda harus memasukkan nama saya di kredit Anda dan membayar saya 1% dari pendapatan yang Anda hasilkan" , setiap kali Anda melakukannya, Anda membuat lisensi baru berdasarkan pekerjaan orang lain. Ini berarti bahwa Anda TIDAK menggunakan MPL atau LGPL, Anda menggunakan "lisensi mucaho" baru.
Apa artinya itu adalah bahwa Anda mungkin tidak akan mendapatkan bantuan dari penulis lisensi asli Anda jika Anda perlu membela interpretasi Anda dari lisensi di dalam ruang sidang, dan sangat mungkin bahwa mereka mungkin mengajukan gugatan untuk mengatakan bahwa versi MEREKA harus berlaku dan bukan milikmu.
Tentu saja, keduanya adalah poin minor. Bahkan "popularitas lisensi" tidak masalah kecuali Anda mengharapkan kode Anda secara langsung dimasukkan ke dalam proyek yang lebih besar.
Secara pribadi, saya pikir MPL adalah pilihan yang lebih baik jika Anda menyukai kompatibilitas hak milik, atau jika pilihannya adalah antara MPL aktual dan lisensi berbeda yang harus Anda edit secara manual berdasarkan LGPL. Kecuali Anda memiliki alasan untuk tidak menggunakan MPL, pergi dengan sesuatu yang didukung oleh yayasan bukan yang mungkin meninggalkan Anda di ruang sidang tanpa bantuan apa pun.
sumber
Jawaban DougM dan AER membuat poin yang adil. MPLv2 dan LGPLv3 dengan pengecualian statis adalah sama tentang peristiwa yang akan memicu copyleft. Namun, saya pikir kami kehilangan perbedaan lain yang sangat penting antara LGPL dan MPL. Ketika copyleft dipicu, copyleft berlaku untuk:
Casing tepi: Menggunakan MPL memungkinkan pengguna untuk tidak membagikan peningkatannya
MPL adalah lisensi copyleft tingkat file. Ini berarti bahwa jika seseorang menanamkannya dalam proyek yang lebih besar (secara statis atau dinamis) dan membuat perubahan pada file Anda, ia hanya perlu merilis perubahan yang dibuat untuk file tertentu ini.
Jika Anda khawatir tentang menjaga integritas basis kode Anda terbuka, ada kasus tepi di mana efek copyleft MPL ini mungkin tidak cukup.
Misalnya, seseorang dapat mengambil salah satu file utama proyek Anda, menambahkan "import my_private_new_file" , dan memodifikasi metode utama Anda misalnya dengan menambahkan "my_private_new_file.newAwesomeFeature.run ()" .
Dan dengan cara ini dia bisa menambahkan fitur baru ke proyek Anda sambil hanya merilis file utama yang dimodifikasi dan menjaga logika sebenarnya dari fitur tertutup sumber baru di "my_private_new_file" .
Memiliki file utama kembali ke komunitas hanya memberi Anda informasi bahwa "hei Anda menambahkan fitur baru" tetapi itu tidak memungkinkan Anda untuk memasukkan fitur baru ini di tempat terbuka ... Ini dapat mengganggu jika fitur baru itu erat -berhubungan dengan masalah yang sedang dipecahkan oleh perpustakaan Anda.
Jelas, itu adalah kasus tepi dan sangat tidak mungkin seseorang ingin melakukan itu, tetapi itu adalah risiko yang harus Anda ketahui ketika menggunakan MPLv2.
LGPL ditulis untuk melarang perilaku semacam itu. Lihat:
Saya mengutip lisensi LGPL asli:
Copyleft hanya berlaku untuk "pekerjaan berdasarkan perpustakaan". Sekarang apa yang dimaksud dengan "karya berdasarkan perpustakaan"? Ini meninggalkan ruang untuk interpretasi. Yang bukan hanya hal yang menyenangkan karena itu berarti mematuhi lisensi Anda menjadi lebih rumit dan karenanya menakutkan. Ini dapat menyebabkan beberapa orang tidak menggunakan perpustakaan Anda.
Dalam hal ini, LGPL lebih membatasi daripada MPL, tetapi juga lebih melindungi integritas proyek.
MPL memudahkan pengguna dari dunia yang dipatenkan untuk memperbaiki perpustakaan Anda dan menggunakannya, sambil tetap harus membagikan perbaikannya
Keuntungan MPL adalah jika pengguna menemukan bug di perpustakaan Anda, ia dapat memperbaikinya secara langsung dalam file, tanpa harus memberikan semua kodenya tetapi hanya menyediakan perbaikan. Secara praktis, ketika mendistribusikan karyanya ke klien, ia hanya dapat memberikan tautan ke garpu proyek Anda yang berisi perbaikan, dan ia baik.
Dengan menggunakan LGPL, segalanya menjadi lebih rumit. Jika seseorang memalsukan proyek Anda, memperbaiki bug, dan menyematkannya secara statis ke dalam perangkat lunak berpemiliknya, ia harus mendistribusikan "pekerjaan berdasarkan perpustakaan" kepada penggunanya di bawah LGPL. Yang merupakan gagasan yang agak kabur, terutama ketika perpustakaan tertanam secara statis ... Dalam hal ini, saya pikir itu adalah alasan asli mengapa tidak ada yang namanya pengecualian "statis" dalam LGPL asli. Itu membuat identifikasi "karya berdasarkan perpustakaan" sepele: itu adalah perpustakaan dinamis yang Anda panggil dalam perangkat lunak berpemilik Anda.
Akibatnya, MPL membuatnya lebih mudah untuk vendor berpemilik untuk menggunakan DAN mengirim perbaikan ke perpustakaan Anda daripada LGPL.
Pada saat yang sama, kebanyakan vendor eksklusif tidak memiliki sumber daya atau waktu untuk masuk ke perpustakaan Anda yang rumit, dan kemungkinan besar tidak akan memperbaikinya sendiri. Mereka lebih suka membuka masalah di repo GitHub Anda, atau mengirim email di milis dan menunggu perbaikan Anda.
Dalam hal ini, LGPL memberlakukan lebih banyak perilaku semacam ini. Tetapi apakah penegakan benar-benar diperlukan?
Kesimpulan
Memilih antara LGPL dan MPL adalah pertanyaan rumit dan, seperti biasa dengan lisensi perangkat lunak, tergantung pada tujuan Anda. Kedua lisensi sangat mirip tetapi pada saat yang sama sangat berbeda. Mereka dirancang untuk tujuan dan filosofi yang sangat berbeda.
LGPL dibuat oleh Free Software Foundation untuk memungkinkan penggunaan luas pustaka Perangkat Lunak Bebas di dunia hak milik tetapi dengan selalu memikirkan ide mempromosikan Perangkat Lunak Bebas dan melawan perangkat lunak berpemilik. Itu semua adalah bagian dari strategi menuju ideologi mereka. Lihat: https://www.gnu.org/licenses/why-not-lgpl.html
MPL adalah lisensi praktis yang dirancang oleh Mozilla untuk menegakkan semacam berbagi-sama ke perpustakaan asli, sambil tetap mendorong orang untuk membuat perangkat lunak berpemilik dan add-on di atas (termasuk Mozilla sendiri), yang merupakan praktik yang diotorisasi oleh FSF melalui LGPL tetapi masih dianggap berbahaya.
Pada dasarnya, MPLv2 dianggap oleh banyak orang sebagai lisensi permisif, sementara LGPLv3 termasuk dengan pengecualian statis jarang disebut dengan cara ini.
EDIT
Saya lupa menyebutkan sesuatu yang penting. LGPLv3 (dengan atau tanpa pengecualian statis) melarang tivoisasi . Anda mungkin berpikir itu "detail" tetapi sebenarnya tidak, tergantung pada tujuan Anda. Apakah Anda peduli tentang kebebasan pengguna? Maka itu bukan detail. Apakah Anda peduli bahwa perpustakaan Anda dapat digunakan pada perangkat Apple? VLC lebih peduli tentang penggunaan, jadi mereka memutuskan untuk menggunakan LGPLv2 yang tidak mengandung batasan seperti itu. Demikian pula, itulah salah satu alasan mengapa Linux terus menggunakan GPLv2 . MPLv2 juga tidak memiliki batasan tiviozation, jelas karena ini adalah lisensi yang dibuat dengan filosofi Open Source yang lebih "praktis" dalam pikiran, bukan ideologi FSF.
Mungkin ada hal-hal "minor" lainnya seperti ini yang saya lewatkan.
sumber