모든 소스 파일에 라이센스 통지를 포함시켜야합니까?


111

오픈 소스 프로젝트에 사용할 수있는 다양한 라이센스를 찾고 있었지만, 모든 종류의 라이센스와 함께 내가 본 모든 프로젝트는 거대하고 독창적 인 것으로 보입니다 (제 의견으로는) 각 소스 파일에서 파일이 특정 라이센스하에 나열되어 있음을 명시합니다. 공개 도메인이 아닌 단일 소스 프로젝트를 발견하지 않았다고 생각 하지 않습니다 .

이것은 시간과 파일 공간을 낭비하는 것처럼 보입니다. 나는 퍼팅을 계획 @license하고 @author내 프로젝트에 태그,하지만 난 내 코드 공개를 만들고 싶어하지 않는 경우 각 개별 파일에 같은 거대한 통지를 나열해야하는 이유는 표시되지 않습니다.

내 프로젝트에서 이러한 통지를 포함 할 것, 또는 단순히의 통지를 포함 할 어떤 이유가 있습니까 README@license태그 충분은? 이것이 대부분의 라이센스의 "명확하게 명시된"규칙에 영향을 줍니까, 아니면 사람들이 논쟁하지 않도록 지나치게 과잉입니까?


10
편집기를 사용하면 라이센스를 한 줄로 접거나 숨길 수 있습니다.
Pubby

1
실제로 누군가 코드를 작성하는 경우 변수의 이름을 바꾸고 저작권을 삭제하면 법원에서이 두 파일을 동일하게 간주합니까?
NoChance

5
@Emmad : 아니오, 법원은 그들이 동일하다고 말하지 않을 것입니다. (그러나 그들은 본질적으로 동일 할 수 있습니다.) 그렇습니다. 법원은 저작권 침해라고 말합니다.
Andrew Dalke


답변:


39

나의 이해에서 GPL v3을가 강력하게 제안 (또는 아마도 내가 텍스트를 이해하는 방법을 적어도 것을 요구 하는 방법 새로운 프로그램에 GPL을 적용하는 방법 은 섹션 17 이후) 모든 소스 파일에 저작권 표시. 그것은 말한다

이렇게하려면 다음 알림을 프로그램에 첨부하십시오. 보증 제외를 가장 효과적으로 명시하려면 각 소스 파일의 시작 부분에 첨부하는 것이 가장 안전합니다. 각 파일에는 최소한 "저작권"줄과 전체 통지가있는 곳을 가리키는 포인터가 있어야합니다.

<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year>  <name of author>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

그리고 GCC와 같이 FSF가 소유 한 GNU 프로젝트는 모든 파일에서 그러한 통지를 받았습니다.

또한 자유 소프트웨어 커뮤니티 웹 사이트에서 거부 된 프로그램 (J.Pitrat의 CAIA 시스템)도 모든 파일에 그러한 통지가 없었기 때문에 거부되었습니다.

저는 변호사 가 아니지만 GPLv3 프로그램의 모든 소스 파일에서 그러한 통지가 실제로 필수적 이라고 생각합니다 .

(FSF가 아닌 다른 라이센스를 사용하는 경우 라이센스 적용 방법에 대해주의 깊게 읽으십시오. YMMV. 그러나 모든 파일에 통지를 작성하는 AFAIK는 해를 끼치 지 않습니다.)


16
소스 코드를 파일로 표현하지 않는 스몰 토크 이미지와 같은 시스템이 있기 때문에 필수가 아닙니다. 그들은 "필수"가 아니라 "가장 안전"하고 "해야한다"고 말합니다. 그들이 추천하는 것은 누군가가 실수를 할 가능성이 거의없는 이해하기 쉬운 가이드 라인이지만 "실제로 필수"인 것은 아닙니다.
Andrew Dalke

동의하며 "소스 파일"을 의도적으로 말하였습니다. 실제로, CAIA의 시스템은 스몰 토크와 비슷합니다. 이미지는 데이터 파일에 있으며 제가 언급 한 CAIA "소스 파일"은 C 파일로 생성됩니다. 그러나 내 GCC MELT (FSF 저작권에 따른 GCC 지점)도 메타 프로그래밍되어 있으며 생성 된 C 파일에서 저작권 표시 주석을 생성하도록주의를 기울입니다 (필자는 C 및 MELT 코드로 직접 작성).
Basile Starynkevitch

