프로토 타이핑을 위해 GPL 라이브러리를 임시로 사용하고 향후 코드를 비공개로 만들 수 있습니까?


23

소프트웨어 시스템의 프로토 타입을 개발 중이며 적어도 시작 시점에 비공개 소스가 될 것입니다.

시간을 절약하기 위해 GPLv3 에 따라 라이센스가 부여 된 라이브러리를 사용 (정적으로 링크)하려고 하므로 디자인을 빠르게 테스트 할 수 있습니다. 이 단계에서 소프트웨어를 배포 한 경우 소스 코드도 함께 배포해야합니다.

그렇지 않은 경우 시스템이 작동한다는 사실을 스스로 만족시키고 배포하기 전에 GPL 라이브러리를 내 코드로 바꾸면 어떻게됩니까? 결과가 GPL에 의해 "오염"됩니까?

Git 기록 에 GPL 라이브러리를 유지하면 차이가 생길 수 있다고 생각합니다.


16
나는 "GPL에 의해 오염 된"표현을 좋아한다.
Arseni Mourzenko

7
그것은 라이센스의 바이러스성에 잘 어울립니다 :)
Laurent S

5
메신저가 틀렸다면 수정하지만 동시에 git에서 코드를 호스팅하면서 비공개 소스 시스템을 출시하고 싶습니까? (그리고 나는이 자식을 다른 사람들이 읽을 수 있다고 가정합니다. 그렇지 않으면 왜 역사에 GPL 라이브러리가 있는지 걱정할 것입니까?)
user2813274

3
@ user2813274, 개인 Git 저장소를 가질 수 있습니다.
Arturo Torres Sánchez

5
이 질문이 흥미로울 경우 새로운 오픈 소스 스택 교환 제안에 관심이있을 수 있습니다 .
Philipp

답변:


20

GPL 다음과 같이 씁니다 .

귀하는 다음 조건을 모두 충족하는 경우, 섹션 4의 조항에 따라 소스 코드 형식으로 프로그램을 기반으로하는 저작물 또는 프로그램에서 프로그램을 생성하기 위해 수정 한 내용을 전달할 수 있습니다.

따라서이 조건은 작업이 라이브러리를 "기반으로"하는 경우에만 적용되며 라이센스는 다음과 같이 정의됩니다.

저작물을 "수정"한다는 것은 정확한 사본을 만드는 것 외에 저작권의 허가가 필요한 방식으로 저작물의 전부 또는 일부를 복사하거나 수정하는 것을 의미합니다. 결과 저작물을 이전 저작물의 "수정 된 버전"또는 이전 저작물을 "기반으로하는"저작물이라고합니다.

즉, 귀하의 프로그램은 저작권법에 따라 파생물 인 경우에만 라이브러리를 "기반으로"합니다 . 해당 용어의 법적 정의는 관할 지역마다 다소 다르며 일반적으로 소프트웨어를 직접 다루지는 않습니다. 예를 들어 미국 저작권법은 다음과 같이 씁니다.

"파생 작품"은 번역, 음악 배열, 드라마, 허구, 영화 버전, 녹음, 예술 재생, 요약, 응축 또는 작품의 다른 형태와 같은 하나 이상의 기존 작품을 기반으로 한 작품입니다. 리 캐스트, 변형 또는 개조 될 수 있습니다. 전체적으로 저작의 원래 저작물을 나타내는 편집 개정, 주석, 설명 또는 기타 수정으로 구성된 저작물은 "파생 저작물"입니다.

소프트웨어에서 이것이 의미하는 바는 이전의 유사한 판결에 근거하여 법원에서 해석해야합니다. 법원이 귀하의 사건을 어떻게 결정할지 확실하게 말할 수 있도록 귀하의 관할권의 관련 판례법을 충분히 알고 있지 않습니다. "자신의 코드로 GPL 라이브러리를 바꾸는 것"은 특히 코드가 GPL 구현에서 영감을 얻은 경우 번역 행위라고 주장 할 수 있습니다. GPL 라이브러리의 API를 재사용하더라도 뜨거운 물에 빠질 수 있습니다 ( Oracle vs. Google 참조 ).

대답이 당신에게 중요하다면, 인터넷에서 낯선 사람에게 물어 보지 말고 유능한 법적 조언을 구하는 것이 좋습니다.


