다른 사람이 만든 좋은 작품을 라이선스 전문가가 되지 않고도, 그리고 그것을 만든 사람들을 조용히 잊지 않고도 사용할 수 있어야 해요. 그래서 Lolly는 가져오는 모든 작품의 출처를 보관하고, 그 작품에 기록된 라이선스를 읽고, 그 라이선스가 실제로 사용자가 하려는 이용에 무엇을 요구하는지 파악하고, 프로그램이 할 수 있는 부분은 직접 처리하고, 오직 사용자만이 할 수 있는 부분을 알려줘요.
이 중 어느 것도 법률 자문이 아니고, 프로젝트에 대한 판정도 아니에요. Lolly는 사실을 기록하고, 라이선스 자체의 법적 문서에서 읽어 낸 소수의 규칙을 적용하며, 그 처리 과정을 보여줘요. 조건이 붙은 라이선스는 정상적이고 허용된 선택이에요. 그것이 결함 있는 자산으로 제시되는 일은 결코 없어요.
따로 유지되는 세 가지 사실
"CC BY 4.0", "이 이용에는 크레딧이 필요해요", "크레딧은 방금 다운로드한 파일 안에 있어요"는 서로 다른 세 가지 진술이고, Lolly는 이들을 따로 유지해요.
- 증거는 출처가 선언한 내용을, 발견된 그대로, 누가 그렇게 말했고 어디서 읽었는지와 함께 기록한 거예요. 이후의 가져오기가 이전 기록을 덮어쓰는 일은 결코 없어요.
- 의무는 검토된 규칙이 그 증거를 하나의 이용, 하나의 전달 경로, 하나의 청중에 대해 어떻게 해석하는지예요. 공유에 적용되는 조건은 비공개로 작업하는 동안에는 조건부인 채로 남아 있어요.
- 전달은 완성된 바이트가 실제로 담고 있는 것을 말하며, 다시 읽어서 측정해요. Lolly는 읽는 쪽이 전달된 파일 안에서 크레딧을 찾아낸 뒤에만 크레딧이 포함되어 있다고 말해요.
이것을 처음 마주하는 곳
이모지 세트가 가장 흔한 사례예요. Twemoji는 CC BY 4.0이라서, 이모지가 들어간 제목은 아트워크에 크레딧이 붙은 채로 내보내지고 더 할 일이 없어요. OpenMoji의 두 세트는 모두 CC BY-SA 4.0이라서, 그 글리프 중 하나를 브랜드 처리로 다시 칠하는 것은 2차적 저작물에 해당하고, 그 2차적 저작물을 공유하려면 한 번은 호환되는 라이선스를 골라야 해요. 세트를 선택하는 것 자체가 막히는 일은 결코 없고, 세트 컨트롤에는 선택한 자리에 라이선스 이름이 표시돼요. 카탈로그 일러스트, LUT, 폰트, 그 밖의 기록된 모든 작품에도 같은 규칙이 적용돼요.
Lolly가 쓰는 말
내보내기 패널, Verify, 명령줄, 그리고 기계가 읽는 결과에 걸쳐 하나의 용어를 사용해요.
| 화면에 보이는 것 | 의미하는 것 |
|---|---|
| 출처 크레딧이 포함될 예정이에요. | 크레딧은 준비되어 있고, 그 경로는 이를 전달할 수 있어요. 아직 아무것도 기록되지 않았으므로, 이는 성공을 알리는 메시지가 아니에요. |
| 이 파일의 메타데이터에 크레딧이 포함되어 있어요. | 전달된 바이트를 다시 읽었고, 크리덴셜이 검증되었으며, 필요한 모든 출처가 그 안에서 발견되었어요. |
| 크레딧과 크리덴셜이 다운로드 패키지 안에 있어요. | 크레딧은 결과물 옆의 동반 파일로 함께 전달돼요. 전달할 때는 둘을 함께 보관하세요. |
| 게시물 설명에 이 크레딧을 추가하세요. | 선택한 경로는 크리덴셜도 읽을 수 있는 크레딧도 전달하지 않으므로, 크레딧 문구를 붙여넣는 것은 사용자의 몫이에요. |
| 이 2차적 저작물을 공유하려면 호환되는 라이선스가 필요해요. | ShareAlike 출처가 변경되었고, 결과물은 비공개 이용이 아닌 다른 곳으로 향하고 있어요. 선택은 배치할 때마다 뜨는 대화 상자가 아니라 한 번의 동작이에요. |
| 출처 라이선스가 기록되어 있지 않아요. | 이 출처에 대해 기록된 내용이 없어요. 이는 그 작품에 불리한 판정이 아니라 채워야 할 공백이에요. |
| 조건은 기록되었지만 아직 해석되지 않았어요. | 식별자는 인식되고 조건은 목록으로 나열되지만, 여기 있는 어떤 규칙도 그것을 해석하지 않아요. 자동 통과도, 자동 금지도 없어요. |
| 두 라이선스 선언이 서로 달라요. | 두 기록이 서로 다른 라이선스를 명시하고 있고, 어느 허락이 적용되는지는 아직 선택되지 않았어요. |
| 기록된 CC0 기증 아래에서는 필수 크레딧이 없어요. | 그 기증은 아무것도 요구하지 않아요. 그래도 예의상의 크레딧은 제공돼요. |
| 전달된 파일 안에 크레딧이 없어요. | 크레딧이 약속되어 있었지만 다시 읽었을 때 찾을 수 없었고, 파일은 여전히 사용자의 것이에요. 다시 내보내거나, 크레딧 문구를 직접 사용하세요. |
Lolly는 "저작권 확인됨", "법적으로 안전함", "완전히 정리됨", "권리 처리 완료"라는 말을 쓰지 않고, 제품 어디에도 단 하나의 초록색 라이선스 배지 같은 것은 없어요. 이런 말들은 어떤 프로그램도 확인할 수 없는 것을 주장하는 셈이니까요.
Lolly가 검토한 라이선스
규칙 버전은 rights-rules-2026-09-13.2예요. 아래의 각 규칙은 라이선스 자체의 법적 문서에서 읽어 낸 것이고, 그 출처가 된 조항은 engine/src/rights-profiles.ts 안에서, 그리고 여기서도 함께 인용돼요. 버전과 포트는 기록된 그대로 유지돼요. CC BY 3.0 선언은 앱의 선택 기능이 4.0을 선호한다고 해서 4.0으로 보고되지 않고, 자기 버전을 그대로 유지해요.
| 라이선스 | Lolly가 할 수 있는 이용에 요구하는 것 | 출처 |
|---|---|---|
| CC BY 4.0 | 제작자, 제목, 저작권 표시, 라이선스 이름과 링크, 출처 링크, 변경 사항 표시 - 출처가 각각을 제공한 경우에 한해서요. 제외되는 이용은 없고, 상업적 이용도 포함돼요. | 법적 문서, 2(a)(1)항 및 3(a)항 |
| CC BY-SA 4.0 | 같은 크레딧이 필요해요. 그에 더해, 2차적 저작물을 공유할 경우 호환되는 라이선스로 배포해야 해요: CC BY-SA 4.0, Free Art License 1.3, 또는 한 방향으로만 진행되는 GPL-3.0-or-later예요. 이 세 가지는 Creative Commons 목록에서 데이터로 가져오며, 이름으로 대조하는 일은 결코 없어요. | 법적 문서, 3(a)항 및 3(b)항; 호환 라이선스 목록 |
| CC0 1.0 | 아무것도 없어요. 이 기증에는 조건이 전혀 없으므로, Lolly는 예의상의 크레딧을 제공하지만 그것을 필수인 것처럼 제시하는 일은 결코 없어요. | 기증 선언, 2항 및 3항; 크레딧 표기에 관한 CC FAQ |
| CC-PDDC | 아무것도 없어요. 기록되는 것은 그 주장 자체와 그것을 한 사람이에요. 인증이란 증거가 아니라 한쪽 당사자의 진술이기 때문이에요. | 기증 및 인증 문단 |
| Apache License 2.0 | 출처의 고지 사항과 NOTICE 파일의 저작자 표시 문구는 배포되는 작품과 함께 이동해요. 런타임 이용은 아무것도 요구하지 않아요. 고지 문구를 요구하는 라이선스인데 작품에 그것이 전혀 없으면 공백으로 보고돼요. | Apache License 2.0, 4항, 조건 1~4 |
| MIT | 저작권 표시와 허가 고지문은 복제본과 실질적인 부분에 함께 따라가요. 런타임 이용과 참조 이용은 아무것도 요구하지 않아요. | MIT, 허가 고지 조건 |
| SIL OFL 1.1 | 그 폰트로 텍스트를 렌더링하는 것은 텍스트 자체에는 아무것도 요구하지 않아요. 폰트 파일을 전달하면 라이선스, 저작권 표시, 예약된 이름 규칙이 함께 따라가요. | OFL 1.1, 조건 2, 3, 5; 문서에 관한 OFL FAQ |
기록은 되지만 해석되지는 않음
CC BY-NC, CC BY-ND, 그리고 NC-SA와 NC-ND 조합은 인식되고 그 조건은 목록으로 나열되지만, 여기 있는 어떤 규칙도 그것을 해석하지 않아요. 이들은 조건을 명시한 한 줄과 함께 licence.unknown으로 보고돼요. 상업적 맥락은 가격이나 계정만으로는 판단할 수 없고, 조합된 각 문서는 규칙이 손대기 전에 개별적인 검토가 필요해요.
정직한 답변 세 가지가 더 있는데, 어느 것도 허가를 뜻하지는 않아요.
LicenseRef-식별자는 그대로 반환돼요. 이는 저장된 정의를 가리키는 것일 뿐, 철자만으로 독점 라이선스로 취급되는 일은 결코 없어요.- 아무것도 인식하지 못하는 선언은 분석되지 않은 채로 반환되고, 원문이 그 옆에 함께 보관돼요.
A OR B는 권리자가 제시한 선택지이므로 모든 대안이 반환되고 어느 것도 선택되지 않아요.A AND B는 누적 조건이며, 이 규칙들은 두 프로필을 함께 읽어 내는 대신 그 사실을 그대로 기록해요.
라이선스 정보가 없다는 사실이, 그 작품을 자유롭게 전달해도 된다는 증거로 읽히는 일은 결코 없어요.
Lolly가 사용자를 위해 하는 일
- 카탈로그에서는. 작품의 정보 시트에는 출처와 제작자, 원래 표기를 아래에 남긴 표준 라이선스 이름, 기록되어 있다면 복사 가능한 크레딧, 그리고 이용에 무엇이 필요한지 설명하는 한 줄이 표시돼요. 타일은 요구 사항을 알려줄 뿐, 내보내기가 완료되었다고 주장하는 일은 결코 없어요.
- 내보내기 패널에서는. 렌더링이 기록된 작품을 사용하면 출처 크레딧 카드가 나타나요. 이 카드는 상태, Details 뒤에 있는 크레딧 문구, Copy credit 버튼, 그리고 판단이 필요할 때의 인라인 카드를 보여줘요. 판단이 다운로드를 막는 대화 상자가 되는 일은 결코 없어요. 남은 조치가 있는 다운로드도 그대로 진행되고, 비공개 작업물은 계속 사용할 수 있어요.
- 파일 안에서는. 기록된 작품을 배치한 내보내기는 서로 다른 작품마다 하나씩 Content Credentials 출처 재료를 기록하고, 이를 공개 주소에 있는 원본 바이트에 결속시키며, 제작자, 라이선스와 그 링크, 출처, 리비전, 변경 사항을 함께 담아요. Lolly는 자신이 관찰한 것에 서명해요. 원작자를 대신해 주장에 서명하는 일은 결코 없고, Verify는 둘 중 어느 쪽이었는지 알려줘요.
- 기록한 뒤에는. 전달된 바이트는 크레딧이 포함되었다고 어딘가에서 말하기 전에 다시 읽혀요. 검증에 실패한 크리덴셜은 전달된 크레딧으로 치지 않아요.
- 편집 가능한
.lolly파일에서는. 바이트는 검토된 라이선스가 출처 전달을 허용한다고 기록한 경우에만 이동하고, 팩의CREDITS.txt는 무엇이 전달되었는지, 어떤 라이선스 아래인지, 그리고 무엇이 어떤 이유로 보류되었는지를 나열해요. 기록되지 않은 라이선스는 보류돼요. 보류된 콘텐츠를 의도적으로 포함할 수도 있고, 그럴 경우 크레딧 파일에는 그것이 사용자의 선택이었다는 사실이 기록돼요. - Verify에서는. Sources 패널에는 파일이 기록하는 모든 출처가 산출된 요약, 크레딧, Copy credit 버튼, 요청할 때만 열리는 Open source 링크, 그리고 검사한 범위의 명시된 한계와 함께 나열돼요. Check for this use 질문은 이용 방법을 선택할 때만 나오고, 그 답을 위해 무언가를 가져오는 일은 없어요.
- 메타데이터를 제거할 때는. 제거 작업은 파일이 더 이상 담고 있지 않은 출처 크레딧이 몇 개인지 알려주고, 크레딧 문구를 제공하며, 크레딧을 옆에 둔 깨끗한 파일도 함께 제공해요. 제거된 바이트에 다시 도장이 찍히는 일은 결코 없어요.
끝까지 사용자의 것으로 남는 것
- 라이선스 선택은 사용자의 몫이에요. 파일의 권리를 주장하는 것은 예전에는 하나였던 세 가지 상태를 구분해요: 공개 라이선스가 선언되지 않은 상태, 명시적인 모든 권리 보유 표시, 그리고 실제 공개 라이선스 허락이에요. Lolly는 이 중 뒤의 두 경우에만 권리 표시 줄을 작성하고, 프로필에서 가져와 작성하는 일은 결코 없어요.
- 사용자의 작품이 사용자 대신 재라이선스되지 않아요. 출처의 조건과 사용자 자신의 결과물 선언은 별개의 기록이에요. ShareAlike 조건은 그것이 적용되는 2차적 저작물에만 적용되고, 사용자가 만든 다른 모든 것에 자동으로 적용되지는 않아요.
- 비공개 작업물은 계속 사용할 수 있어요. 공유에 적용되는 조건은 공유가 실제로 시야에 들어왔을 때 제기돼요. 여기 있는 어떤 것도 가져오기 금지로 바뀌지 않고, 사용자 자신의 파일 사이에 라이선스 설문지가 끼어드는 일도 없어요.
- 판단은 그 자체의 사실에 근거해 기억돼요. 기록하는 모든 선택에는 그 대상이 된 작품, 이용, 경로, 청중의 지문이 찍혀요. 세트, 처리, 형식, 청중 중 하나라도 바꾸면 그 질문은 다시 제기돼요. "라이선스 무시" 같은 일괄 스위치는 없어요. 경고를 클릭해서 없애는 것만으로는 크레딧을 전달하거나 허가를 내줄 수 없기 때문이에요.
- 사용자의 정보는 제3자의 크레딧과 분리되어 있어요. 사용자 자신의 개인 메타데이터를 제거해도 크레딧이 표시된 작가는 지워지지 않고, 필수 크레딧이 사용자의 연락처 정보를 내보내는 구실이 되는 일은 결코 없어요.
명령줄에서는
평가에 필수 크레딧이나 문제가 있으면, 렌더링은 표준 오류로 Rights: 블록을 출력해요. 여기에는 상태, code - summary 형식으로 문제마다 한 줄, 전달된 파일을 다시 읽은 결과, 그리고 붙여넣을 크레딧 문구가 담겨요.
Rights: actions-required
licence.adaptation-choice - If you share this adaptation, it needs a compatible licence.
Credential intact. It records 1 source. The exporter recorded it; the source did not sign a credential of its own.
Credits included in this file's metadata.
"water wave (OpenMoji Color 17.0.0)" by Vanessa Boutzikoudi (OpenMoji), CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/, source https://raw.githubusercontent.com/hfg-gmuend/openmoji/f9fc506a3f913be9897ab0181d611d4c910a4104/color/svg/1F30A.svg, changes: recoloured.이 두 진술은 서로 독립적이며, 바로 그것이 둘을 따로 유지하는 이유예요: 크레딧은 파일 안에 있지만, 파일을 공유하기 전에는 여전히 라이선스에 관한 판단이 필요해요. 파일은 어느 쪽이든 그대로 기록돼요.
| 상태 | 의미 | 종료 코드 |
|---|---|---|
ready | 사람의 판단을 기다리는 것이 없어요. | 0 |
actions-required | 파일을 공유하기 전에 아직 판단이 남아 있어요. 파일은 그대로 기록돼요. | 4 |
use-not-covered | 검토된 규칙에 따르면 라이선스가 이 이용을 포함하지 않아요. | 4 |
unknown | 유일한 문제는 공백이에요: 기록되지 않은 라이선스, 또는 해석되지 않은 조건이에요. | 0 |
delivery-failed | 평가가 아니라 영수 기록에 의해 설정돼요: 약속된 크레딧이 전달된 바이트 안에서 발견되지 않은 거예요. 내보내기 패널이 이를 표시하고, CLI는 다시 읽기 결과 줄에 같은 사실을 대신 보고해요. | 출력되지 않음 |
종료 코드 4는 이 CLI가 이미 "거부"로 판정한 보호 검사에 부여하는 코드예요. 의도적으로 3이 아니에요. 3은 "다른 러너에서 재시도"를 뜻하는데, 라이선스 판단은 어떤 러너에서든 똑같이 기다리고 있을 테니까요.
--rights=private는 이 렌더링이 누구에게도 전달되지 않는다는 것을 나타내요. 블록은 여전히 출력되고 크레딧도 복사할 수 있는 상태로 남아요. 물러나는 것은 공유에 적용되는 조건뿐이고, 전달에 관한 어떤 주장도 기록되지 않아요. 조건을 무시하기 위한 플래그는 없어요: --rights=ignore는 사용 오류예요.
문제 코드는 안정적이고 기계가 읽을 수 있으며, 번역된 문구와는 무관해요.
attribution.source-missing, attribution.delivery-missing, licence.adaptation-choice, licence.use-not-covered, licence.grant-conflict, licence.unknown, source.redistribution-unknown, credential.ingredient-missing.
MCP를 통해서는 lolly_verify가 요약, 기록된 출처마다 한 행, 그리고 명시된 검사 범위의 한계를 담은 rights 페이로드를 반환해요. 브라우저가 필요 없는 lolly_render는 status, issues, credits, fingerprint, 그리고 바이트를 다시 읽어서 측정하는 creditsInFile 플래그를 반환해요.
규칙이 있는 곳
네 개의 엔진 모듈이 있고, 모두 순수해요: 네트워크도, 시계도, 파일 시스템도 쓰지 않아요. 규칙 데이터는 버전이 관리되며 저장소 안에 있고, 가져오는 일은 결코 없어요.
| 모듈 | 담고 있는 것 |
|---|---|
engine/src/rights-profiles.ts | 식별자 표, 최소한의 SPDX 표현 리더, 출처가 함께 표시된 검토된 프로필, 그리고 크레딧이 출력할 수 있는 링크에 대한 단 하나의 규칙이에요. |
engine/src/rights-evaluate.ts | 분류, 문제, 저작자 표시 계획, 지문이에요. 결정론적이라서, 같은 사실이면 순서가 달라도 같은 답이 나와요. |
engine/src/rights-attribution.ts | 읽을 수 있는 크레딧, 동반 파일, 출처 재료, 그리고 기록 후에 측정되는 영수 기록이에요. |
engine/src/rights-report.ts | 검증된 크리덴셜을 Verify가 묻는 세 가지 질문으로 다시 읽어 낸 거예요. |
tests/fixtures/rights/에 있는 기대값 파일들은 평가기의 출력이 아니라 라이선스 문서로부터 작성되었고, 그 README는 각 기대값의 근거가 된 조항을 인용해요.
이것이 하지 않는 일
분명히 밝혀 둘게요. 이름 붙여지지 않은 공백은 약속처럼 읽히기 때문이에요.
- NC와 ND는 해석되지 않아요. 그 조건은 기록되고 unknown으로 보고돼요.
- 전달 대상은 확인되지 않아요. Lolly는 캡션을 준비하지만, 커넥터가 요청을 받아들였다고 해서 크레딧이 독자에게 도달했다는 증거가 되지는 않아요. 이후의 업로드, 스크린샷, 트랜스코딩이 숨겨진 메타데이터를 보존한다고 여기서 약속하는 것도 아니에요.
- 네이티브 메타데이터 크레딧 필드는 계획에서 작성되지 않아요. 크레딧은 Content Credentials와 읽을 수 있는 텍스트로 전달돼요. IPTC와 XMP의 출처별 크레딧 필드는 아직 저작자 표시 계획에서 채워지지 않아요.
- 수정과 철회는 아직 구현되지 않았어요. 기록된 작품에 빠진 제작자나 로컬 수정 사항을 추가하는 것, 그리고 기록을 철회하는 것에는 아직 인터페이스가 없어요.
- 연동 공급자는 아직 구현되지 않았어요. 구매한 스톡 소재, 맞춤 허가, 공급자 계정에는 가져오기 경로가 없어서, 그 허락은 사용자 자신의 진술로만 기록할 수 있어요.
- 조직 정책은 이 결과와 결합되지 않아요. 내보내기 정책과 라이선스 조건은 현재 별개이고, 조직의 승인이 권리자의 허락을 뜻하지는 않아요.
- 일부 전달 경로는 아직 이 방식에 포함되지 않았어요. 카탈로그 원본 다운로드, 대량 ZIP, 파생 다운로드, Send, Copy image는 아직 이 크레딧을 평가하거나 전달하지 않아요.