Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
П13. FOSSology как юридический workflow
Зачем эта практика ScanCode и ORT автоматизируют находку, но финальное лицензионное решение — это работа человека с фиксацией ответственности. FOSSology — это сервер для clearing workflow: загрузка артефакта → прогон агентов-сканеров (
nomos,monk,ojo,copyright) → ручной review reviewer-ом → утверждённое заключение (concluded license) с автором и историей. Именно здесь «detected» из П11 превращается в «concluded» с подписью и аудиторским следом, а не остаётся машинной строкой.
Цель
Развернуть FOSSology, загрузить артефакт, запустить агенты лицензионного анализа, провести хотя бы один файл через ручной clearing (расхождение detected/concluded) и выгрузить отчёт (SPDX или ReadMe_OSS), в котором зафиксированы concluded-лицензии и кто их утвердил. Проверяемый результат — выгруженный clearing-отчёт с историей решения.
Команда или действие
# Поднять сервер одной командой (web UI на http://localhost:8081/repo)
docker run -d --name fossology -p 8081:80 fossology/fossology
# логин по умолчанию: fossy / fossy
# Дальше через web UI:
# Upload → From File / From URL (артефакт: tarball исходников)
# при загрузке отметить агенты: nomos, monk, ojo, copyright
# Jobs → дождаться завершения scheduler
# Browse → пакет → License → ручной review (Bulk/Concluded)
# Exports → SPDX2 / ReadMe_OSS / DEP5
Если нужна автоматизация через REST API (генерация токена в web UI → Admin → API tokens):
TOKEN="<bearer-token>"
BASE="http://localhost:8081/repo/api/v1"
# загрузить артефакт в папку folderId=1
curl -s -X POST "$BASE/uploads" \
-H "Authorization: Bearer $TOKEN" \
-H "folderId: 1" \
-F "fileInput=@somelib-2.4.1.tar.gz"
# запустить агенты для upload (uploadId из ответа выше)
curl -s -X POST "$BASE/jobs" \
-H "Authorization: Bearer $TOKEN" \
-H "folderId: 1" -H "uploadId: 3" -H "Content-Type: application/json" \
-d '{"analysis":{"nomos":true,"monk":true,"ojo":true,"copyright":true},
"decider":{"nomos_monk":true}}'
nomos и monk ловят разное — поэтому запускают оба
nomosраспознаёт лицензии по регулярным сигнатурам (широко, но шумно),monk— по точному совпадению с эталонными текстами из БД (узко, но уверенно),ojoвытягивает SPDX-тегиSPDX-License-Identifier. Расхождение их вердиктов на одном файле — это и есть кандидат на ручной review: где агенты согласны, человек тратит время зря; где спорят — там настоящая работа clearing-а.
Что вы должны увидеть
После завершения Jobs в Browse у пакета появляется сводка лицензий с разбивкой по агентам. Концептуально:
File: parser.c
nomos: GPL-2.0-only (signature match)
monk: GPL-2.0-only 98% (reference text)
concluded: GPL-2.0-only ← внесён reviewer-ом вручную, с датой и логином
Фрагмент SPDX-экспорта (виден concluded vs declared):
FileName: ./parser.c
LicenseConcluded: GPL-2.0-only
LicenseInfoInFile: GPL-2.0-only
LicenseComments: Concluded by reviewer 'auditor' on 2026-06-17, clearing OK.
Ориентир: на одном среднем пакете агенты дают десятки file-level находок; для зачёта достаточно довести до concluded хотя бы один файл, где видно различие «что нашла машина» и «что утвердил человек». Главное — в отчёте присутствует поле LicenseConcluded и комментарий о том, кто и когда вынес решение (audit trail), а не только LicenseInfoInFile.
Если не получилось
Типичные ошибки - Контейнер стартовал, но web UI не открывается — FOSSology инициализирует БД при первом запуске, это занимает минуту-две. Смотрите
docker logs -f fossologyдо строки готовности scheduler; не ломитесь в UI сразу. - Jobs висят вScheduledи не стартуют — не поднялсяfo-schedulerвнутри контейнера. В all-in-one образе он встроен; при ручной установке проверяйтеsystemctl status fossology. Перезапуск контейнера обычно лечит. - Все лицензии осталисьNo license found— загрузили бинарники/архив без исходных текстов либо забыли отметить агенты при upload. Перезапустите job сnomos+monkпо тому же upload через Jobs → Agents. - REST401 Unauthorized— токен просрочен или скопирован с лишними пробелами. Токены в FOSSology короткоживущие; сгенерируйте заново в Admin → API tokens и подставьте без переносов строк.
Критерий зачёта
Показать преподавателю: (1) экспорт (SPDX2 / ReadMe_OSS) с заполненным LicenseConcluded; (2) хотя бы один файл, где detected-вердикты агентов разошлись и вы вынесли concluded руками; (3) объяснение, чем clearing-решение в FOSSology отличается от машинной находки ScanCode (наличие автора, даты, истории — audit trail). Просто «загрузил и прогнал агенты» без ручного review не засчитывается: суть практики — юридический workflow с ответственным.
Нормативная связка
- Модуль: М07 Лицензионная чистота и юридический workflow
- Смежные практики: П11. ScanCode для лицензий · П12. ORT и license policy · П26. Лицензионная классификация · П27. Юридическое заключение и реестр лицензий
- Нормативка: SPDX ISO/IEC 5962 · OpenChain ISO/IEC 5230
- Шаблоны: Шаблон юридического заключения по лицензии · Журналирование и audit trail
- Инструмент: FOSSology