GitHub 프로젝트에서 여러 라이센스 선언


28

몇 년 동안, 나는 온라인에서 공유 된 사물에 라이센스를 부여하여 다른 사람들이 말한 것을 재사용 할 수 있는지 여부와 방법을 쉽게 결정할 수 있도록하는 팬이었습니다. GitHub가 사용자에게 LICENSE 파일을 리포지토리에 포함시키기 위해 부드럽게 '푸시'하기 시작하기 전에, 코드를 사용하여이 작업을 수행하는 방법을 몰랐습니다. 특히 GitHub에서 공개적으로 공유 된 코드입니다! – 그 이후로 LICENSE 파일을 잘 활용하려고 노력했습니다.

현재 다른 사람들과 작은 프로젝트를 수행 한 상황에 있습니다. 여러 라이센스에 대한 언급 이 필요 합니다 (제 3 자 코드 및 라이브러리 및 비 코드 파일로 인해). 파트너가 '느슨하게'이 문제에 대해 논의하는 동안 '코드를 그대로 온라인 상태로두면 아무도 신경 쓰지 않을 것'이라는 제안을 받았지만 제대로 수행하려고합니다. 문제는 : GitHub에서 여러 (다른) 라이센스를 언급 해야하는 방법을 모르겠습니다.

나는 본 적이 여러 가지 솔루션 날 경우 판단하기가 어려운 이유입니다, GitHub의에를 이 답변 약간 다른 질문이 권위있는 것입니다. 내가 알고 싶은 것은 다음 중 어떤 것이 가장 보편적인지, 아니면 다른 추가 방법이 있는지에 대한 것입니다.

  1. 만들기 하나 개의 라이센스 파일을 거기에 모든 다른 라이센스에 대한 설명을했습니다. ( 질문 : 특정 순서대로 배치해야합니까? 더 나은 개요를 위해 포함 된 모든 라이센스의 이름을 언급하여 파일을 시작 하시겠습니까?)
  2. 만들기 라이센스 당 하나 개의 라이센스 파일 사용을하고 이름을 LICENSE.md, LICENSE.LibNameA.md, LICENSE.AssetsB.md등 링크 대답 제안. ( 질문 : 이름은 프로젝트 이름을 기준으로합니까? 라이센스 이름이 아닙니까? 자체 기고 자료에 둘 이상의 라이센스를 사용한 경우 모두 '주요'에 언급 LICENSE.md합니까? 그렇지 않은 경우 어떻게해야합니까?)
  3. 두 개의 LICENSE 파일을 작성 하십시오 . 하나는 'main'컨텐츠에 대한 라이센스를 나열합니다. 즉, 자신이 작성한 모든 코드 / 자산; 모든 타사 자료에 대해 하나입니다. ( 위와 같은 질문 : 사용하는 특정 명명 체계가 있고 타사 자료를 나열하는 순서가 있습니까?)

마지막으로 라이센스 API 와 관련된 다양한 GitHub 설명 및 프로젝트 를 올바르게 이해했다면 리포지토리 라이센스를 결정할 때 '기본'라이센스 파일 만 고려됩니다 (어떤 라이센스를 선택할지 알 수는 없지만) 여러 개 언급 된 경우).


2
따라서 README와 하나 이상의 LICENSE 파일이 있어야합니다. 이것은 로켓 과학이 아닙니다.
Robert Harvey

4
링크 된 페이지와 관련하여 : 라이센스 파일 배포와 관련이 없으며 GitHub의 라이센스 API와 관련이 있으며 리포지토리 라이센스를 다시 결정하고보고합니다. 오픈 소스 또는 일반적으로 git이 아닌 GitHub에서 라이센싱 / LICENSE 파일 사용에 대해 물어봤을 때 오픈 소스 프로젝트가 라이센스 되는 방법 은 관련이 있습니다. '이것은 로켓 과학이 아니다'는 특별히 도움이되지 않는다. 내 GitHub에 초점을 맞춘 질문과 관련이 없습니다.
Kay

2
README에 라이센스에 대한 섹션이 있으며 라이센스가 여러 개 있으며 각 라이센스에 대해 라이센스 파일의 이름을 알려주는 것입니까?
Erik Eidt

3
@immibis 나는 그것을 알고 있으며 내 질문에 관한 것이 아닙니다. 나는 구체적으로 '인간에게 가장 적합한 방법'(GitHub)에 대한 답변을 요청했습니다.
Kay

3
@immibis : "컴파일러가 읽을 수 없습니다"– 문제는 엄밀히 말하면 Github에게는 해당되지 않습니다. Github은 자동 도구를 사용하여 리포지토리의 내용에 적용되는 "the"라이센스를 결정합니다. 이렇게 결정된 라이센스의 이름은 리포지토리의 제목 표시 줄에 방문자에게 프로젝트에 대한 기본적인 인상 (예 : 기고자 및 릴리스 수)을 제공하는보다 일반적인 정보와 함께 표시됩니다.
또는 매퍼

답변:


15