요점을 알았어. 나는 지금 MELT에 관한 한 단락을 알고 있습니다. 일반적으로 생성 된 파일에는 라이센스를 "첨부"하기가 매우 어렵 기 때문에 저작권 표시가 포함되어있는 것이 가장 좋습니다. 예를 들어, "yacc"와 "lex"는 그들이 할 수있는 것으로 제한되어 있습니다.
Andrew Dalke

1
개인적인 경험에서 : 사바나 에서 프로젝트를 수락 하려면 모든 파일에 라이센스가 있어야합니다.
Mael

1
이 글을 쓰는 시점의 GPL FAQ #LicenseCopyOnly#NoticeInSourceFile 에 따르면 명확히하기 위해 모든 소스 파일에 How to Apply ... 텍스트를 포함 할 필요는 없습니다 . 언어는 "필수"가 아닌 "필수"를 사용한다는 점에 유의하십시오. 그러나, 그들은 않습니다 강하게 당신이이 관행을 따르는 것이 좋습니다.
ZeroKnight

37

README 또는 LICENSE 또는 COPYING 파일에서만 라이센스를 언급하는 많은 프로젝트를 보았습니다.

국제법에 동의 한 경우 소프트웨어는 자동으로 저작권의 보호를받습니다. (미국 정부 또는 저작권이 적용되지 않는 다른 기관에서 근무하지 않는 한)

누군가 귀하의 소프트웨어를 사용하는 경우 라이센스 계약을 따르거나 그들이 할 수있는 것에 대한 공정한 사용 제한을 준수해야합니다.

사용자가 코드 배포에 파일 중 하나를 사용하려고한다고 가정하자. 물론 이것은 사본이 필요하므로 저작권법이 적용됩니다. 기본적으로 그들은 저작권법에 따라 귀하의 소프트웨어를 사용할 권리가 없습니다. 사용이 허가 된 라이센스 제한 사항을 알고 준수해야합니다.

따라서 소프트웨어 라이센스없이 파일을 사용하면 저작권법을 위반하는 것입니다. 모든 라이센스에는 "위의 저작권 표시 및이 사용권 고지가 소프트웨어의 모든 사본 또는 상당 부분에 포함되어야합니다"와 같은 문구가 있으므로 해당 라이센스를 어딘가에 두어야합니다.

파일 자체에 있거나 코드를 라이브러리로 사용했을 때 관련 부분을 자체 디렉토리에 넣고 "README"또는 "LICENSE"를 해당 서브 디렉토리에 추가했습니다.

즉, 각 파일에 라이센스를 넣을 필요는 없습니다. 과잉이라고 생각합니다. 그렇게 할 때 추가적인 법적 보호는 없습니다. 다운 스트림 사용자에게는 다소 도움이되지만 크게 도움이되지는 않습니다.

많은 주석 기반 메타 데이터 (라이센스, 각 기능의 생성 날짜, 변경 로그 등)의 전통은 사용하기 쉽고 유용하지 않은 부적이기 때문에 존재하는 매우 오래된 전통이라고 생각합니다.

예를 들어 기본 Eclipse 템플릿은 각 함수 앞에 쓸모없는 메타 데이터라고 생각하는 것을 추가합니다. 버전 제어로 훨씬 더 잘 캡처됩니다. 그러나 그 관행은 많은 상점에서 일반적입니다.


2
예를 들어 Rails 소스 파일의 라이센싱과 관련된 내용은 전혀 없습니다.
Anton Barkovsky

3
최상위 Python 표준 라이브러리에있는 200 개 파일 중 34 개에 "저작권"이라는 단어가 포함되어 있으며 그 중 4 개만 Python에 대한 저작권을 제어하는 ​​Python Software Foundation에 대한 것입니다.
Andrew Dalke

그래, 난 파일 당 저작권 공지가 지속될 것이라고 생각하지 않습니다 ... 너무 길다. 그것은 단지 미래의 길이 될 수 없습니다 .. DRY ... 루트 레벨 라이센스를 생각하고하자. 하루에 전화하십시오. npm의 모든 것이 대부분 이미 이런 식으로하고 있다고 생각합니다
8

13

문제는 누군가가 전체 저작권이 포함 된 나머지 파일을 제외하고 체크 아웃, 이메일 전송, 파일 하나 다운로드 등의 대규모 프로젝트에서 단일 소스 코드 파일을 쉽게 분리 할 수 ​​있다는 것입니다. 그런 다음 해당 파일을 ad-infinitum과 함께 제 시간에 전달하여 파일 출처를 모를 수도있는 N 자에게 전달할 수 있습니다.

