로부터 GPL 자주 묻는 질문 (그러나 조언 모든 라이센스에 적용) :
GPL이 프로그램의 모든 사본에 GPL 사본을 포함해야하는 이유는 무엇입니까?
프로그램에 라이센스 사본을 포함시키는 것은 프로그램의 사본을 얻는 모든 사람이 자신의 권리가 무엇인지 알 수 있도록 필수적입니다.
라이센스 자체 대신 라이센스를 나타내는 URL을 포함 시키려고 할 수 있습니다. 그러나 지금부터 5 년 또는 10 년 후에도 URL이 유효한지 확신 할 수 없습니다. 20 년 후 오늘날 우리가 알고있는 URL은 더 이상 존재하지 않을 수 있습니다.
네트워크에서 발생할 수있는 모든 변경 사항에도 불구하고 프로그램 사본을 보유한 사람들이 라이센스를 계속 볼 수 있도록하는 유일한 방법은 프로그램에 라이센스 사본을 포함시키는 것입니다.
(강조 광산)
라이센스를 호스팅하는 사이트가 다운되거나 URL 경로가 변경되는 순간 소프트웨어 사본을 보유한 사용자는 더 이상 안전하게 행사할 수있는 권한을 확인할 수 없습니다. 정확한 URL이 영원히 온라인 상태가 될 것이라고 보증 할 수 있다고 가정하십시오. 사용자가 소프트웨어 사용이 합법적임을 확인할 수있는 능력은 여전히 해당 특정 URL에 연결하는 능력에 달려 있습니다. 이 요구 사항은 특정 도시 / 국가 / 플래닛에서는 번거롭지 않지만 다른 곳에서는 번거로울 수 있습니다. 특히 전체 라이센스 텍스트를 포함한 해결 방법이 사소한 경우에는이 요구 사항을 강요해서는 안됩니다.
"그래서 어떻습니까? URL이 다운되거나 액세스 할 수없는 경우 'GNU GPL v3'과 같은 명확한 설명이 충분해야합니다. GPL의 전체 텍스트 사본은 풍부합니다. 사용자는 찾을 수 있습니다. 라이센스 자체. " 몇 가지 문제가 즉시 떠 오릅니다.
덜 명확한 라이센스 식별자로 일반화하지는 않습니다 ( "BSD 라이센스"라는 문구가 떠오름).
덜 일반적이거나 커스터마이즈 된 라이센스로는 일반화되지 않습니다 ( "링크 예외가있는 GPL"은 어떤 링크 예외입니까?). 사용자가 이름으로 안정적으로 찾을 수 있기 전에 라이센스가 얼마나 일반적이어야합니까?
이를 위해서는 여전히 사용자가 인터넷에 연결되어 있어야합니다. 소프트웨어를 구입 한 시점에 연결되어 있어도 그렇지 않을 수도 있습니다. (그리고 그들은 소프트웨어를 얻었을 때 인터넷에 접속하지 않았을 수도 있습니다. "CD 시대"는 아직 세계 여러 지역에서 끝나지 않았습니다. 추가 사례로서, 인터넷에 널리 보급되어 있지만 상당 부분을 검열하는 국가 인구를 고려하십시오 .) 자유롭게 재배포 가능한 소프트웨어의 결과로받는 사람이 귀하로부터 직접 또는 원래 예상 한 배포 채널을 통해 소프트웨어 사본을받지 못할 수 있습니다.
라이센스 링크에 대한 하나의 최종 주장은 아래 MichaelT의 의견에 의해 언급됩니다. 라이센스를 동적으로 소급하여 변경할 수 있습니다. 이것은 의도적으로 수행 될 수 있지만 소프트웨어 버전간에 라이센스를 변경했지만 두 버전에 대해 동일한 라이센스 링크를 사용하여 기존 라이센스가 존재하지 않는 경우 실수로 수행 할 수도 있습니다. 이러한 스위치는 현재 버전과 다른 라이센스로 이전 사본을 가지고 있음을 증명해야하는 사람들에게 어려움을 줄 수 있습니다.
그렇다면 왜 프로젝트 루트에 라이센스를 유지해야합니까?
나는 변호사가 아니에요,하지만 난 당신이 그 어떤 강력한 인수 본 적이 않는 프로젝트 루트에서 라이센스를 유지해야합니다. 각 저작물 사본에 라이센스가 포함되어야한다고 명시한 GPL조차도 그 저작물에 대한 라이센스 방법 에 대해서는 침묵 합니다. ( "루트 디렉토리"라는 개념이 의미가없는 비 소프트웨어 컨텍스트에서 GPL을 적용 할 수 있기 때문일 수 있습니다.)
루트 디렉토리에 라이센스를 유지하는 것은 사용자가 라이센스를 볼 가능성을 최대화하여 일부 불분명 한 디렉토리에 라이센스를 숨기려는 사용자에 대한 불만 및 불만 가능성을 최소화하기 때문에 좋은 아이디어 일 것입니다 . 라이센스가 많은 경우 라이센스를 모두 자신의 폴더에 배치하고 각 구성 요소의 라이센스를 찾기위한 파일 경로가 포함 된 프로젝트 README를 포함시키는 것이 더 합리적 일 수 있습니다.
디렉토리 루트에 라이센스를 배치하면 전체적으로 작동하는 것과 다르게 라이센스가 부여 된 모듈의 라이센스를 명확하게 할 수 있기 때문에 유용한 방법입니다. 내 프로젝트 FooProj가 독립형 모듈 BarMod를 사용한다고 가정합니다. FooProj는 GPL 라이센스가있는 반면 독립형 모듈은 MIT 라이센스가있을 수 있습니다. FooProj를 처음 열면 루트에 GPL 사본이 표시되고 전체적으로 GPL 라이센스가 부여 된 작업임을 이해합니다. BarMod 폴더로 내려 가면 새 라이센스 파일이 표시되며이 폴더의 내용이 MIT 라이센스가 있음을 이해합니다. 물론 이것은 도움이 될뿐입니다. README, NOTICE 또는 유사한 파일에 모듈의 라이센스를 명시 적으로 표시해야합니다.
요약하면, 파일 루트를 사용하는 것은 편의성과 명확성의 문제입니다. 법적으로 구속력이있는 오픈 소스 라이센스 텍스트를 보거나 법적으로 요구되는 이유를 알지 못했습니다. 수신자가 쉽게 알아볼 수있는 라이센스 여야합니다. 이 기준을 만족시키기 위해서는 프로젝트 루트에 라이센스를 포함시키는 것으로 충분하지만 반드시 필요한 것은 아닙니다.