라이브러리를 프로세스 외부로 이동하여 GPL 위반 방지


21

GPL에 따라 라이센스가 부여 된 라이브러리가 있다고 가정하십시오. 폐쇄 소스 프로젝트입니다. 나는 다음을 수행합니다.

  1. 소켓을 청취하고 메시지를 구문 분석하고 GPL 라이브러리를 호출하는 해당 GPL 라이브러리 주위에 작은 랩퍼 애플리케이션을 작성하십시오. 그런 다음 결과를 다시 반환합니다.
  2. 소스 공개 (GPL 준수)
  3. 내 기본 응용 프로그램에서이 래퍼에 대한 클라이언트를 만들고 소스를 공개하지 마십시오.

나는 이것이 정적 / 동적 링크와 비교하여 엄청난 오버 헤드를 추가한다는 것을 알고 있지만 이론적 인 방법에 관심이 있습니다.


6
작성한 랩퍼는 GPL에 따라 라이센스가 부여됩니다. 따라서 래퍼를 사용하는 프로그램은 여전히 ​​링크 등을위한 GPL의 조건을 따릅니다.
TZHX

4
먼저 저자에게 연락하여 LGPL 또는 이와 유사한 방식으로 라이센스를받을 수 있는지 확인하십시오.
jk.

8
자신의 고유 코드가 클라이언트에있을 것입니다 - @TZHX 나는 그가 래퍼가 서버 역할을하는 별도의 응용 프로그램이 될 것입니다 의미 생각
JK.

또한 비공개 소스 앱은 누구에게도 배포됩니까? 그리고 라이센스는 GPL의 버전입니다
JK.

2
@jwent는 질문에 프로세스가 부족하다는 것을 분명히 나타냅니다
jk.

답변:


32

법적으로 , 나는 그것이 괜찮을 것이라고 말하고 싶습니다 (그러나 나는 변호사가 아닙니다-변호사와 상담하십시오).

도덕적으로 , 그것은 꽤 비난받을 수 있습니다. GPL이 마음에 들지 않으면 "적절한"솔루션은 GPL 라이브러리를 사용하지 않는 것입니다.

편집 : 동적 연결이 허용되는지 여부와 관련하여 GPL의 법적 지위에 관계없이 라이브러리의 경우 동적 연결을 허용하기 위해 LGPL이 구체적으로 작성되었습니다. 따라서 LGPL 대신 GPL을 선택함으로써 라이브러리 작성자가 동적 링크를 허용하지 않도록 명시 적으로 수행하고 있음이 분명 합니다. 저자의 코드에 대한 명시적인 의도를 표현 하는 법적 제한 을 해결하기 위해 기술적 수단을 사용하는 것이 내 의견으로는 이해할 만하다.

기록 상으로는 개인적으로 GPL의 팬이 아닙니다 (MIT 또는 BSD와 같은 더 관대 한 라이센스를 선호합니다). 그러나 나는 다른 개발자의 작업을 존중하는 것을 좋아하는 팬이며, 라이브러리를 비공개 소스 소프트웨어와 연결하지 않으려는 경우 특권입니다.


12
나는 여기에 도덕적 문제가 있다고 생각하지 않습니다. GPL은 그의 유스 케이스
jk

3
@vartec은 공식 GPL FAQ에서 인용합니다. "다른 모듈과 정적으로 또는 동적으로 링크하는 작업은 다음을 기반으로하는 작업을 수행합니다. 따라서 GNU General Public License의 이용 약관은 전체 조합을 포괄합니다." Stallman이 Open Source가 다른 비전을 가지고 있다고해서 그가 그것을 싫어한다는 의미는 아닙니다. 그는이 운동의 주요 이데올로기 자입니다.
Andrey

8
@vartec : 응용 프로그램에서 SOMEONE ELSE의 코드를 사용할 때 HIS 코드 사용에 대한 용어를 준수해야한다는 것을 이해하지 못하는 것 같습니다. 마음에 들지 않습니까? 다른 사람의 GPL 코드를 사용하지 마십시오. 간단합니다.
John R. Strohm