맨 위의 저작권 고지는 해당 고독한 파일을 가로 질러 실행하는 모든 사람에게 실제로 공개 된 도메인이 아니라 저작권이 있음을 상기시켜 일부 라이센스는 배포 또는 사용과 관련이있을 수 있습니다. 파인더가 자신의 임의의 가정을 할 수있게하는 것.


21
소스 파일의 여러 조각을 복사하여 붙여 넣는 것만으로는 쉽게 집계 해제 할 수 있습니까? 그럼 뭐야? 이 주장은 저에게 일관성이없는 것 같습니다.
Travis Griggs

10
저작권 고지없이 저작물을 공개 도메인으로 가정하는 것이 문제입니다. 저작권 통지없이 파일을 발견 한 경우 파일을 복사하여 다른 사람에게 보내지 않아야합니다.
Rich Remer

물론 파일을 "복제하고 소유"하는 것이 합법적이라는 문제가 있습니다. 때로는 업스트림 프로젝트 외부에서 버그를 수정하기가 어렵 기 때문에 오픈 소스를 프로젝트 저장소에 직접 넣었습니다. 그들 중 하나를 해제합니다. 이것이 좋은 생각이라고 말하지는 않지만 우리는 해냈습니다.
xenoterracide 2016 년

8

지하 벙커에는 각 소스 파일에 무엇을 넣어야하는지 알려주는 비밀 초강대국 회의가 없습니다.

이 파일이 어떤 라이센스하에 있는지, 그리고 대부분의 GPL 소프트웨어에는 license.txt를 읽는 짧은 프리앰블이 포함되어 있음을 사용자에게 분명히합니다. 프로젝트가 분할되고 파일이 재사용되므로 메시지를 단일 파일에 넣는 것은 좋지 않을 수 있습니다.

가능성이 거의없는 상황에서 법정에 간 적이 있다면 각 파일을 작업 물로 명확하게 표시하고 어떤 라이센스를 받았는지에 대해 더 많은 주장을 할 수 있습니다.


6

나는 거의 비슷한 질문을 게시했습니다. 성가심과 기술에 대한 정보가 적습니다. TL; DR : 나는 그 대답이 저자의 우선 순위의 문제라고 생각합니다. 어쩌면 의도가 우선 순위보다 더 정확할 것입니다 ...

"괜찮아"의 정의에 따라 소스에서 라이센스를 참조해도 괜찮습니다. "비 동반 (unccompanied)"이라는 용어는 사랑에 찬 코드 기반과 무자비하게 분리 된 프로젝트의 일부인 소스 파일을 나타냅니다. 이 파일에는 다음과 같은 줄이 있습니다.

# This file is covered by the LICENSING file in the root of this project.

또는 다음과 같이 훨씬 더 멋진 줄 :

* @license OMGBBQ <http://goodlics.com/bbq>

"하지만 기다려!" "파일이 프로젝트와 분리되었다고 말했고 goodlics.com은 도메인 스쿼터로 리디렉션됩니다. 당신은 맞습니다, 나는 그렇게 말했지만 괜찮을지도 모릅니다 . 변호사가 아닌 이유는 다음과 같습니다.

  • 거의 모든 국가에서 Berne Convention에 동의했습니다. AFAIK는 무언가를 만들면 저작권이 있음을 의미합니다. (c) 라인이나 그와 같은 쓰레기가 필요하지 않지만 그 물건 (GitHub와 같은 타사 VCS)은 그것을 만들었을 때와 그것을 만들었을 쉽게 증명할 수 있습니다 .
  • 따라서 작성한 1337 코드를 온라인으로 게시하는 경우 저작권이 있습니다. 아무도 그것을 (법적으로) 복사 할 수 없습니다. 드물고 충격적이지만 사람들이 때때로 법을 어기는 것을 들었습니다. 여전히 가능합니다.
  • 그 멋진 nyancat-bcminer-algo.qbasic파일은 당신이 쓰고, 그것을 믿는다 라이브 저널에 게시 여부, 하지 퍼블릭 도메인입니다. 공개 도메인 이라고 말하지 않는 한 아닙니다 . 기본적으로 그것은 당신과 당신의 것입니다. 그것은이다 ... 소중한 . (디즈니가 아니라면 최소 25-50 년 이상)
  • 사람들은 일반적으로 라이센스를 통해이 의도를 전달합니다 (귀하의 권리가 아닌 일부 또는 모든 권리를 만드는 것). 그러나 그 의도를 발표해야합니다. 옵트 인 옵트 아웃 (HAHA GET IT?은 귀하의 저작권을 옵트 아웃 하시겠습니까? AWESOME)입니다. 티켓을 꺼내십시오. 거의 다 왔습니다!
  • 괜찮 경우 상기 무 반주 파일은 개인 도메인 있음 - 즉, 법적으로 복사 가능한 아니라면, 그때 잠재적으로 깨진 참조를 사용하여 완벽하게 괜찮습니다. 그러나 괜찮지 않다면 모든 소스 파일에 라이센스 텍스트를 포함시켜야한다고 생각합니다. 이런 방식으로, 비 동반 파일은 사용자가 원하는 방식으로 라이센스가 부여 됩니다. 그래, 더 나아

