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 inEN-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 indata/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.0 — LICENSE.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/anddata/images/openmoji/— developer-local, gitignored (data/images/entry), consistent with thedata/paradigm (source datasets never ship in git; re-download via the pinned commands above). The committed artifacts are the mapping TSVs atdata/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.pycopies 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 uploadspublic/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_POLICYconstant inpackages/data/src/phonolex_data/runtime/images.py(exact + joined unconditionally, review-keeprows for mulberryhead/ openmojitoken_tag, plusroot_inheritedrows derived from shipped tiers). Re-runcollect_shipped_images.pyafter 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.