2022.05.09
안녕하세요
LGPL 라이선스의 라이브러리 사용을 통한 상용프로그램 개발 시 문의 사항이 있습니다.
해당 상용프로그램의 소스 코드, 목적 파일 등을 공개하지 않고, 고객에게 판매 가능하여야 하는데,
가능한 시나리오가 있을 지 문의드립니다.
사용하려는 LGPL 라이선스 라이브러리는 live555 입니다.
http://www.live555.com/liveMedia/faq.html#copyright-and-license
1) LGPL 라이브러리를 통해 DLL 파일을 생성함. 이때, 해당 라이브러리에는 dllexport, extern C 와 같이 DLL 파일 생성을 위한 소스코드 추가가 필요함. (소스 코드 구현 내용에 있어서는 수정하지 않음). 라이브러리 빌드 후 성공적으로 DLL 파일 생성 후에는 상용프로그램에서 명시적 링크 방식으로 DLL 파일을 불러와서 라이브러리 기능을 사용하여 상용프로그램의 통신 부분 기능을 개발함. 개발된 상용프로그램은 리소스 파일, DLL 파일, EXE 파일으로 배포될 예정임.
2) LGPL 라이브러리 소스코드를 포함한 임의의 프로젝트 생성 또는 LGPL 라이브러리 소스코드를 포함한 Github 등에 공개된 프로젝트를 활용함.
LGPL 라이브러리의 인터페이스 클래스를 상속 및 함수 오버라이딩 방식으로 상용프로그램에 필요한 통신기능들을 작성 후 (원본 LGPL 라이브러리 소스코드에는 코드 추가 및 수정사항 없음) 빌드를 통해 DLL 파일을 생성함. DLL 파일 생성 후에는 상용프로그램에서 명시적 링크를 통해 DLL 파일을 불러와서 라이브러리 기반으로 개발된 통신 기능을 사용함. 개발된 상용프로그램은 리소스 파일, DLL 파일, EXE 파일으로 배포될 예정임.
3) LGPL 라이브러리 소스코드를 빌드하여 Lib 파일을 생성함. 해당 Lib 파일을 정적 라이브러리 링크하고 라이브러리 헤더 파일을 포함하는 임의의 프로젝트를 생성하여, LGPL 라이브러리의 인터페이스 클래스를 상속 및 함수 오버라이딩 방식으로 상용프로그램에 필요한 통신기능들을 작성함. 이후 임의의 프로젝트에 대한 DLL 파일을 생성함. DLL 파일 생성 후에는 상용프로그램에서 명시적 링크를 통해 DLL 파일을 불러와서 라이브러리 기반으로 개발된 통신 기능을 사용함. 개발된 상용프로그램은 리소스 파일, DLL 파일, EXE 파일으로 배포될 예정임.
------ 댓글 -------
License 관리자
안녕하세요
공개소프트웨어 라이선스 관리자입니다.
문의주신 내용 답변드립니다.
LGPL 라이선스는 수정하지 않은 경우 다운로드 받은 공개SW의 출처를 제공함으로써 소스코드 공개의무를 편리하게 이행하지만 기본적으로 소스코드 공개(제공)의무가 포함된 라이선스입니다.
LIVE555 라이브러리는 보내주신 링크와 같이 LGPL을 따르나 특별히 명시하고 있는 내용도포함되어 있습니다.
해당 부분도 상세히 확인하셔야 합니다.
1)의 경우,
dllexport, extern C와 같이 소스코드가 추가 된 DLL 파일 범위의 소스코드 공개의무가 발생할 수 있습니다.
다만, 보내주신 링크에 업급된 내용에 대해 인지를 하고 계셔야 합니다.
그리고, 다이나믹 링킹으로 인해 오브젝트 코드(목적파일)은 고객에게 제공하실 필요가 없어 보입니다.
2)의 경우,
LGPL 라이브러리의 인터페이스 클래스를 상속 및 함수 오버라이딩 방식으로 상용프로그램에 필요한 통신기능들을 작성 후 빌드를 통해 DLL 파일을 생성하게 된 경우 해당 DLL 역시 원본 LGPL 라이선스가 적용됩니다.
즉, DLL 범위에 대한 소스코드 공개의무가 발생할 수 있으며, 1)과 같이 목적파일은 제공하실 필요가 없어 보입니다.
3)의 경우에도,
임의의 프로젝트도 LGPL 라이선스의 영향을 받으며, 임의의 프로젝트를 동적 링킹 시 1), 2)와 같이 DLL 파일 범위에 대한 소스코드 공개의무가 발생합니다.
다만, 처음 정적 링킹에 따라 프로그램 전체의 목적 파일 제공해야 합니다.
감사합니다.
※ 법적 분쟁 발생시 본 답변은 법률적 해석이나 논리로 활용될 수 없습니다.
------ 댓글 -------
안녕하세요
해당 링크 http://www.live555.com/liveMedia/faq.html#copyright-and-license
What is the best way to modify or extend the functionality of the code?
To add new functionality to the code, you should not modify the existing code (unless this is unavoidable). Instead, use C++ subclassing. Add your new subclass definitions and implementations in a separate directory (i.e., separate from the "live/" directory that contains the supplied source code). That way, you can easily upgrade to new versions of the supplied source code - simply by replacing the "live/" directory - without affecting your own new code.
Note also that subclassing the code considerably simplifies your obligations under the LGPL. If you modify the supplied code, and then release a product based on these modifications, then - as noted above - you are required to also make your modified source code available. If, instead, you subclass the supplied code (without modifying it), you are not required to release your subclass code (nor the rest of your application code). Your application can be 'closed source'.
--> 해당 부분을 살펴본 결과,
제가 이해한 바로는 live555 라이브러리 사용 시에는
Live555 라이브러리 폴더 (live\)와 별개로 분리하여 상용프로그램용 프로젝트 폴더를 생성 후 해당 상용 프로그램용 프로젝트에서 Live555 라이브러리 소스코드 (헤더파일과 cpp 파일)를 불러와서 Live555 소스코드 수정 없이 클래스 기능(인터페이스)을 상속받아 기능을 사용만 하는 형태로 상용프로그램의 소스 코드를 작성한다면,
상용프로그램 코드에 영향을 주지 않고 사용자 또는 개발자가 Live555 라이브러리 폴더 (live\)만 교체하면 Live555를 최신 버전으로 업그레이드 가능하기 때문에 LGPL 라이선스를 간단히 준수할 수 있으며, 상용 프로그램의 프로젝트 파일 (소스 코드나 오브젝트 파일 등등)을 공개 하지 않고 해당 LGPL 라이브러리를 사용할 수 있다라고 해석이 되는데, 해당 내용이 맞는 내용인지 문의드립니다.
참고로, Live555 라이브러리의 경우, 제공하고 있는 라이브러리 tarball (*.tar.gz 압축파일)을 해제하면 기능에 따라(폴더로 구분됨) 헤더 파일과 cpp 파일으로 구성되며, 별도의 dll 또는 lib 파일은 제공하지 않고 있습니다. Live555를 외부 프로젝트에 라이브러리 링킹을 하기 위한 파일은 Live555 라이브러리 소스코드를 기반으로 직접 빌드하여 생성해야 합니다.
감사합니다.
------ 댓글 -------
License 관리자
안녕하세요
공개소프트웨어 라이선스 관리자입니다.
문의주신 내용 답변드립니다.
말씀해주신 내용은 Live555 라이브러리를 정적 링킹 형태로 사용하는 것으로 보입니다.
LGPL 라이선스에 따라 정적 링킹 시에는 라이브러리와 연결된 프로그램의 오브젝트 코드 또한 제공해야 합니다.
동적 링킹(DLL) 시에는 연결된 프로그램의 오브젝트 코드를 공개할 필요가 없으므로,
Live555를 동적 링킹 형태로 사용하며 언급된 내용처럼 업그레이드 가능할 수 있게끔 개발하는 것이 목적에 더 부합한다고 보입니다.
감사합니다.
※ 법적 분쟁 발생시 본 답변은 법률적 해석이나 논리로 활용될 수 없습니다.
댓글 0
댓글 작성
댓글을 작성하려면 게시글 작성 시 입력한 이메일과 패스워드를 입력해주세요.