이 추론은 두 가지 서사시와 아마도 잘못된 가정을 만듭니다.

  • "손상된"라이센스 참조는 기본 (저작권이있는) 동작으로 대체되며 이는 유효한 가정이 아닐 수 있습니다.
  • 게시 한 사이트에는 모든 것을 공개 도메인으로 만드는 일종의 게시 정책 (예 : StackExchange)이 없습니다.

원숭이 뇌기도를 타고 주셔서 감사합니다.

면책 조항 : 이것은 내가 100 % 잘못되었다는 것을 90 % 확신하는 것이 논리적 인 것 같습니다.


6

라이센스프리앰블 에는 차이가 있습니다 .

일부 프로젝트에서는 GNU General Public License, Version 3.0을 사용하고 있습니다. GNU GPL을 사용하면 모든 소스 코드 파일에 대한 전문이 필요합니다.

프리앰블 및 명령어는 GNU GPL의 필수 부분이므로 생략 할 수 없습니다.

출처 : http://www.gnu.org/licenses/gpl-faq.html#GPLOmitPreamble

그래서 여기 내가하는 일이 있습니다.

1. License.txt 추가

규칙을 따르기 위해 LICENSE.txt 를 프로젝트 저장소의 루트에 넣었습니다 . 이것은 GitHub에서도 제안합니다 ( " 라이센스는 어디에 있습니까? "참조 ).

2. 자동 접기를 사용하여 프리앰블 추가

다음으로 모든 소스 코드 파일의 상단에있는 GPL 프리앰블을 포함 하지만 나는 IDE에서 숨길가 거의 방해 할 수 있습니다. 대부분의 IDE에는 코드 블록을 자동으로 접는 기능이 있습니다. NetBeans는 사용자 정의 코드 폴딩 을 지원하고 WebStorm은 폴딩 주석 도 지원합니다 .

다음은 그 모습입니다 :

//<editor-fold desc="Preamble">
/*
 * Company Name
 * Copyright (C) 2016 Company Name
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * ...
 */
//</editor-fold>

console.log('Here is my licensed JavaScript code.');

나는 이것이 편안함과 법적 보안 사이의 매우 좋은 절충안이라고 생각합니다.

라이센스를 추가해야하는 많은 프로젝트가있는 경우 http://www.addalicense.com/ 이 도움이 될 수 있습니다.

참고 : 내 조언은 GPLv3에 관한 것입니다. 다른 라이센스 유형은 프리앰블이 필요하지 않을 수 있습니다.


7
«GNU GPL을 사용하면 모든 소스 코드 파일에 대한 전문이 있어야합니다.»그렇지 않습니다. 인용 한 부분은 LICENSE파일 에서 프리앰블을 제거하지 못하도록 합니다. 즉, GPL을 삭제하여 텍스트를 변경할 수 없습니다.
Andrea Lazzarotto

6

여기에 아직 언급되지 않은 또 다른 실용적인 방법이 있습니다.

SPDX-License-Identifier꼬리표. https://spdx.org/using-spdx

이를 사용하면 모든 소스 파일 헤더의 "법적 상용구"가 두 줄로 줄어 듭니다.

/* SPDX-License-Identifier: (GPLv3-or-later AND LGPL-2.0-only) WITH bison-exception */
/* Copyright © 1234 Project Author */

또한 소프트웨어 공급망 분석을 자동화하는 사람들은 공통 표준의 기계 판독 가능 라이센스 설명을 고수해 주셔서 감사합니다.

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