3
여기 내 제안이 있습니다 : 당신이 그렇게 의존 하는 GPL 코드에서 지옥을 꺼내고 법원 사건이 어떻게 나타나는지보십시오. GPL3은 GPL2에 그러한 법적 구멍을 뚫기 위해 만들어 졌으므로 아마도 그것을 벗어날 것입니다. 나는 당신이 법적인 조작으로 도망 쳤기 때문에 사람들이 당신의 명예에 퍼레이드를 던질 것을 의심합니다. 당신이 충분히 효과적이라면 사람들은 당신을 자극하기 위해 더 많은 이용 약관으로 코드를 라이센스 할 것입니다. 결국, 이와 같은 스레드를 피함으로써 세상을 개선 할 수 있습니다.
Godeke

3
나는 그것이 도덕적으로 비난받을 수 있다는 주장에 강력하게 동의하지 않습니다. 도덕적으로 이해할 수있는 것은 사람들에게 GPL이 허용하는 일을 할 권리가 없다고 말하는 것입니다. GPL 하에서 작업을 할 때 GPL의 규칙을 적용하기를 원하기 때문에 그렇게합니다. 사람들에게 GPL이 부여한 권리를 행사해서는 안된다고 말하는 것은 무시할 수 없습니다. 이것은 GPL이 허용하는 것입니다. GPL하에 일을하는 사람들 은 이것을 허용 하기를 하기 때문에 그렇게 합니다.
David Schwartz

6

IANAL이지만 괜찮습니다. GPL3의 관련 섹션은 섹션 5의 끝에 있습니다.

다른 별도의 독립적 인 저작물로 커버 된 저작물을 편집 한 경우, 해당 저작물은 그 성격 상 확장 된 것이 아니며 더 큰 프로그램을 구성하거나 저장 또는 배포 볼륨에서 더 큰 프로그램을 구성하는 것과 같이 결합되지 않습니다. 편집 및 결과 저작권이 개인의 저작물 허용 범위를 넘어 편집 사용자의 액세스 또는 법적 권리를 제한하는 데 사용되지 않는 경우 매체를 "집계"라고합니다. 적용 대상 저작물을 집계에 포함한다고해서이 라이센스가 집계의 다른 부분에 적용되는 것은 아닙니다.

이것은 아마도 '고객'의 행동에 달려있을 것입니다. mouviciel의 대답은 아마도 안전하게 수행하는 방법에 대한 좋은 지침 일 것입니다.

앱이 집계 된 것이 아니라 라이브러리의 확장이라고 생각하면 아마도 옳을 것입니다 (이를 알기에 좋은 장소에 있어야합니다).이 경우 가장 좋은 방법은 저자에게 연락하여 다른 라이센스

이것은 올바르게 수행되었다고 가정 할 때 GPL이 명시 적으로 허용한다는 내 입장을 뒷받침하는 것 같습니다.


나는 그것을 읽었지만 문제는 GPL 텍스트가 개발이 아닌 법적 언어로 작성되었다는 것 입니다. 래퍼의 트릭은 "파생"이 아닌 상용 앱을 "집계"하는 것입니다. 그러나 나는 그것이 "적용 대상 저작물의 자연 확장"에 해당한다고 생각한다.
Andrey

법률 언어에 대한 도움을 받으려면 변호사가 필요합니다. 앱이 집계 된 것이 아니라 라이브러리의 확장이라고 생각하면 아마도 옳을 것입니다 (이를 알기에 좋은 장소에 있어야합니다).이 경우 가장 좋은 방법은 저자에게 연락하여 다른 라이센스
jk.

1
@Andrey : 프로그램의 "본질"이 GPL 코드에 직접 연결되어 있으면 위에서 인용 한 섹션이 적용되지 않습니다. 귀하의 질문에서 그것은 그럴 것 같습니다. 반대의 예는 제안한 메커니즘을 통해 GNU readline을 사용하는 네트워크 침입 분석 프로그램 일 수 있습니다. (Readline은 BSD 라이센스의 드롭 인 대안이 있기 때문에 흥미로운 테스트 사례입니다.)
Fred Nurk