1
좋아, 이것은 흥미 롭습니다 .API 공유가 파생 작업으로 간주 될 수 있다는 것을 몰랐습니다.
Laurent S

이 대답은 아래의 대답에서 내가 시도했던 것과 똑같은 점을 나타내지 만 훨씬 더 분명한 방법입니다. +1
Michael Shaw

23

GPL 라이브러리에 링크하는 동안 다른 사람에게 소프트웨어를 공개하지 않는 한 안전합니다. GPL의 바이러스 성 측면은 소프트웨어를 배포 할 때만 시작됩니다.

물론 LGPL, APL2 또는 MIT와 같이보다 허용적인 라이센스를 가진 라이브러리를 찾을 수 있다면 더 좋습니다.


분명히, 나는 허가 라이센스가있는 다른 라이브러리를 찾으려고 노력할 것이다. 그러나 실패하면, git history에 오래된 GPL 코드가있을 수 있으며 코드의 미래 상태를 배포하여 용어를 위반하지 않는 것처럼 들립니다.
Laurent S

5
이 답변은 새 버전의 라이브러리를 구현할 때 파생 작업을 생성 할 위험을 고려하지 않습니다.
Michael Shaw

4
@Ptolemy git history가 릴리스되면 이전 버전을 릴리스했음을 명심하십시오. 계산하기 위해 이진 형식 일 필요는 없습니다.
piojo

2
@piojo 반면, GPL에 따라 이전 버전의 라이센스를 부여하고 소스를 배포해야합니다. 어떤 시점에서 코드에 대한 독점적 저작권으로 자신을 발견하면 모든 향후 버전을 비공개 소스로 만들 수 있습니다 (이전 버전은 계속 GPL하에 있음). 이전 버전의 소유물 양에 따라 문제가 있거나 없을 수 있습니다.
cpast

1
Laurent S가 GPL 옆에있는 다른 모든 코드의 저자이자 저작권자 인 한 안전합니다. 그는 이것이 나중에 결과가 될 수있는 경우를 대비하여 GPL3의 조건에 따라 전체 작업을 발표 할 수 있으며 허용 됩니다. 원치 않는 경우도 있지만 어떠한 경우에도 OP는 분명히 안전합니다 (저작권이있는 경우).
hakre

8

나는 당신의 질문이 실제로 GPL에 관한 것이라고 생각하지 않습니다. 프로토 타입 및 향후 제공 가능한 소프트웨어 시스템의 기초로 사용 될지 여부에 관한 것입니다.

버림받은 프로토 타입을 제작할 때 제공 가능한 시스템에서 코드를 재사용하지 않으려면 GPL 라이브러리를 사용하십시오.

취할 수있는 세 가지 접근법

그러나 프로토 타입을 발전 시키려면 (많은 관리자가 요구하는) 세 가지 접근 방식이 있습니다.

  1. 비 핵심 부품을 JSON, REST API 또는 기타 프로세스 간 통신 언어 / 라이브러리를 통해 코어와 통신하는 별도의 애플리케이션으로 이동하십시오. 따라서 비 핵심 부품도 GPL이 될 수 있으며 GPL 라이브러리를 사용할 수 있습니다.
  2. 라이브러리를 교체 할 수 있도록 코드를 설계하십시오. 이것은 구현 세부 사항을 숨기는 정면만드는 것을 의미 합니다. 독점 라이브러리 또는 MIT / BSD 라이브러리로 전환 할 준비가되면.
  3. GPL 코드를 전혀 사용하지 마십시오.

첫 번째 접근 방식을 사용하는 것이 좋습니다. 향후 전문가 포트폴리오의 일부로 사용할 수있는 오픈 소스 작업이 있기 때문입니다.

두 번째 방법은 어떻게이기 때문에도 좋다 해야 정확한 기능을 작성, 어쨌든 당신이 필요 / 클래스 시스템을 설계하고 그들을 스텁 할 라이브러리 또는 사용자 지정 코드가있을 때까지 해당 기능 채 웁니다.


2
GPL 코드를 다른 프로세스에 배치한다고해서 더 이상 프로그램의 일부가 아니므로 나머지 라이센스와 더 이상 관련이 없습니다. 그래도 충분히 분리하는 데 도움이 될 수 있습니다.
중복 제거기

