본문으로 건너뛰기

의무사항 카탈로그

라이선스는 컴포넌트를 사용해도 되는지를 알려 줍니다. 의무사항은 그 대가로 무엇을 해야 하는지를 알려 줍니다 — 저작권 고지 재현, 라이선스 텍스트 동봉, 소스 공개 등입니다. TRUSCA는 구조화된 라이선스별 의무사항 카탈로그를 제공하여, Obligations 탭과 생성된 NOTICE 파일이 데모 시드 데이터가 아니라 실제 스캔 결과로 채워지도록 합니다.

이 카탈로그는 포털이 분류하는 약 30개의 잘 알려진 SPDX 라이선스(라이선스 분류기와 동일한 집합)를 다룹니다. 각 라이선스에 대해 라이선스 텍스트에서 도출한, 소비자가 충족해야 할 구체적 의무를 기록합니다.

법률 자문이 아닙니다

이 카탈로그는 스캔 결과에 대응하는 데 도움이 되도록 일반적인 라이선스의 의무를 요약합니다. 컴플라이언스 보조 자료일 뿐 법률 자문이 아닙니다 — 구속력 있는 조항은 항상 정식 라이선스 텍스트를 확인하십시오(각 의무는 해당 텍스트로 딥링크됩니다).

채워지는 방식

카탈로그는 코드 내장(백엔드의 단일 진실)이며, 프로젝트의 최신 스캔에서 실제로 관찰된 라이선스에 한해 obligations 테이블로 필요 시점에 구체화됩니다.

  • Obligations 탭을 열거나 NOTICE를 다운로드하면, 포털은 스캔에 존재하는 모든 카탈로그 라이선스가 의무사항 행을 갖도록 보장합니다.
  • 채우기는 멱등적이고 추가적입니다: 누락된 행만 추가하며, 동일한 (라이선스, kind) 쌍에 대해 직접(또는 시드로) 작성한 의무는 절대 덮어쓰지 않습니다.
  • 스캔에 등장한 라이선스만 보강되며, 모든 프로젝트에 일괄 기록하지 않습니다.

스키마 변경이나 마이그레이션은 없습니다: 의무사항은 이미 테이블과 읽기 경로를 갖고 있었고, 이 기능은 실제 스캔에 대해 그 테이블을 채울 뿐입니다.

구조화 의무사항 필드

모든 카탈로그 라이선스는 다음의 기계가 읽을 수 있는 사실을 가집니다.

필드의미
attribution_required저작자·저작권 고지를 재현해야 합니다.
license_text_inclusion_required전체 라이선스 텍스트를 포함해야 합니다.
copyright_notice_required저작권 고지를 특히 보존해야 합니다.
state_changes_required수정한 파일을 표시·문서화해야 합니다.
source_disclosure소스 공개 의무의 범위: none·library·network.
patent_grant라이선스에 명시적 특허 허여가 있습니다.
same_license_required배포·파생 저작물이 동일 라이선스를 유지해야 합니다(카피레프트).
notice_file_requiredNOTICE/저작자표시 파일이 있으면 함께 전달해야 합니다.

소스 공개 범위

source_disclosure 필드는 컴플라이언스에서 가장 헷갈리는 카피레프트 계열을 구분합니다.

범위의미예시
none소스 공개 의무 없음.MIT, BSD, ISC, Apache-2.0
library전체 애플리케이션이 아니라 해당 컴포넌트/라이브러리(와 그 변경분)의 소스를 제공해야 함.LGPL, MPL-2.0, EPL, CDDL; GPL의 conveying 트리거도 포함
network바이너리를 받은 사람뿐 아니라 네트워크로 상호작용하는 사용자에게도 소스를 제공해야 함.AGPL-3.0, SSPL-1.0

GPL은 source_disclosure = library이면서 동시에 same_license_required = true로 모델링됩니다. 소스 의무는 바이너리를 conveying할 때 발동(약한 카피레프트와 동일)되며, 프로그램 전체에 미치는 범위는 same_license_required가 담당합니다. AGPL은 그 트리거를 네트워크 사용까지 확장하며, 그것이 network가 포착하는 바입니다.

렌더링되는 의무 종류(kind)

카탈로그는 다음 kind 값으로 의무사항 행을 생성합니다(Obligations 탭 분포와 NOTICE에 표시됩니다).

  • attribution — 저작권·저작자 고지 재현.
  • notice — 재배포 시 라이선스 텍스트/NOTICE 파일 동봉.
  • source-disclosure — 소스 제공(범위는 위 표 참조).
  • copyleft — 파생·배포 저작물을 동일 라이선스로 유지.
  • modifications — 변경 파일 표시·문서화.
  • patent — 라이선스의 명시적 특허 허여와 그 종료 조건.

라이선스 카테고리별 정리

의무 집합은 allowed | conditional | forbidden 카테고리를 따릅니다(라이선스 정책과 동일한 어휘).

카테고리대표 의무
허용(관대형)저작자표시 + 라이선스 텍스트 포함. Apache-2.0은 NOTICE 파일 전달, 수정 고지, 특허 허여를 추가합니다. 퍼블릭 도메인 헌정(0BSD, CC0-1.0, Unlicense, WTFPL)은 의무가 없습니다.
조건부(약한 카피레프트)저작자표시 + 라이브러리 범위 소스 공개 + 수정 고지. LGPL은 라이브러리 재링크/교체 권리를, MPL/EPL/CDDL은 명시적 특허 허여를 추가합니다.
금지(강한 카피레프트 / 소스 공개형)프로그램 전체 소스 공개 + 동일 라이선스 카피레프트 + 수정 고지. AGPL/SSPL은 네트워크/서비스 사용까지 의무를 확장하고, BUSL은 Change Date 전까지 사용 제한이 있는 소스 공개형입니다.

예시

라이선스저작자표시라이선스 텍스트특허 허여소스 공개동일 라이선스
MIT아니오none아니오
Apache-2.0none아니오
BSD-3-Clause아니오none아니오
LGPL-2.1아니오library아니오
GPL-3.0library
AGPL-3.0network
SSPL-1.0아니오network

알 수 없는 라이선스와 복합 표현식

  • 알 수 없는/커스텀 SPDX 식별자(예: ORT의 LicenseRef-*)는 의무를 생성하지 않습니다 — 추측하지 않고 건너뜁니다.
  • 복합 표현식(MIT OR GPL-3.0-only, Apache-2.0 WITH LLVM-exception)은 인식된 모든 피연산자 의무의 합집합으로 해석됩니다. 이는 안전한 컴플라이언스 기본값 입니다: 구성 라이선스 중 어느 것이든 요구하는 바를 모두 충족해야 합니다. 인식되지 않는 피연산자는 무시됩니다.

어디에 표시되나

  • Obligations 탭 — 프로젝트 최신 스캔에서 관찰된 (라이선스, 의무 kind)별 한 행과 kind별 분포 차트.
  • NOTICE 파일 — 표시되는 각 라이선스가 빈 자리표시자 대신 의무(저작자표시·소스 공개·특허 등)를 텍스트·Markdown·HTML로 렌더링합니다.