Ви повинні мати можливість використовувати хорошу роботу, зроблену іншими людьми, не ставши експертом із ліцензування і не забуваючи тихцем про тих, хто її створив. Тому Lolly зберігає джерело кожної роботи, яку використовує, читає ліцензію, записану для неї, з'ясовує, чого ця ліцензія вимагає від використання, яке ви насправді робите, виконує ту частину, яку може виконати програма, і називає ту частину, яку можете виконати лише ви.
Жодна з цих речей не є юридичною консультацією і не є висновком про ваш проєкт. Lolly записує факти, застосовує невеликий набір правил, прочитаних із власних юридичних текстів ліцензій, і показує свій хід міркувань. Ліцензія з умовами - це нормальний, дозволений вибір. Вона ніколи не подається як пошкоджений актив.
Три факти, які тримаються окремо
"CC BY 4.0", "це використання потребує атрибуції" і "атрибуція є у файлі, який ви щойно завантажили" - це три різні твердження, і Lolly тримає їх окремо:
- Доказ - це те, що заявило джерело, записане таким, яким його знайшли, разом із тим, хто це сказав і де це було прочитано. Пізніший імпорт ніколи не перезаписує більш ранній запис.
- Зобов'язання - це те, що перевірені правила роблять із цього доказу для одного використання, одного шляху доставки й однієї аудиторії. Умови поширення лишаються умовними, поки ви працюєте приватно.
- Доставка - це те, що фактично несуть у собі готові байти, виміряне повторним зчитуванням. Lolly каже, що атрибуція включена, лише після того, як зчитувач знайшов її у доставленому файлі.
Де ви зустрічаєте це вперше
Набори емодзі - це щоденний випадок. Twemoji має ліцензію CC BY 4.0, тож заголовок з емодзі в ньому експортується з уже зазначеною атрибуцією зображення, і вам не лишається нічого робити. Обидва набори OpenMoji мають ліцензію CC BY-SA 4.0, тож перефарбування одного з їхніх гліфів у брендовій обробці є адаптацією, і поширення цієї адаптації просить вас один раз обрати сумісну ліцензію. Вибір набору ніколи не блокується, і елемент керування набором називає ліцензію там, де ви його обираєте. Ті самі правила діють для ілюстрації з каталогу, LUT, шрифту та будь-якої іншої записаної роботи.
Слова, які використовує Lolly
Єдиний словник для панелі експорту, Verify, командного рядка й машинного результату.
| Що ви бачите | Що це означає |
|---|---|
| Атрибуція джерел буде включена. | Атрибуція підготовлена, і шлях доставки може її нести. Ще нічого не записано, тож це не повідомлення про успіх. |
| Атрибуцію включено в метадані цього файлу. | Доставлені байти зчитано повторно, облікові дані перевірено, і кожне потрібне джерело в них знайдено. |
| Атрибуція та облікові дані є в пакеті завантаження. | Атрибуція подорожує як супровідний файл поряд з артефактом. Тримайте їх разом, коли передаєте далі. |
| Додайте цю атрибуцію до опису публікації. | Обраний шлях доставки не несе ні облікових даних, ні читабельної атрибуції, тож вставити текст атрибуції - ваша справа. |
| Якщо ви поширюєте цю адаптацію, їй потрібна сумісна ліцензія. | Джерело 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 | Та сама атрибуція. Крім того, якщо ви поширюєте адаптацію, вона виходить під сумісною ліцензією: 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 про атрибуцію |
| 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 про документи |
Записано, не інтерпретовано
CC BY-NC, CC BY-ND та комбінації NC-SA і NC-ND розпізнаються, їхні умови перелічуються, але жодне правило тут їх не читає. Вони повідомляють licence.unknown з рядком, що називає умови. Комерційний контекст не можна визначити за ціною чи обліковим записом, і кожен комбінований текст потребує власного перегляду, перш ніж якесь правило до нього торкнеться.
Ще три чесні відповіді, жодна з яких не є дозволом:
- Ідентифікатор
LicenseRef-повертається таким, яким є. Він вказує на збережене визначення і ніколи не є пропрієтарним за написанням. - Декларація, яку ніщо не розпізнає, повертається неопрацьованою, з оригінальним текстом, збереженим поруч.
A OR B- це вибір, запропонований правовласником, тож повертається кожна альтернатива, і жодна не обирається.A AND Bє кумулятивним, і ці правила фіксують це, замість того щоб читати два профілі разом.
Відсутня інформація про ліцензію ніколи не сприймається як доказ того, що роботу вільно передавати далі.
Що Lolly робить для вас
- У каталозі. Сторінка роботи показує її джерело й автора, канонічну назву ліцензії зі збереженою під нею оригінальною позначкою, атрибуцію, яку можна скопіювати, якщо її записано, і один рядок, що каже, чого вимагає її використання. Плитка констатує вимогу; вона ніколи не стверджує, що експорт завершено.
- На панелі експорту. Картка Атрибуція джерел з'являється, щойно рендер використовує записану роботу. Вона показує стан, текст атрибуції за Деталями, кнопку копіювання атрибуції та вбудовану картку, коли потрібне рішення. Рішення ніколи не є блокувальним діалогом: завантаження, у якого лишилася дія, продовжується, а приватна робота лишається придатною для використання.
- У файлі. Експорт, що розмістив записану роботу, записує один складник джерела Content Credentials на кожну окрему роботу, прив'язаний до оригінальних байтів за їхньою публічною адресою і несе автора, ліцензію та посилання на неї, джерело, версію та зміни. Lolly підписує те, що спостерегла. Вона ніколи не підписує твердження від імені первісного автора, і Verify каже, яке з двох сталося.
- Після запису. Доставлені байти зчитуються повторно, перш ніж щось скаже, що атрибуцію включено. Облікові дані, що не пройшли перевірку, не рахуються як доставлена атрибуція.
- У редагованому файлі
.lolly. Байти подорожують лише тоді, коли перевірена ліцензія фіксує дозвіл передати джерело далі, аCREDITS.txtпакета перелічує, що подорожувало, за якою ліцензією і що було затримано із зазначенням причини. Незаписана ліцензія затримується. Ви все ще можете свідомо включити затриманий вміст, і файл атрибуцій зафіксує, що це був ваш вибір. - У Verify. Панель Джерела перелічує кожне джерело, яке записує файл, разом з обчисленим підсумком, атрибуцією, кнопкою копіювання атрибуції, посиланням на відкриття джерела, яке відкривається лише на запит, і заявленими межами того, що було перевірено. Питання про перевірку для цього використання ставиться лише тоді, коли ви обираєте використання, і для відповіді на нього нічого не завантажується.
- Коли ви видаляєте метадані. Очищення повідомляє, скільки атрибуцій джерел файл більше не несе, пропонує текст атрибуції та пропонує чистий файл з атрибуціями поруч. Очищені байти ніколи не проставляються повторно.
Що лишається вашим
- Ваш вибір ліцензії - ваш. Заявлення прав на файл розділяє три стани, які раніше були одним: жодної публічної ліцензії не заявлено, явне повідомлення про всі права застережено та фактичне надання публічної ліцензії. Lolly пише рядок про права лише для двох останніх, і ніколи - з вашого профілю.
- Вашу роботу не перевидають ліцензію за вас. Умови джерела та ваша власна декларація результату - це окремі записи. Умова ShareAlike застосовується до адаптації, яку вона регулює, а не автоматично до всього іншого, що ви зробили.
- Приватна робота лишається придатною для використання. Умови, що застосовуються під час поширення, підіймаються, коли поширення розглядається. Ніщо тут не перетворюється на заборону імпорту, і жодна анкета про ліцензування не стоїть між вами та вашими власними файлами.
- Рішення запам'ятовується щодо власних фактів. Кожен зафіксований вами вибір позначається відбитком робіт, використань, шляху й аудиторії, щодо яких його зроблено. Змініть набір, обробку, формат чи аудиторію - і питання буде поставлено знову. Немає загального перемикача "ігнорувати ліцензії", бо закриття попередження кліком не може доставити атрибуцію чи надати дозвіл.
- Ваші дані лишаються окремо від атрибуції третьої сторони. Видалення ваших власних персональних метаданих не видаляє автора, якому надано атрибуцію, а обов'язкова атрибуція ніколи не є приводом для експорту ваших контактних даних.
У командному рядку
Рендер виводить блок 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, що означає "повторити на іншому раннері", адже рішення щодо ліцензії чекатиме на кожному наявному раннері.
--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 не інтерпретуються. Їхні умови записуються й повідомляються як невідомі.
- Жоден пункт призначення не підтверджується. Lolly готує підпис; те, що конектор прийняв запит, не є доказом того, що атрибуція дійшла до читача, і ніщо тут не обіцяє, що подальше завантаження, знімок екрана чи перекодування збереже приховані метадані.
- Поля атрибуції в нативних метаданих не записуються з плану. Атрибуція подорожує в Content Credentials та в читабельному тексті. Поля атрибуції IPTC та XMP для кожного джерела ще не заповнюються з плану атрибуції.
- Виправлення та відкликання не реалізовано. Додавання відсутнього автора чи локального виправлення до записаної роботи, а також відкликання запису не мають інтерфейсу.
- Підключені провайдери не реалізовано. Придбаний стоковий контент, індивідуальний дозвіл та обліковий запис провайдера не мають шляху імпорту, тож їхні права можна записати лише як вашу власну заяву.
- Політика організації не поєднується з цими результатами. Політика експорту та умови ліцензії сьогодні окремі, і схвалення організації не є дозволом від правовласника.
- Кілька шляхів доставки ще не на цьому шляху. Завантаження оригіналу з каталогу, масовий ZIP, похідне завантаження, Send і Copy image ще не оцінюють і не несуть цю атрибуцію.