"집계"절은 동일한 CD-Rom 또는 Linux 배포판에있는 것이 파생물을 생성하지 않음을 분명히하는 것입니다.
Sean McMillan

6

독점 시스템에 GPL 지원 소프트웨어를 통합하고 싶습니다를 참조하십시오 . 내가 할 수 있습니까?

문제는 래퍼 응용 프로그램이 자체적으로 사용됩니까? GPL 인 프로그램의 명령 행 버전을 만든 경우 다른 라이센스로 GUI를 해제 할 수 있습니다. 예를 들어 폐쇄 소스 인 gcc 용 IDE 또는 diff를 기반으로하는 시각적 diff 도구를 만들 수 있습니다.

그러나 라이브러리를 랩하여 프로그램에서 사용하는 것 외에 다른 용도로 사용하지 않고이 라이브러리 없이는 프로그램을 사용하지 않는 경우 파생 된 작업이므로 GPL로 릴리스해야합니다.


내 이해는 MIT에서 래퍼를 라이센스 할 수 있지만 여전히 괜찮다는 것입니다.
토스터

2
콜린, 절대 아니야 랩퍼는 GPL 라이브러리와 명확하게 단일 바이너리로 결합됩니다. 하나의 바이너리 내에서 GPL 코드를 사용하려면 라이센스를 준수하기 위해 자체 코드를 GPL해야합니다.
콘크리트 가넷

5

IMO, 법적으로 괜찮습니다. (IANAL) 문제의 도덕적 측면을 개선하기 위해 "FooBar를 MyClosedApp에서 사용할 수있게하는 FooBar 래퍼"라고 부르지 말고 서버라고 부릅니다. "넷을 통해 FooBar를 할 수있는"멋진 오픈 소스 프로그램으로 만드십시오. 프로젝트 페이지와 지침 및 자료를 사용하여 SourceForge에 올리거나 웹 사이트를 전용하십시오. 그런 다음 "MyClosedApp"이 "FooBar 서버"를 사용하도록하십시오.


2

내가 이해하는 한 GPL 라이브러리없이 작업을 수행 할 수있는 한 소프트웨어를 비공개 소스로 둘 수 있습니다. 소프트웨어가 없어도 플러그인이없는 GPL 라이브러리를 참조하십시오.


1
분명히 틀 렸습니다. 플러그인 (일명 동적 연결)으로 사용하면 결과 응용 프로그램이 "유도 적"이되고 GPL의 주제가됩니다.
Andrey

플러그인이 항상 동적으로 연결되어 있는지 확실하지 않습니다. 그리고 확실히이 경우 영업 이익은 내가 mouviciel의 조언 스탠드 생각 있도록 동적으로 아무것도 연결 제안하지 않습니다
JK합니다.

@jk 글쎄, 하나의 플러그인 만 만들고 GPL 라이센스를 기반으로하는 경우 위반으로 냄새가 난다.
Andrey

4
소켓이 네트워크 상에 있지 않으면 AGPL은 이것을 금지하지 않을 것입니다. 상당히 구체적입니다. 또한 유용성 테스트가 아니라 GPL 및 독점 소프트웨어가 얼마나 밀접한지를 테스트합니다. 정적 링크는 확실히 너무 가깝고 소켓 (특정 AGPL 케이스 제외)은 확실히 정상입니다. 동적 링크는 가능할 수도 있고 그렇지 않을 수도 있습니다 (각 측면에서 합법적 인 주장을 들었고 미국의 판례는 아직 없습니다).
David Thornley

1
@Andrey : 이제 Photoshop과 같은 폐쇄 소스 소프트웨어가 GPL 구성 요소없이 작업을 수행 할 수있는 한 GPL을 만들지 않고 배포 할 수 있습니다. 이것이 바로이 답변이 말하는 것입니다.
Doc Brown

