Skip to content

Image Sources — Licensing & Sourcing (PHON-162)

Status: phase 2a (Mulberry + OpenMoji sourcing/mapping), 2026-07-12. Pipeline/D1/UI integration lands with the v6.2 seed batch (coordinate there before emitting any seed).

Provider #1: Mulberry Symbols

  • Source: https://github.com/mulberrysymbols/mulberry-symbols
  • Pinned release: v3.5.2 (2025-09-17) — 3,436 SVGs in EN-symbols/ + symbol-info.csv (symbol name, grammar, category, tags; 1:1 with the SVG filenames — verified).
  • Download:
    mkdir -p data/images/mulberry-symbols && cd data/images/mulberry-symbols
    curl -sLO https://github.com/mulberrysymbols/mulberry-symbols/releases/download/v3.5.2/mulberry-symbols.zip
    curl -sLO https://github.com/mulberrysymbols/mulberry-symbols/releases/download/v3.5.2/symbol-info.csv
    unzip -q mulberry-symbols.zip
    

License (pinned)

LICENSE.txt shipped inside the v3.5.2 release zip (also at the repo root at tag v3.5.2), verbatim:

The Mulberry Symbol set

Copyright 2008-2017 Garry Paxton Copyright 2018-2020 Steve Lee

This work is licensed under the Creative Commons Attribution-Share Alike License.

To view a copy of this license, visit https://creativecommons.org/licenses/by-sa/4.0/

Pinned license: CC BY-SA 4.0 — the license URL in the release's own LICENSE.txt is authoritative for the artifact we redistribute.

Known discrepancy: mulberrysymbols.org (as of 2026-07-12) still suggests attribution naming the older CC BY-SA 2.0 UK: England & Wales license ("Mulberry Symbols are copyright 2018 to 2026 Steve Lee and licensed under the Creative Commons Attribution-ShareAlike 2.0 UK: England & Wales License. See https://mulberrysymbols.org for details."). The website text appears stale relative to the shipped LICENSE.txt. Our attribution names both copyright holders and links the license actually shipped with the release.

The website also states the intent behind the license: "While you may charge for your product or added value, you must not charge for the symbols themselves. They are to remain free of cost and freely available to all." Therapy Packs comply: the charge is for the pack curation/product, and the symbols remain freely available upstream.

Attribution text (render wherever symbols appear, incl. PDF exports)

Symbols © 2008–2017 Garry Paxton, © 2018–2020 Steve Lee — Mulberry Symbols, licensed under CC BY-SA 4.0.

Usage notes: - Unmodified display of the SVGs requires attribution only. If we ever modify/derive symbols, the derivatives must be released under CC BY-SA 4.0 (ShareAlike). - Keep LICENSE.txt + VERSION.txt alongside the assets wherever they are stored or served.

Provider #2: OpenMoji (phase 2a)

  • Source: https://github.com/hfg-gmuend/openmoji
  • Pinned release: 17.0.0 (2026-04-23) — 4,495 entries in data/openmoji.json (hexcode, annotation, tags, openmoji_tags, group/subgroups, skintone; hexcode is 1:1 with the SVG filenames in the color set — verified) + openmoji-svg-color.zip (4,495 color SVGs).
  • Download:
    mkdir -p data/images/openmoji && cd data/images/openmoji
    curl -sLO https://github.com/hfg-gmuend/openmoji/releases/download/17.0.0/openmoji-svg-color.zip
    curl -sL -o openmoji.json https://raw.githubusercontent.com/hfg-gmuend/openmoji/17.0.0/data/openmoji.json
    curl -sL -o LICENSE.txt https://raw.githubusercontent.com/hfg-gmuend/openmoji/17.0.0/LICENSE.txt
    unzip -q openmoji-svg-color.zip -d color-svg
    

License (pinned)

CC BY-SA 4.0LICENSE.txt at tag 17.0.0 is the full Attribution-ShareAlike 4.0 International text; openmoji.org states use "for any purpose, even commercially" with attribution. Same ShareAlike terms as Mulberry: unmodified display needs attribution only; derivatives must be released CC BY-SA 4.0. Keep LICENSE.txt alongside the assets wherever they are stored or served.

