Skip to content

Commit 3d1163b

Browse files
committed
Add OpenMeta structure overview to docs
Introduce an "OpenMeta Structure" section to developer docs (docs/development.md and docs/sphinx/development.rst). The new content defines the public architecture as a compact set of user-facing capabilities (Decoding, Interpretation, Query/Search, Creation, Editing, Transfer, Translation, Writing, Adapters, Utilities) and clarifies that search results should expose source entries, confidence, value shape, and normalized interpretations rather than collapsing ambiguous values.
1 parent 6379d83 commit 3d1163b

2 files changed

Lines changed: 77 additions & 0 deletions

File tree

docs/development.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,32 @@ If you are looking for the shortest practical entry path, start with
77
If you already have a host encoder, SDK, or container API, use
88
`docs/host_integration.md` after the quick start.
99

10+
## OpenMeta Structure
11+
12+
OpenMeta's public architecture is organized around a small set of user-facing
13+
capabilities. Internally some of these split into more stages, but the public
14+
model should stay compact:
15+
16+
| Area | Purpose |
17+
| --- | --- |
18+
| Decoding | Find metadata carriers and decode EXIF, XMP, IPTC, ICC, Photoshop IRB, JUMBF/C2PA, EXR, and related blocks into `MetaStore` entries. |
19+
| Interpretation | Normalize names and values, group entries by meaning, and classify source-bound data such as RAW crop, color, lens-correction, sensor, and vendor-private fields. |
20+
| Query / Search | Find entries by name, fuzzy term, or semantic group, for example crop/border/active-area fields or exposure/gain fields across standard and vendor metadata. |
21+
| Creation | Build fresh metadata entries from host-provided values. |
22+
| Editing | Modify existing logical metadata entries while preserving valid surrounding structure. |
23+
| Transfer | Move metadata between files using explicit compatible-file or rendered-image safety policies. |
24+
| Translation | Project metadata between families, mainly bounded EXIF/IPTC/XMP portable mappings. |
25+
| Writing | Serialize metadata and write or rewrite it into target containers. |
26+
| Adapters | Thin integration layers for host APIs or format-specific ecosystems such as EXR, DNG SDK, LibRaw orientation mapping, and flat host exports. |
27+
| Utilities | Small standalone helpers such as capability queries, compatibility dumps, safety audits, tag-name lookup, and orientation conversion. |
28+
29+
Search/query results should expose both inspection-level matches and
30+
interpreted candidates. A crop query, for example, may match separate
31+
`DefaultCropOrigin` and `DefaultCropSize` tags, an `ActiveArea` rectangle,
32+
vendor margin fields, or a raw integer array. OpenMeta should return the
33+
source entries, confidence, value shape, and any normalized interpretation
34+
rather than hiding ambiguity behind a single value.
35+
1036
## Build Prerequisites
1137

1238
- CMake `>= 3.20`

docs/sphinx/development.rst

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,57 @@ Repository layout (public):
99
- ``src/python/``: Python bindings and helper scripts
1010
- ``tests/``: unit tests and fuzz targets
1111

12+
OpenMeta structure
13+
------------------
14+
15+
OpenMeta's public architecture is organized around a small set of user-facing
16+
capabilities. Internally some of these split into more stages, but the public
17+
model should stay compact:
18+
19+
.. list-table::
20+
:header-rows: 1
21+
:widths: 18 82
22+
23+
* - Area
24+
- Purpose
25+
* - Decoding
26+
- Find metadata carriers and decode EXIF, XMP, IPTC, ICC, Photoshop IRB,
27+
JUMBF/C2PA, EXR, and related blocks into ``MetaStore`` entries.
28+
* - Interpretation
29+
- Normalize names and values, group entries by meaning, and classify
30+
source-bound data such as RAW crop, color, lens-correction, sensor, and
31+
vendor-private fields.
32+
* - Query / Search
33+
- Find entries by name, fuzzy term, or semantic group, for example
34+
crop/border/active-area fields or exposure/gain fields across standard
35+
and vendor metadata.
36+
* - Creation
37+
- Build fresh metadata entries from host-provided values.
38+
* - Editing
39+
- Modify existing logical metadata entries while preserving valid
40+
surrounding structure.
41+
* - Transfer
42+
- Move metadata between files using explicit compatible-file or
43+
rendered-image safety policies.
44+
* - Translation
45+
- Project metadata between families, mainly bounded EXIF/IPTC/XMP portable
46+
mappings.
47+
* - Writing
48+
- Serialize metadata and write or rewrite it into target containers.
49+
* - Adapters
50+
- Thin integration layers for host APIs or format-specific ecosystems such
51+
as EXR, DNG SDK, LibRaw orientation mapping, and flat host exports.
52+
* - Utilities
53+
- Small standalone helpers such as capability queries, compatibility
54+
dumps, safety audits, tag-name lookup, and orientation conversion.
55+
56+
Search/query results should expose both inspection-level matches and
57+
interpreted candidates. A crop query, for example, may match separate
58+
``DefaultCropOrigin`` and ``DefaultCropSize`` tags, an ``ActiveArea``
59+
rectangle, vendor margin fields, or a raw integer array. OpenMeta should return
60+
the source entries, confidence, value shape, and any normalized interpretation
61+
rather than hiding ambiguity behind a single value.
62+
1263
Read-path coverage snapshot
1364
---------------------------
1465

0 commit comments

Comments
 (0)