Skip to content

docs(licensing): record the provenance of every bundled image in PROVENANCE.yaml - #9017

Open
CaroFernando wants to merge 1 commit into
apache:mainfrom
CaroFernando:feat/image-provenance
Open

CaroFernando wants to merge 1 commit into
apache:mainfrom
CaroFernando:feat/image-provenance

Conversation

@CaroFernando

@CaroFernando CaroFernando commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

What changes were proposed in this PR?

Binary files can't carry a license header, so nothing in the repository records where its images and media files came from (see #8800). This PR adds PROVENANCE.yaml at the repository root, with one entry for each of the 236 image and media files tracked in git:

  • path
  • origin: project-made, third-party or unknown
  • source and license, for third-party files
  • notes: the evidence for the entry, or what still has to happen

Entries were filled from:

  • the commit that wrote each file's current content. This matters because several icons were replaced after they were first added, for example the UDF icons in chore(frontend): refresh UDF operator icons #5686;
  • embedded metadata (exiftool);
  • the description and comments of the PR that added each file;
  • a visual review.

Summary:

Origin Files
project-made 31
third-party 15 (8 already in LICENSE; 7 need follow-up, listed in #8984)
unknown 190 (13 are the vendor logos replaced by #8999)

The unknown entries are the remaining audit work for #8984. If the release goes the DISCLAIMER-WIP route agreed in #8800, they are the list the disclaimer can point to. The format follows the manifest proposed in #8985, so that issue's CI check can read this file.

This PR only records provenance. It does not replace any image or edit LICENSE; that follow-up work is tracked in #8984.

Any related issues, documentation, discussions?

Part of #8984. Related: #8800, #8985, #8982 / #8999. Audit status and plan: #8984 (comment)

Interaction with #8999: the 13 vendor-logo entries are currently unknown and noted as being replaced under #8982. If #8999 merges first, I'll regenerate those entries here as project-made; if this PR merges first, #8999 (or a small follow-up) should update them.

How was this PR tested?

Documentation-only change, no code. Checks run:

# every tracked image/media file has exactly one entry, and the file parses
python3 -c "import yaml,subprocess; d=yaml.safe_load(open('PROVENANCE.yaml'))['files']; \
  t={p for p in subprocess.check_output(['git','ls-files']).decode().split() \
     if p.lower().endswith(('.png','.jpg','.jpeg','.gif','.ico','.svg','.webp','.bmp','.mp4','.wav','.mp3','.webm','.ogg'))}; \
  m={f['path'] for f in d}; print(len(d), t==m, len(m)==len(d))"
# license header check, same as check-header.yml
license-eye -c .licenserc.yaml header check

Output: 236 True True, and invalid: 0 from the header check.

Was this PR authored or co-authored using generative AI tooling?

Generated-by: Claude Code (claude-opus-5-5)

@github-actions

Copy link
Copy Markdown
Contributor

Automated Reviewer Suggestions

Based on the git blame history of the changed files, we recommend the following reviewers:

  • No candidates found from git blame history.

…ENANCE.yaml

Binary files cannot carry a license header, so nothing recorded where the
236 images and media files in the repository came from. Add a manifest at
the repository root with one entry per file: its origin (project-made,
third-party or unknown), and for third-party files the source and licence.

Entries were filled from git history (the commit that wrote each file's
current content), embedded metadata, the PRs that added the files, and a
visual review:
- project-made: Texera logos, UI screenshots and tutorial recordings, the
  UDF icons redrawn in apache#5686, and the sample media / comment icon that
  their PRs describe as original
- third-party: files already listed in LICENSE, plus the Apache Arrow,
  AsterixDB and Hadoop logos, the Angular CLI favicon, a Noun Project icon
  (TypeCasting.png), and a Freepik icon (DumbbellPlot.png) and an Adobe
  Stock icon (SankeyDiagram.png) that must be replaced
- unknown: everything else, with the evidence found so far

Part of apache#8984.
@CaroFernando
CaroFernando force-pushed the feat/image-provenance branch from 778d526 to 0b5c61a Compare October 23, 2026 16:16
@CaroFernando
CaroFernando marked this pull request as ready for review October 23, 2026 16:16
@CaroFernando

Copy link
Copy Markdown
Contributor Author

/request-review @mengw15 @parshimers

@mengw15
mengw15 requested a balanced review from Copilot October 23, 2026 17:44

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warning

Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.

Copilot review overview

3 open issues
What changed in this PR

Adds a repository-wide provenance manifest for all bundled image/media assets so their source and licensing information is recorded outside of binary files (per #8800 / #8984), in a format intended to be machine-checked (per #8985).

Changes:

  • Introduces PROVENANCE.yaml with an entry for each tracked image/media file (236 total).
  • Records origin, and where applicable, source, license, and evidence/next steps in notes.
  • Includes guidance comments for maintaining the manifest going forward.
File Description
PROVENANCE.yaml New provenance manifest covering all tracked image/media assets, including origin classification and licensing metadata.

Review effort: Lite

Comment thread PROVENANCE.yaml
Comment on lines +36 to +42
files:
- path: docs/system-screenshot.png
origin: project-made
notes: "Screenshot of the Texera workflow editor."
- path: frontend/src/assets/Tutor_End_Sample.gif
origin: project-made
notes: "Screen recording of the Texera UI for the tutorial."
Comment thread PROVENANCE.yaml
Comment on lines +696 to +697
license: "unknown; Noun Project icons are usually CC-BY-3.0"
notes: "Author and licence still to be confirmed; not yet listed in LICENSE."
Comment thread PROVENANCE.yaml
- path: frontend/src/assets/Tutor_Intro_Drag_Result.gif
origin: project-made
notes: "Screen recording of the Texera UI for the tutorial."
- path: frontend/src/assets/Tutor_Intro_Drag_Srouce.gif
@mengw15

mengw15 commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Thanks for putting this together! I'm wondering whether we should keep PROVENANCE.yaml as a permanent file. I haven't seen this approach in other Apache projects, where third-party assets are typically documented in LICENSE.

@parshimers, is this an acceptable or standard practice for ASF releases, or should we use this file only for auditing and keep the final attribution in LICENSE?

@parshimers

Copy link
Copy Markdown
Member

I think we should just have it for this process. LICENSE/NOTICE is the final product. However as a tool I really like it.

@CaroFernando

Copy link
Copy Markdown
Contributor Author

Makes sense, thanks both. I'll treat PROVENANCE.yaml as the audit's working list rather than a permanent file: keep it on my fork (linked from #8984) and update it as replacements land, while the actual attribution goes into LICENSE / LICENSE-binary. I'll leave this PR open until the question below is settled, then close it.

One follow-up: #8985 proposes a permanent manifest plus a CI check. If we're not keeping the manifest, should #8985 instead check that every image is either listed in LICENSE or added by a PR that states it is project-made, or should it be dropped?

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants