Skip to content

Add XMP-novelty namespace for Novelty Theory metadata - #422

Closed
lazniak wants to merge 1 commit into
exiftool:masterfrom
lazniak:add-xmp-novelty-namespace
Closed

Add XMP-novelty namespace for Novelty Theory metadata#422
lazniak wants to merge 1 commit into
exiftool:masterfrom
lazniak:add-xmp-novelty-namespace

Conversation

@lazniak

@lazniak lazniak commented May 25, 2026

Copy link
Copy Markdown

Summary

Adds the XMP-novelty namespace, registered at http://hexart.pl/novelty/1.0/, for documenting timestamped media (video, photo, audio) with metadata in the context of Terence McKenna's Novelty Theory framework (see The Invisible Landscape, 1975).

Changes

File What
lib/Image/ExifTool/XMP.pm novelty URI in %nsURI, novelty sub-directory in %Main
lib/Image/ExifTool/XMP2.pl %Image::ExifTool::XMP::novelty table with 18 tags
lib/Image/ExifTool/TagLookup.pm regenerated via build_tag_lookup -p
lib/Image/ExifTool/TagNames.pod regenerated
html/TagNames/XMP.html, index.html regenerated

Tags

18 tags, following existing XMP2.pl conventions (%xmpTableDefaults, GROUPS => { 0 => 'XMP', 1 => 'XMP-novelty', 2 => 'Other' }, NAMESPACE):

NoveltyIndex        (real)    Timewave novelty coordinate (0..1)
TimewavePosition    (string)  Position relative to T-zero
Concrescence        (string)  Concrescence phase notation
EschatonCoordinates (string)  Timestamp + observed condition
StrangeAttractor    (string)  Attractor state
HabitNoveltyRatio   (string)  Habit / Novelty ratio annotation
WaveformType        (string)  Waveform reference (e.g. King Wen)
Protocol            (string)  Documentation protocol reference
Operator            (string)  Documenting party
Intent              (string)  Documentation intent
Witness             (string)  Witness / observer
CosmicSign          (string)  Astronomical alignment
Frequency           (string)  Reference frequency
SacredGeometry      (string)  Geometric framework
Dimension           (string)  Dimensional framing
Lineage             (string)  Conceptual lineage
Mantra              (string)  Mantra
Seal                (string)  Unicode signature glyph    [Avoid => 1]

Seal carries Avoid => 1 so the existing XMP-seal:Seal tag wins ambiguous lookups; explicit -XMP-novelty:Seal=... continues to work, and the BuildTagLookup duplicate-tag warning is suppressed.

Use case

The namespace is in active use as part of an archival/artistic project at Hexart, annotating a corpus of timestamped media between 2012-12-21 and 2037-05-24 in relation to McKenna's published timewave dates. The URI is served at http://hexart.pl/novelty/1.0/.

Today the namespace is consumed via a local .ExifTool_config registration. Inclusion in the official tree would make the namespace recognized by default in exiftool, removing the need to distribute the config file alongside the media corpus.

On scope

I'm aware ExifTool's curation tends toward namespaces with broad or standardized adoption. This is a project-published namespace, not a registered standard, so I understand if you'd rather not merge it — the PR can remain as a public reference, and the namespace will continue to function via .ExifTool_config. Either outcome is genuinely helpful.

Verification

$ ./exiftool -overwrite_original -XMP-novelty:NoveltyIndex=0.998 \
  -XMP-novelty:EschatonCoordinates='2037-05-24 22:49:26 UTC' \
  -XMP-novelty:Operator='Paul Łazniak (Hexart)' \
  test.jpg
    1 image files updated

$ ./exiftool -G1 -a -s test.jpg | grep XMP-novelty
[XMP-novelty]   EschatonCoordinates : 2037-05-24 22:49:26 UTC
[XMP-novelty]   NoveltyIndex        : 0.998
[XMP-novelty]   Operator            : Paul Łazniak (Hexart)

Thank you for the work you do on ExifTool — it's the foundation tool for serious metadata work, and the inclusion of niche namespaces alongside the standardized ones is one of the things that makes it that.

— Paul Łazniak / Hexart

Adds the XMP-novelty namespace (http://hexart.pl/novelty/1.0/) for
annotating timestamped media (video, photo, audio) in the context of
Terence McKenna's Novelty Theory framework.  18 string/real tags,
following existing XMP namespace conventions in lib/Image/ExifTool/XMP*.

Used by archival projects that document media against the McKenna
timewave; published and maintained at the namespace URI.

The Seal tag uses Avoid=>1 to defer to XMP-seal:Seal on ambiguous lookup.

Operator: Paul Łazniak / Hexart
@boardhead

Copy link
Copy Markdown
Contributor

I'm impressed that you went to the trouble to change all of the documentation files as well. Just curious if you used the BuildTagLookup module to do this or if you did it by hand.

Unless I get a number of requests I don't like to add new namespaces to the built-in XMP support, but I'm not against adding a novelty config file to the standard distribution in the config_files folder, if you wanted to submit that instead.

  • Phil

@boardhead

Copy link
Copy Markdown
Contributor

I've just released version 13.59 with this in the config_files: https://github.com/exiftool/exiftool/blob/master/config_files/novelty.config

@boardhead boardhead closed this May 27, 2026
@lazniak

lazniak commented May 27, 2026

Copy link
Copy Markdown
Author

Phil,

This is more than I expected, and exactly the right shape. A dedicated, named artifact in config_files/ is a cleaner home for this namespace than XMP core would have been — and you assembling it and shipping it in 13.59 instead of waiting for another PR is generous beyond your stated policy. I won't forget that.

To answer your earlier question: yes, build_tag_lookup -p. I wanted to hand you something that didn't make work for you.

Some context, since the namespace is now in your distribution. McKenna's thinking has been pulling at me lately — not as theory but as method. It changes how you listen to a recording, how you timestamp an archive, which moments you decide deserve a mark. The novelty namespace started as a private convention for one media corpus and grew until it needed a proper name.

That work has crystallized into a piece called psy, live now at https://psy.pablogfx.com/ — an interactive performative work built around McKenna's Final Interview (1998, two years before he died). Twelve movements, his voice and cadence preserved, with a generative film underneath where for each word a fragment of the world rises to meet it. Less a video than a way of listening. A tribute to a thinker who, in my reading, deserves a more careful hearing than he tends to get.

ExifTool is the spine that keeps that corpus coherent across years and devices. Having novelty.config in the official distribution genuinely matters — both functionally, and as a quiet acknowledgment.

Thank you for the openness, and for the work.

— Paul

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants