DougM ve AER'nin cevabı adil bir noktaya değiniyor. Statik istisna içeren MPLv2 ve LGPLv3, copyleft'i tetikleyecek olaylarla aynıdır. Ancak, LGPL ve MPL arasında çok önemli bir fark eksik olduğunu düşünüyorum. Copyleft tetiklendiğinde, copyleft şunlara uygulanır:
- MPL için: orijinal kütüphanenizin tam olarak aynı dosyalarına
- LGPL için: “Kütüphaneyi kullanan esere” karşı “kütüphaneye dayalı esere”. Böylece LGPL, copyleft'i yeni dosyalara genişletebilir.
Son durum: MPL kullanmak, kullanıcıların geliştirmelerini paylaşmamalarını sağlar
MPL, dosya düzeyinde bir copyleft lisansıdır. Biri daha büyük bir projeye (statik veya dinamik olarak) katıştırırsa ve dosyanızda değişiklik yaparsa, yalnızca bu dosyaya yapılan değişikliği serbest bırakması gerektiği anlamına gelir.
Kod tabanınızın bütünlüğünü açık tutma konusunda endişeleriniz varsa, MPL'nin bu copyleft etkisinin yeterli olmayabileceği bazı durumlar vardır.
Örneğin, birisi projenizin ana dosyasından birini alabilir, "import my_private_new_file" ekleyebilir ve örneğin "my_private_new_file.newAwesomeFeature.run ()" ekleyerek ana yönteminizi değiştirebilir .
Bu şekilde projenize yeni özellikler ekleyerek yalnızca değiştirilen ana dosyayı serbest bırakıp yeni özellik kapalı kaynağının gerçek mantığını "my_private_new_file" de tutabilir .
Ana dosyanın topluluğa geri dönmesi size sadece "yeni bir özellik eklediniz" bilgisini verir, ancak bu yeni özelliği açıklığa dahil etmenize izin vermez ... Yeni özelliğin yakın olması sıkıcı olabilir Kütüphanenizin çözmeye çalıştığı sorunla ilgili.
Açıkçası, bu son bir durum ve birinin bunu yapmak istemesi pek mümkün değil, ancak MPLv2'yi kullanırken dikkat etmeniz gereken bir risk.
LGPL, bu tür davranışları yasaklamak için yazılmıştır. Görmek:
Orijinal LGPL lisansını alıntı yapıyorum:
Bir "kütüphaneye dayalı çalışma" ile "kütüphaneyi kullanan çalışma" arasındaki farka dikkat edin. Birincisi kütüphaneden türetilmiş kodu içerir, oysa ikincisi çalıştırılmak için kütüphaneyle birleştirilmelidir.
Copyleft sadece “kütüphaneye dayalı iş” için geçerlidir. Şimdi pratikte "kütüphaneye dayalı çalışma" nedir? Yorumlamaya yer bırakıyor. Bu, yalnızca hoş bir şey değildir, çünkü lisansınıza uymak daha karmaşık ve dolayısıyla korkutucu hale gelir. Bazı insanların kütüphanenizi kullanmamasına yol açabilir.
Bu anlamda, LGPL, MPL'den daha kısıtlayıcı olmakla birlikte, projenin bütünlüğünden daha fazla koruyucudur.
MPL, özel dünyadaki kullanıcıların kütüphanenizi düzeltmesini ve kullanmasını kolaylaştırırken, yine de düzeltmeyi paylaşmak zorunda kalıyor
MPL'nin bir avantajı, bir kullanıcı kitaplığınızda bir hata bulduğunda, tüm kodunu vermek zorunda kalmadan, yalnızca düzeltmeyi sağlamak zorunda kalmadan dosyayı doğrudan düzeltebilir. Pratik olarak, çalışmalarını bir müşteriye dağıttığında, düzeltmeyi içeren projenizin bir çatalına bir bağlantı sağlayabilir ve iyi.
LGPL kullanarak, işler daha karmaşık. Birisi projenizi onaylarsa, bir hatayı düzeltir ve onu kendi özel yazılımına statik olarak yerleştirirse, kullanıcılarına LGPL'nin altındaki "kütüphaneye dayalı eseri" dağıtması gerekir. Özellikle kütüphane statik olarak gömülü olduğunda, oldukça karanlık bir kavramdır ... Bu bağlamda, orijinal LGPL'de "statik" bir istisna olarak böyle bir şeyin olmamasının asıl nedeni olduğunu düşünüyorum. "Kütüphaneye dayalı eserler" in tanımlanmasını önemsiz kılar: Özel yazılımınızda çağırdığınız dinamik kütüphanedir.
Sonuç olarak, MPL, tescilli satıcıların kullanımı ve Kütüphane'nize düzeltme göndermeyi LGPL'den ilginç bir şekilde kolaylaştırır.
Aynı zamanda, çoğu zaman tescilli satıcıların kaynakları veya kütüphanenizin içine dalmak için zamanları yoktur ve büyük olasılıkla kendi başlarına çözemezler. GitHub deponuzda bir sorun açmayı tercih ederler ya da posta listesine bir e-posta göndererek düzeltmenizi beklerler.
Bu bağlamda, LGPL bu tür davranışları daha da zorlar. Ancak yaptırım gerçekten gerekli mi?
Sonuç
LGPL ve MPL arasında seçim yapmak zor bir soru ve her zamanki gibi yazılım lisansıyla amacınıza bağlı. Her iki lisans da çok benzer ancak aynı zamanda son derece farklı. Çok farklı amaçlar ve felsefe için tasarlandılar.
LGPL, Özgür Yazılım kütüphanelerinin mülk dünyadaki yaygın şekilde kullanılmasını sağlamak için Özgür Yazılım Vakfı tarafından yapılmıştır, ancak Özgür Yazılım'ı teşvik etme ve mülk yazılımlara karşı mücadele etme fikri her zaman akılda tutulmuştur. Hepsi kendi ideolojilerine yönelik bir stratejinin parçası. Bakınız:
https://www.gnu.org/licenses/why-not-lgpl.html
MPL, Mozilla tarafından orijinal kütüphaneye benzer bir çeşit paylaşım sağlamak için tasarlanmış pratik bir lisansken, FSF tarafından yetkilendirilmiş bir uygulamadır. LGPL ancak yine de zararlı olarak değerlendiriliyor.
Temel olarak, MPLv2 birçok kişi tarafından izin verilen bir lisans olarak kabul edilirken, statik istisna dahil olmak üzere LGPLv3'e nadiren bu yol denir.
DÜZENLE
Önemli bir şeyden bahsetmeyi unuttum. LGPLv3 (statik istisna olmadan veya istisnasız) geçişi yasaklar . Bunun bir "ayrıntı" olduğunu düşünebilirsiniz, ancak amacınıza bağlı olarak aslında değildir. Kullanıcıların özgürlüğü ile ilgileniyor musunuz? O zaman bir detay değil. Kütüphanenizin Apple'ın cihazında kullanılmasına önem veriyor musunuz? VLC, kullanılmaya daha fazla önem veriyor , bu nedenle böyle bir kısıtlama içermeyen LGPLv2'yi kullanmaya karar verdiler . Benzer şekilde, Linux'un GPLv2'yi kullanmaya devam etmesinin nedenlerinden biri de budur . MPLv2, FSF ideolojisi değil, akılda daha "pratik" Açık Kaynak felsefesiyle oluşturulan bir lisans olduğundan, herhangi bir tiviozation kısıtlaması yoktur.
Özlediğim başka "küçük" şeyler de olabilir.