What an interesting read this has been. Quite the rollercoaster here!
What I would like to add is the following. A file extension is basically metadata itself. You don’t always need it to identify the function of a file (take a look at magic numbers), and there are probably also cases where you don’t really care about the function of the file and can simply leave out an extension. But in many cases it helps greatly in identification and avoids the need for advanced heuristics to determine file type and, for example, figuring out how the OS should handle opening the file.
I believe that because of this, file extensions are pretty much ubiquitous in modern OSes as an integral part of the filename. It’s not without reason that we use terms like basename and extension, implying they are both part of a whole.
So, what happens when you want to describe metadata related to a uniquely defined file? Ideally, you embed the metadata in the file. That is perfectly portable. You could store the metadata in some sort of relational database, but that is much less portable, although many DAMs allow for this solution. If neither of these work you go for a sidecar file.
Then we get to the core of the matter. If you consider a file is uniquely defined by its basename and extension, then the only sensible way I see is to go for the basename.extension.metadataextension. The metadata extension uniquely identifies that file as a metadata-type-file pertaining to a particular, unique other file of a certain type.
If you do not consider a file to be uniquely defined by its basename, then of course, the sensible way is to go for basename.metadataextension. Personally, I really dislike this point of view… and the fact that this seems to be a standard concerns me.
Things get more complicated when you consider metadata related to a group of files, or metadata not for files but some abstract idea of content (e.g. JPEG,NEF,DNG,TIF that all contain the same image). I honestly believe that filesystems are not the correct solution to store metadata like that, because filesystems are not designed for one-to-many relations [citation needed]. That makes any filesystem based solution to this problem inherently flawed imo.
Just my two cents…