1
  1. 오픈 소스 대안을 찾으십시오.없는 경우 GPL을 찾으십시오.
  2. Affero 절이 있는 GPLv3 인지 확인하십시오 (있는 경우) .
  3. 그것이 GPLv2라면, 당신이 제안한대로 정확하게 할 수 있습니다;

다소 논란의 여지가있는 옵션도 있습니다. 대부분의 입법부에서 동적 연결은 "유도 된 작업"에 대한 경계 여야합니다. 이것의 논리는 동적으로 링크하는 동안 프로그램에 헤더 파일 만 포함한다는 것입니다. 많은 법률에서 헤더 파일은 API 정의로 간주되며 저작권이없는 것으로 명시 적으로 제외됩니다. 반면에 동적 연결의 경우 최종 사용자 시스템에서 GPL 라이브러리와의 실제 연결이 수행됩니다. 그러나 내가 말했듯이, Stallman은 이것에 대해 많은 논쟁을 벌이고 있습니다.


내 해킹을 불가능하게 만드는 GPL v2와 v3의 차이점은 무엇입니까? 내가 동적으로 연결하지 않는 한 가능한 한 많이 분리합니다.
Andrey

GPLv3의 목표 중 하나는 '우회'방법을 방지하는 것이 었습니다.
vartec

4
첫째, GPL 변형은 공식 OSI 승인 공개 소스 라이센스입니다 (광고 조항이없는 BSD 라이센스가 Stallman 승인 자유 소프트웨어 라이센스 인 경우). 둘째, GPL 버전 (Affero 포함)이 GPL 및 독점 소프트웨어가 소켓과 같은 표준 프로세스 간 통신 방법과 통신하도록하는 기능을 제한하지 않습니다.
David Thornley

예를 들어 DRM 조항을 허용하는 IMO GPLv3은 오픈 소스 정의의 6 점을 위반합니다. opensource.org/docs/osd
vartec

1
@vartec : DRM은 "노력의 분야"가 아닙니다. "예를 들어, 프로그램이 [상업적 벤처]에서 사용되거나 유전자 연구에 사용되는 것을 제한하지 않을 수 있습니다." OSI는 분명히 GPL3이 오픈 소스라고 믿고 승인을 받았기 때문에 정의의 모든 지점을 충족시킵니다.
Thomas Edleson

0

Adam Brown이 GPL 라이브러리를 사용하고 "서버"역할을하는 프로그램을 작성하는 것이 합법적일까요? 만약 그가 모든 소스 코드를 그와 관련된 모든 것에 공개했을 때, 그가 공개 한 유일한 클라이언트 코드는 그저 미약했습니다. 그는 클라이언트 쪽을 작성 했습니까? 나는 생각하지 않을 근거가 전혀 없다.

Charles Dover가 Adam Brown의 "서버"를 발견하고 그와 통신하기 위해 비공개 소스 프로그램을 작성하기로 결정한 경우 GPL은 어떤 식 으로든 그의 행동을 제한합니까? 그의 GPL 소프트웨어 사용은 Adam Brown으로부터받은 바이너리 일 뿐이므로 알 수 없습니다. 아담의 바이너리를 배포했다면 소스에 대한 링크도 포함시켜야하지만 GPL의 다른 어떤 것도 Charles의 코드에 영향을 미치지 않습니다.

한 사람이 GPL 라이센스 서버를 작성한 다음 자신의 비공개 소스 목적으로 서버를 사용하는 것과 관련하여 서버를 작성할 때 서버를 만들기 위해 선의의 노력을 기울인다면 아무런 법적 문제가 없을 것이라고 생각합니다 제공된 GPL 코드를 같은 방식으로 사용하려는 다른 사람들에게 유용합니다. 특히, 공개적으로 공개 된 인터페이스 문서는 유능한 프로그래머가 원본과 마찬가지로 클라이언트 프로그램에 의해 허용되는 서버 코드를 작성하고 다음을 사용할 클라이언트 프로그램을 작성하기에 충분해야합니다. 저자의 응용 프로그램과 같은 방식으로 서버.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.