1
@ 중복 제거기 충분하지 않은 별도의 응용 프로그램 인 경우 별도의 코드베이스로 처리해야합니다. 트위터가 부트 스트랩으로하는 것과 Facebook이 모든 라이브러리에서하는 것을 좋아합니다. 핵심 독점 코드가있는 비 핵심 오픈 소스.
Rudolf Olah

@omouse, 임베디드 소프트웨어이기 때문에 1을 할 수 없습니다. 2는 나의 첫 생각이지만 프톨레마이오스와 메리 톤이 언급 한 것을 보면, 내가 파생물을 만드는 것처럼 들리므로 3이 갈 길입니다.
Laurent S

1
Re : "귀하의 질문이 실제로 GPL에 관한 것이라고 생각하지 않습니다": 나는 동의하지 않습니다. 소프트웨어 라이센스 이러한 종류의 사용을 금지 할 수 있습니다. 질문의 "GPL"부분을 무시하고 제한적인 용어와 바이러스 성 행동을 갖는 오픈 소스 라이센스에 대한 일반적인 질문으로 받아 들인 대답은 "우리는 모른다. 라이센스 조건을 읽으려면 "
ruakh

파생 저작물을 만들어 버려도 여전히 파생 저작물이 만들어 졌으므로 원본 저작권 소유자의 허가 / 라이센스로만 해당 저작물을 만들 수 있습니다. GPL을 사용하면 해당 라이센스를 갖게됩니다 (파생 작업을 폐기하기 전에 배포하지 않은 경우). 다른 라이센스를 사용하면 권한이 없을 수 있습니다. 그래도 손해 배상 청구는 어려울 수 있습니다.
gnasher729

5

귀하의 접근 방식으로 고려해야 할 두 가지 측면을 생각할 수 있습니다. 첫 번째는 GPL 로 배포되는 코드를 사용하는 동안 프로젝트를 배포하지 않거나 (또는 GPLv3 이므로 공용으로 사용할 수 있도록) 간단합니다. 코드 배포 방법이 무엇인지 알기가 어렵습니다 재배포 조건에 따라 GPL 라이센스에 따라.

두 번째 측면은 아마도 당신에게 더 중요 할 것입니다. GPL 라이브러리를 대체하기 위해 자체 구현을 작성할 때 파생 작업을 작성하지 않도록주의해야합니다. 소스 코드를 직접 복사하지 않는 것이 좋은 의도라고 확신하지만 라이브러리 API의 상당 부분을 복사하지 않을 가능성이 높습니다.

이 제품이 상용 제품인 경우 GPLv3 라이센스를주의 깊게 읽고 의심되는 경우 전문적인 법적 의견을 요청하여이 위험을 고려하고 평가해야합니다.


4

GPL 코드를 대체하기 위해 자체 코드를 작성하려는 경우 클린 룸 환경에서 코드를 작성하지 않기 때문에 잠재적 인 문제가 있습니다. GPL 코드를 보지 않은 사람이 대체 라이브러리를 작성하도록 정말로 원할 것입니다. 반면에 다른 라이센스하에있는 이미 게시 된 라이브러리의 GPL 라이브러리를 간단히 바꾸려면 문제가되지 않습니다. 다른 라이브러리는 이미 클린 룸 환경에서 작성된 것 같습니다.


2

GPL 코드를 사용하여 개정에 대한 액세스를 제공하면 완전히 GPL이됩니다. 그러나 폐쇄 소스가 아니기 때문에 원하지 않습니다 ...

더 이상 GPL 코드를 더 이상 사용하지 않는 상태의 경우, 이전에 GPL 코드를 사용했던 것은 단순히 관련이 없습니다.


2

GPL은 배포시 에만 트리거됩니다 ... 수정 된 버전이나 파생 작업을 릴리스하지 않으면 원하는 모든 작업을 수행 할 수 있습니다.

내 Git 기록에 GPL 라이브러리를 유지하면 차이가 생길 수 있다고 생각합니다.

GitHub 와 같은 공개 저장소에 소스를 게시 하려는 경우 문제가있을 수 있습니다. git을 사용 하는 것은 개인 정보와 관련이 없습니다.

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