LGPL lisanslı bir kütüphaneyi kullanırsam tam olarak ne yapmam gerekir?


48

Bu soruları ve cevapları okudum , ancak LGPL lisansı kullanan bir kütüphaneyle (benim durumumdaki SDL kütüphanesi) dinamik olarak bağlanırsam tam olarak ne yapmam gerektiğini anlamıyorum.

Ben anlamak LGPL metni doğru, ben bir şekilde kütüphane için kaynağı sağlamak gerekir. Bu yeterli mi? Eğer değilse, başka ne yapılması gerekiyor?

Yanıtlar:


47

LGPL'nin temel gereksinimi, LGPL lisanslı kütüphaneyi ve kendi ürününüzü yeterince ayırmaktır . Bu, kullanıcıların yazılımınızla birlikte gönderdiğiniz sürüm yerine kendi kitaplık sürümlerini sağlamalarına izin vermelidir (örneğin, hatalar giderilmiş). Bunu başarmak için iki seçeneğiniz var:

  • LGPL kodunu paylaşılan bir kitaplık olarak kullanın (böylece kullanıcılar yalnızca kitaplıkların ikilisini gönderdiğiniz kitaplığın üzerine kopyalarlar) veya
  • Tüm projenin kaynak kodunu girin (böylece kullanıcılar kitaplık kaynaklarını kopyalayabilir ve her şeyi yeniden derleyebilir).

Bununla birlikte, yalnızca ayırmanın gerekli olsa da yeterli olmadığını unutmayın. Kullanıcılarınıza bir kitaplığı sürümleriyle değiştirmenin belgelenmiş bir yolunu sağlamalısınız (örn., Bellenimin nasıl yükleneceği veya bir LGPL C ++ kitaplığı için bir Python sargısını yeniden derleme).

İkinci önemli madde, atıf gereksinimidir . Bu , kütüphanenin orijinal geliştiricisinin adını tanıtmaya yardımcı olmalı ve havalı yazılımın başka biri tarafından geliştirilebileceğini belirtmelidir :). "Hakkında" penceresinin veya bir README dosyasının (lisansınız Apache ise bu NOTICEdosya olacaktır ) ilgili bölümünde, kullandığınız LGPL çalışmasının adını listelemelisiniz.

Avukat olmadığımı ve bunun yasal bir tavsiye olmadığını unutmayın. Ayrıca tesisatçı olmadığımı ve bu sıhhi bir tavsiye olmadığını unutmayın.


13

LGPL kitaplığını statik olarak bağlıyorsanız, kitaplığın kaynağını ve uygulamanızın kaynak ya da nesne kodunu sağlamanız gerekir.

LGPL kitaplığını dinamik olarak bağlarsanız, uygulamanızı yalnızca kitaplık olmadan tek başına dağıtabilir ve insanlara nereden indirebileceklerini, nasıl kullanacaklarını, kullanacaklarını söyleyebilirsiniz. Veya uygulamanızla birlikte kitaplık ikili dosyalarının ve kaynaklarının bir kopyasını ekleyebilirsiniz.

Bu oldukça iyi açıklıyor: http://answers.google.com/answers/threadview/id/439136.html (OP ile bağlantılı sorudaki bir cevabından aldım)

IANAS


2
^ Bu. Anahtar şudur: Ürün tüketicisi bir LGPL'd kütüphanesi ile başvuru alır. LGPL'nin parçasında bir iyileştirme yapabilirler ve yeni geliştirilmiş sürümünü orijinal ürünle kullanabilirler mi? Cevabınız evet ise, LGPL'nin amacına uygun hareket etmiş olursunuz. LGPLv3, ürün gömülü bellenim olsa bile , son kullanıcının LGPL'd parçasını değiştirmesini mümkün kılmanız gerektiğini açıkça belirtir . Bu, tam bellenimi kütüphanenin yeni bir sürümüyle yeniden derleyebilme ve cihaza yükleyebilme anlamına gelir . (Benim anlayışım, IANAL, bu yasal bir tavsiye değil.)
Scott Whitlock

@Scott: Katıştırılmış / ürün yazılımı bölümünün yalnızca aygıt üzerindeki aygıt yazılımını değiştirmenin mümkün olması durumunda geçerli olduğuna inanıyorum.
David Thornley

"IANAS" daki "S" ne anlama geliyor?
Joe Z.

1
@JoeZeng Avukat
Matt Ellen

1

IANAL, ancak benim anladığım kadarıyla LGPL'nin amacı GPL veya AGPL gibi ona bağlı olarak kodu "enfekte etmemesi" olmasıdır. Böylece LGPL kodunu bir bağımlılık olarak kullanabilirsiniz ve hiçbir şey yapmanıza gerek kalmaz.

Varlık değiştirmek / / dağıtmak LGPL kodunu değiştirmek durumunda, söz konusu olan uygulamanızda, bu kod kamuya açık hale getirmek gerekir.


Orijinal kaynağı / repo ile bağlantılı bir URL dahil ederek "kaynağı halka açık hale getirme" nin tatmin olabileceğine dair bir anlaşma / anlayış var mıydı? (Ürününüz için değiştirilmemiş bir versiyon kullandığınızı varsayarsak, elbette.) Bunu duyduğumda biraz şaşırmıştım, bu yüzden aslında yanlış yapılmış olabilirdi :).
TMN
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.