프로젝트 방문자에게 어떤 라이센스가 해당 프로젝트의 어느 부분에 적용 가능한지 분명한 한 원하는 메커니즘을 사용하여 원하는 라이센스를 포함 할 수 있습니다.

내가 선호하는 것은 :

  • 사용하는 각 타사 라이브러리를 자체 디렉토리에 넣으십시오. 이 디렉토리에는 라이센스 및 추가 정보 파일을 포함하여 라이브러리 배포의 일부인 모든 파일 이 포함되어야합니다 .
  • 자신의 라이센스 파일에서 자신의 코드 라이센스 만 참조하십시오
  • 프로젝트의 읽어보기 파일에서 사용하는 타사 라이브러리와 각 라이브러리가 배포되는 라이센스를 언급하십시오. 전체 라이센스 세부 사항은 라이브러리 디렉토리의 라이센스 파일을 참조하십시오.

1
이 시나리오에서 자체 컨텐츠의 이중 라이센스의 경우 고유 한 LICENSE 파일을 어떻게 처리 하시겠습니까? 즉, 프로젝트의 다른 부분 (코드 대 미디어 파일)에 대해 서로 다른 라이센스를 사용 했거나 코드를 두 개 이상의 다른 소프트웨어 라이센스로 배포하려는 경우? README에 추가 ​​정보를 넣는 것은 많은 의미가 있으며 내가 할 일이지만 GitHub의 LICENSE 파일을 다루는 방법에 특히 관심이 있습니다. 프로젝트 빠른 개요).
Kay

1
내 코드의 (일부) 이중 라이센스가있는 경우 각 라이센스마다 하나씩 두 개 이상의 라이센스 파일을 프로젝트에 추가하고 어떤 경우에 어떤 라이센스가 적용되는지 Readme 파일에서 확인합니다.
Bart van Ingen Schenau

1
Bart, 어떻게했는지 알려 주셔서 감사합니다. 제가받은 의견보다 훨씬 유용합니다. :) 한편 나는 실제로 그것에 대해 GitHub에 연락했으며 그로부터 무언가가 나올 경우를 대비 하여이 질문을 열어 두겠습니다.
Kay

2
Github에서 답변을 받으면 해당 정보를이 질문에 대한 자체 답변으로 게시하십시오.
Bart van Ingen Schenau

1
다른 사람들도 아는 것이 흥미로울 수 있기 때문에 그들과 함께 괜찮다면 분명히 할 것입니다!
Kay

12

SPDX 제작자 ( 슬라이드 12 ) 의 프레젠테이션에서 다음과 같이 분명합니다.

내용 LICENSE:

Apache-2.0 OR GPL-2.0-or-later

그런 다음 LICENSE 파일 두 개를 추가 할 수 있습니다 : LICENSE.Apache-2.0LICENSE.GPL-2.0-or-later.

모든 경우에 SPDX 라이센스 식별자를 README.md포함해야합니다 .

SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later

당신은 그렇게 할 수 있습니다 :

## License

This work is dual-licensed under Apache 2.0 and GPL 2.0 (or any later version).
You can choose between one of them if you use this work.

`SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later`

참고 그 Apache-2.0 OR GPL-2.0-or-laterApache-2.0 AND GPL-2.0-or-later큰 차이가 있습니다. 전자는 사용자가 둘 다 (일반적인 경우)를 선택할 수 있음을 의미하고 두 번째는 사용자가 라이센스 를 모두 준수해야 함을 나타냅니다 . Wikipedia의 다중 라이센스 도 참조하십시오 .

여기에 새로운 ( 2017-12-28 현재 ) SPDX 라이센스 목록 3.0을 사용하고 있습니다. 2017 년 버전은 GPL-2.0GPL 2.0의 식별자이지만 "GPL 2.0 만"또는 "GPL 2.0 이상 버전"인지는 확실하지 않습니다 .


4

나는 결국 내 질문에 관련하여 직접 GitHub의 지원 센터에 문의 않았고 그들은 내가 그들의 대답은 단지 제안으로 의미했다 취소 한 경우는이를 인용 확인했다 되지 권장 사항을 참조하십시오.

현재 Google 팀에 권장 할 사항은 없지만 공유 할 다른 것이 있는지 물어보고 업데이트 해 드리겠습니다.

원래 답변에는 다음과 같은 내용이 포함되어 있습니다.

한 가지 제안은 대부분의 코드에 대해 하나의 LICENSE 파일을 보유하고 README 파일에 나머지 타사 자료에 대한 라이센스 텍스트를 추가하는 것입니다.

다른 방법은 각 경로가 의미가있을 때 고유 한 LICENSE 파일을 갖는 것입니다. 예를 들어, 저장소에 다음 경로가있는 경우 : libs / awesome-lib-v2 / libs / awesome-lib-v2 / LICENSE가있을 수 있습니다.

후자의 경우 루트의 README 파일 및 / 또는 LICENSE 파일에서이를 언급 할 수 있습니다.

리포지토리의 루트에 하나의 LICENSE 파일을 사용하는 것을 고려하고 타사 자료, 코드 등의 하위 섹션을 추가 할 수도 있습니다.

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