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:
- untuk MPL: ke file yang sama persis dengan perpustakaan asli Anda
- untuk LGPL: ke "pekerjaan berdasarkan perpustakaan" sebagai kebalikan dari "pekerjaan yang menggunakan perpustakaan". Jadi LGPL berpotensi memperpanjang kopyleft-nya ke file baru.
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:
Perhatikan perbedaan antara "karya berdasarkan perpustakaan" dan "karya yang menggunakan perpustakaan". Yang pertama berisi kode yang berasal dari perpustakaan, sedangkan yang kedua harus dikombinasikan dengan perpustakaan untuk dijalankan.
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.