1 - §3.4.1 산출물
이 조항은 Phase 3 — 프로세스 구축 단계에서 구축합니다. 전체 구축 로드맵 보기
1. 조항 개요
라이선스 의무를 이행하려면 실제로 고지문, 소스코드 패키지 등 컴플라이언스 산출물을 준비하여 소프트웨어와 함께 제공해야 한다. §3.4.1은 식별된 라이선스가 요구하는 컴플라이언스 산출물을 준비하고 공급 소프트웨어와 함께 배포하는 절차, 그리고 산출물 사본을 일정 기간 보관하는 절차를 수립하도록 요구한다. 이 조항은 §3.3 검토·승인 단계의 결과물을 실제 배포와 보관으로 연결하는 단계다.
2. 해야 할 활동
- 라이선스별로 요구되는 컴플라이언스 산출물(NOTICES 파일, 소스코드 패키지, written offer 등)의 유형을 정의한다.
- 산출물을 준비하여 공급 소프트웨어와 함께 제공하는 절차를 문서화한다.
- 배포된 산출물의 사본을 일정 기간 보관하는 절차를 수립하고 문서화한다.
- 산출물 보관 기간을 정책에 명시한다 (업계 관행: 마지막 배포 후 최소 3년).
- 보관 절차가 올바르게 수행되었음을 입증하는 기록을 유지한다.
3. 요구사항 및 입증자료
| 조항 번호 | 요구사항 (KO) | 입증자료 |
|---|---|---|
| §3.4.1 | 공급 소프트웨어에 대해 식별된 컴플라이언스 산출물을 생성하기 위한 프로세스가 존재해야 한다. | 3.4.1.1 식별된 라이선스가 요구하는 컴플라이언스 산출물을 준비하고, 이를 공급 소프트웨어와 함께 제공하기 위한 프로세스를 설명하는 문서화된 절차 3.4.1.2 공급 소프트웨어의 컴플라이언스 산출물 사본을 보관하기 위한 문서화된 절차. 이러한 절차가 올바르게 수행되었음을 입증하는 기록이 존재해야 함 |
영문 원문 보기
§3.4.1 Compliance Artifacts A process shall exist for creating the identified compliance artifacts for the supplied software.
Verification Material(s): 3.4.1.1 A documented procedure that describes the process under which the compliance artifacts are prepared and distributed with the supplied software as required by the identified licenses. 3.4.1.2 A documented procedure for archiving copies of the compliance artifacts of the supplied software - where the archive is planned to exist for a reasonable period of time since the last offer of the supplied software; at least 3 years is a common practice.
4. 입증자료별 준수 방법 및 샘플
3.4.1.1 컴플라이언스 산출물 준비 및 배포 절차
준수 방법
라이선스 의무에 따른 컴플라이언스 산출물을 준비하고 공급 소프트웨어와 함께 제공하는 절차를 문서화해야 한다. 이 절차 문서가 입증자료 3.4.1.1이다. 절차에는 ①산출물 유형 결정, ②산출물 작성, ③검토 및 승인, ④소프트웨어와 함께 제공, ⑤기록 보관의 단계가 포함되어야 한다.
컴플라이언스 산출물의 유형은 배포하는 라이선스에 따라 달라진다. 일반적으로 고지 의무 라이선스(MIT, Apache-2.0 등)는 NOTICES 파일이 필요하고, GPL 계열 라이선스는 소스코드 패키지 또는 written offer가 필요하다. 산출물 형태는 제품에 동봉, 패키지에 포함, 웹사이트 게시, 요청 시 제공 등 다양한 방식으로 제공할 수 있다.
고려사항
- 산출물 유형 정의: 라이선스별로 어떤 산출물이 필요한지 미리 정의하여 배포 준비 시 빠르게 대응할 수 있도록 한다.
- NOTICES 파일 품질: 모든 오픈소스 컴포넌트의 저작권 고지문과 라이선스 전문이 누락 없이 포함되었는지 검토한다.
- 소스코드 패키지: GPL 컴포넌트의 경우 수정된 소스코드와 빌드 스크립트를 포함한 완전한 소스코드 패키지를 준비한다.
- 제공 방식: 산출물을 소프트웨어에 동봉할지, 웹사이트에 게시할지, 요청 시 제공할지를 라이선스 요건에 맞게 결정한다.
- 최종 검토: 배포 전 오픈소스 프로그램 매니저가 산출물의 완전성을 최종 확인한다.
샘플
아래는 컴플라이언스 산출물 준비 및 배포 절차 개요 샘플이다.
[컴플라이언스 산출물 준비 및 배포 절차]
1. 산출물 유형 결정
- SBOM을 기준으로 포함된 라이선스 목록을 확인한다.
- 라이선스별 의무에 따라 필요한 산출물을 결정한다:
· 고지 의무 라이선스 → NOTICES 파일
· GPL-2.0/3.0 → 소스코드 패키지 또는 written offer
· LGPL → 동적 링크 구조 증명 문서 또는 소스코드
2. 산출물 작성
- NOTICES 파일: 자동화 도구(FOSSology, ORT 등)로 생성하거나 수동 작성.
컴포넌트명, 버전, 라이선스 전문, 저작권 고지문 포함.
- 소스코드 패키지: GPL 컴포넌트의 수정된 소스코드와 빌드 스크립트 포함.
3. 검토 및 승인
- 오픈소스 프로그램 매니저가 산출물의 완전성과 정확성을 검토한다.
- 불완전한 항목은 수정 후 재검토한다.
4. 소프트웨어와 함께 제공
- 제품 패키지에 동봉하거나 설치 시 표시되는 화면에 포함한다.
- 웹사이트 게시 또는 요청 시 제공하는 경우 해당 URL 또는 절차를 명시한다.
- written offer를 사용하는 경우 3년간 유효한 서면 약정을 포함한다.
아래는 GPL 소스코드 공개 의무를 서면 약정(written offer)으로 이행하는 샘플이다. 제품에 동봉하거나 웹사이트에 게시하여 3년간 유효하게 관리한다.
GPLv2와 GPLv3는 소스 코드 제공 옵션과 의무 표현이 다르므로 하나의 문서에 혼합 표기하면 의무 위반이 될 수 있다. 라이선스별로 별도 통지를 발행하거나, 단일 문서 내 명확히 분리한다.
| 라이선스 | 유효 기간 | 비용 | 적용 제약 / 옵션 |
|---|---|---|---|
| GPLv2 §3(a) | 객체코드와 함께 동봉 | — | 상업·비상업 모두 가능. 가장 안전한 옵션 |
| GPLv2 §3(b) (written offer) | 마지막 배포일로부터 3년 이상 | 매체 복제·배송 실비만 청구 가능 | 객체코드의 비상업적 배포에만 적용. 누구든지(any third party) 요청 시 유효. **a medium customarily used for software interchange**로 제공해야 함(매체 종류 명시 필요) |
| GPLv2 §3(c) | §3(b) offer를 그대로 전달 | — | 비상업 재배포자만 §3(b) offer 전달로 의무 충족 |
| GPLv3 §6(a) | 객체코드와 함께 동봉 | — | 가장 안전한 옵션 |
| GPLv3 §6(b) (written offer) | 마지막 모델 배포 후 3년 이상 또는 지원 기간 | 매체 복제·배송 실비만 청구 가능 | 누구든지에게 유효. (c)(d)(e)와 별개 옵션 |
| GPLv3 §6(c) | §6(b) offer 전달 | — | 비상업 재배포만 |
| GPLv3 §6(d) (designated place) | 동일 장소(same place)에 객체코드 사용 기간 내내 | — | 객체코드 무상 제공 장소(예: 네트워크 서버)에 Corresponding Source도 같은 장소에서 무상 제공. peer-to-peer는 §6(e) |
| GPLv3 §6 Installation Information | User Product 출하와 함께 | — | 소비자 기기(임베디드)는 키·서명·설치 절차 등 Installation Information 의무 |
| AGPLv3 §13 | 네트워크 상호작용 사용자에게 무상 다운로드 (수정된 버전을 사용하는 동안 내내) | — | 수정된 버전을 SaaS·네트워크 서비스로 제공 시, 해당 서비스에 원격 접속하는 모든 사용자에게 수정된 버전의 Corresponding Source를 네트워크를 통해 무상 다운로드할 수 있도록 명시적 안내(서비스 UI·푸터·About 페이지 등)를 제공할 의무. written offer만으로는 부족 — 서비스 엔드포인트에 다운로드 링크 노출 필수 |
핵심 주의:
- “Corresponding Source”(GPLv3 §1 정의)는 GPLv2의 “complete corresponding source code"보다 범위가 넓다 — 빌드 스크립트·설치 정보·인터페이스 정의·공유 라이브러리 소스 모두 포함.
- GPLv3는 §6(a)·(b)·(c)·(d)·(e) 5개 옵션 중 선택 가능. §6(b)와 §6(d)는 별도 옵션으로, “written offer 면제"라는 표현은 부정확.
- GPLv2 §3(b)는 객체코드의 비상업적 배포에 한정. 상업 배포는 §3(a) 동봉이 안전.
- AGPL 컴포넌트를 SaaS로 사용하면 written offer만으로 부족 — 네트워크 사용자에게 다운로드 링크 노출 필수.
[GPLv2 소스코드 공개 서면 약정서 (Written Offer) — GPLv2 §3(b) 기반]
이 제품에는 GNU General Public License version 2 (GPLv2)에 따라 배포되는
오픈소스 소프트웨어가 포함되어 있습니다.
해당 소프트웨어의 완전한 대응 소스코드(complete corresponding machine-readable
source code)를 요청하실 경우, 아래 주소로 서면 또는 이메일로 문의하시기 바랍니다.
소스코드는 **소프트웨어 교환에 통상적으로 사용되는 매체**(예: USB 드라이브, DVD,
또는 다운로드 링크 제공)로 전달되며, 매체 복제 및 배송 비용에 해당하는 **실비**를
청구할 수 있습니다. 이 약정은 제품의 마지막 배포일로부터 **최소 3년간 누구든지(any
third party)** 요청하면 유효합니다.
(주: GPLv2 §3(b)는 객체코드의 비상업적 배포에 적용되는 옵션입니다. 상업 배포의
경우 §3(a) 동봉을 권장합니다. 비상업 재배포자는 §3(c)에 따라 본 약정을 그대로
전달할 수 있습니다.)
문의처:
회사명: [회사명]
담당 부서: 오픈소스 컴플라이언스팀
이메일: oss@company.com
우편 주소: [회사 주소]
제공 매체: USB 또는 다운로드 링크 (요청 시 선택)
요청 시 포함할 정보:
- 제품명 및 모델명
- 소프트웨어 버전
- 요청하는 오픈소스 컴포넌트명 (선택)
[GPLv3 소스코드 제공 안내 — GPLv3 §6(d)(designated place) 기반]
이 제품에는 GNU General Public License version 3 (GPLv3)에 따라 배포되는
오픈소스 소프트웨어가 포함되어 있습니다. 다음 두 가지 방법 중 하나로
**Corresponding Source**(GPLv3 §1 정의 — 빌드 스크립트, 설치 정보, 인터페이스
정의, 공유 라이브러리 소스 포함)를 제공받을 수 있습니다.
(1) 네트워크 다운로드 (§6(d) designated place):
https://opensource.[회사도메인]/products/[제품ID]/v[버전]/source.tar.xz
이 URL은 객체코드를 무상 다운로드할 수 있는 동일 장소에서 제공되며,
마지막 모델 배포 후 최소 3년 또는 고객 지원 기간 동안 유지됩니다.
(2) Written Offer 요청 (§6(b)):
위 URL을 이용할 수 없는 경우 oss@company.com으로 문의해 주십시오.
매체 복제·배송 실비를 청구할 수 있으며, 마지막 모델 배포 후 최소 3년
또는 고객 지원 기간 동안 누구든지 요청 시 유효합니다.
[User Product (소비자 기기/임베디드) 추가 안내 — GPLv3 §6 Installation Information]
이 제품이 소비자가 직접 설치 가능한 형태(임베디드 기기 등)일 경우 다음
Installation Information을 함께 제공합니다:
- 수정된 버전 빌드 절차
- 설치에 필요한 서명 키 또는 인증 우회 방법
- 부트로더·펌웨어 업데이트 절차
3.4.1.2 컴플라이언스 산출물 보관 절차
준수 방법
배포된 공급 소프트웨어의 컴플라이언스 산출물 사본을 일정 기간 보관하는 절차를 문서화하고, 그 절차가 실제로 이행되었음을 입증하는 기록을 유지해야 한다. 이 절차 문서와 보관 기록이 입증자료 3.4.1.2다.
보관 기간은 해당 소프트웨어의 마지막 배포 시점으로부터 합리적인 기간이어야 하며, 업계 관행상 최소 3년을 권장한다. 보관 대상은 NOTICES 파일, 소스코드 패키지, written offer 사본, SBOM 등 배포 시 제공한 모든 산출물이다. 소프트웨어 버전별로 산출물을 체계적으로 관리하여 특정 버전의 산출물을 즉시 검색·제출할 수 있어야 한다.
고려사항
- 보관 기간 명시: 정책 또는 절차 문서에 보관 기간(최소 3년)을 명시한다.
- 버전별 관리: 소프트웨어 릴리스 버전과 산출물을 연결하여 버전별로 보관한다.
- 보관 위치: 사내 파일 서버, 문서 관리 시스템, 소스코드 저장소 등 접근 가능하고 안전한 위치에 보관한다.
- 보관 기록 유지: 어떤 버전의 산출물을 언제 보관했는지 이력을 기록한다.
- 접근성: 감사 또는 외부 문의 발생 시 즉시 산출물을 제출할 수 있도록 검색 가능한 형태로 보관한다.
샘플
아래는 컴플라이언스 산출물 보관 기록부 샘플이다.
| 소프트웨어명 | 버전 | 최초 배포일 | 마지막 배포일 | 산출물 유형 | 보관 위치 | 보관 기한 (최종) | 담당자 |
|-------------|------|------------|-------------|------------|-----------|----------------|--------|
| MyProduct | v1.0.0 | 2024-03-01 | 2025-08-20 (patch v1.0.5 재배포) | NOTICES 파일, GPL 소스코드 패키지 | /archive/myproduct/v1.0.0/ | **2028-08-20** | 홍길동 |
| MyProduct | v1.1.0 | 2024-09-15 | 2024-09-15 | NOTICES 파일 | /archive/myproduct/v1.1.0/ | 2027-09-15 | 홍길동 |
| FirmwareX | v2.3.0 | 2025-01-10 | 2025-06-12 (patch v2.3.2 재배포) | NOTICES 파일, LGPL 소스코드 패키지, SBOM | /archive/firmwarex/v2.3.0/ | **2028-06-12** | 이인프라 |
보관 기한 갱신 원칙: GPL written offer의 3년 기한은 “마지막 배포일(last distribution)” 기준이다. 동일 버전 패치 재배포 시 최종 기한도 갱신되어야 한다. 위 샘플은 “최초 배포일"과 “마지막 배포일"을 분리 기록하여 갱신 추적이 가능하도록 설계했다.
5. 참고
- 관련 가이드: 기업 오픈소스 관리 가이드 — 3. 프로세스
- 관련 템플릿: 오픈소스 프로세스 템플릿