Attribution text (render wherever OpenMoji emoji appear, incl. PDF exports)

The project's suggested attribution, verbatim:

All emojis designed by OpenMoji – the open-source emoji and icon project. License: CC BY-SA 4.0

Role & pool filter

OpenMoji is the gap-filler for basic nouns Mulberry lacks (book, child, hand, person…). Mulberry wins whenever both providers cover a word — its drawings are AAC-purpose-built. The mapping only draws from a filtered pool of concrete depictables (1,343 of 4,495): skin-tone variants dropped (neutral base kept), groups restricted to people-body / animals-nature / food-drink / objects / activities / travel-places plus the concrete subgroups of the extras-* groups; flags, symbols/ dingbats (letters, arrows, shapes), smileys, components, brands, and UI elements are excluded. Details in packages/data/scripts/build_image_mapping.py.

Asset location (decision)

  • Local (full source sets): data/images/mulberry-symbols/ and data/images/openmoji/ — developer-local, gitignored (data/images/ entry), consistent with the data/ paradigm (source datasets never ship in git; re-download via the pinned commands above). The committed artifacts are the mapping TSVs at data/mappings/word_to_image.tsv + data/mappings/image_review_queue.tsv.
  • Serving (decision, phase 2b 2026-07-12): the SHIPPED subset is committed at packages/web/frontend/public/images/words/{provider}/{file} and served from the Pages deploy itself. packages/data/scripts/collect_shipped_images.py copies only the shipped-tier SVGs (~1,700 files / ~10 MB, incl. each provider's LICENSE.txt) out of the gitignored source sets. Rationale vs the earlier R2 recommendation: the shipped subset is small, stable, versioned together with the mapping TSVs, and committing it keeps CI free of any asset-fetch step (the Pages build uploads public/ as-is). The R2 note below stands as the escape hatch if the shipped set ever grows toward the full ~7,900 files: R2 would decouple asset versioning from app releases and protect the Pages 20K-file budget.
  • Ship policy: which mapping tiers count as shipped is the SHIP_POLICY constant in packages/data/src/phonolex_data/runtime/images.py (exact + joined unconditionally, review-keep rows for mulberry head / openmoji token_tag, plus root_inherited rows derived from shipped tiers). Re-run collect_shipped_images.py after any policy flip or mapping change.

Mapping

packages/data/scripts/build_image_mapping.py builds data/mappings/word_to_image.tsv (word → image_id, source, license, match_type, symbol grammar/category, preferred flag) for both providers, plus data/mappings/image_review_queue.tsv (input for the later human review pass). Schema is source-agnostic: source + license columns per row, so additional providers append rows rather than columns. Coverage numbers: see docs/commercial/2026-07-12-image-coverage-report.md.

Other providers scanned (future)

Set License Commercial Notes
~~OpenMoji~~ CC BY-SA 4.0 ✅ Yes Adopted as provider #2 (phase 2a) — see above.
Tawasol Symbols CC BY-SA 4.0 ✅ Yes Mada (Qatar) AAC set, Arabic+English; free/commercial products OK, may not charge for the symbols themselves; attribution required. Smaller set; culturally-specific coverage.
Twemoji CC BY 4.0 (graphics) ✅ Yes Generic emoji; original repo archived, maintained fork exists (jdecked/twemoji). Same niche as OpenMoji with a weaker maintenance story.
ARASAAC CC BY-NC-SA Excluded Noncommercial — cannot appear in a paid product. Do not use.
Sclera CC BY-NC 2.0 BE Excluded Noncommercial. Do not use.
Boardmaker/PCS, SymbolStix, Widgit, LessonPix Proprietary paid Competitor/licensed sets; not sourcing candidates.

Aggregators (Global Symbols, OpenSymbols) index most of the above per-set licenses — always pin the per-set license, not the aggregator's terms.