A while back, I wrote about wanting an approximate date data structure, and the ability to attach level-of-uncertainty info to any given piece of data, and the ability to specify the source of any piece of information.
And a couple weeks ago, I wrote about being able to apply labels to social contacts in a folksonomy kind of way.
It recently occurred to me that those are all part of a bigger thing:
I want all data to come with metadata.
I know that in many contexts, a given database record can have metadata attached--for example, a lot of systems (including calendar and address book systems) have a "notes" field for each record. But I want metadata for each field in each record.
And I want this to be a standard part of all systems that store information.
Let's call it the Total Metadata Initiative.
Here's the situation that gave me the idea:
I had two phone numbers for a friend in my address book. One number was the newly preferred one; she was phasing out use of the other one. For some reason, though, I had left them both in my address book. The phone-number field in Apple's Address Book application is flexible; it can contain letters and punctuation and spaces as well as numbers. So in the phone-number field for the main number, after the number itself, I had typed a space and then "(preferred)"; in the phone-number field for the other number, after the number itself, I had typed a space and then "(deprecated)".
The iPhone, though, has less flexible phone-number fields. When I synced with the iPhone, it deleted the space and the parens, so the numbers appeared on the iPhone something like this: (408)-555-1212preferred.
And when I tried to dial that number, the iPhone cleverly turned all the letters into numbers and dialed them. It was also clever in various other ways, the end result of which was that I couldn't leave a message for my friend as long as that "preferred" text was part of the phone number.
So I realized that rather than the makeshift workaround I had tried (editing the phone number field itself), what I really wanted was the ability to attach a note or label to the phone number. (A note would be better than a simple label--I'd like to be able to add a comment saying, for example, "This phone number is only valid until September 5, 2009, and only between the hours of 5 and 9 p.m. on weekdays.")
I could, of course, add several sentences' worth of notes (maybe one sentence for each phone number) as a single big note in the Notes field of the person's address-book entry. ("[Number x] is deprecated. [Number y] is now preferred, as of [date].") But that's inelegant--it removes the direct connection between each number and its corresponding note.
So at the very least, I'd like there to be a single freeform "Notes" field attached to each field of each record. (So each phone number, for example, would have its own (optional) Notes field.) But really, why not go further? Allow people to optionally attach a full set of arbitrary metadata to every field. Sometimes it might be structured and machine-usable metadata (like the approximate-date, level-of-uncertainty, and source info I mentioned above); sometimes it might be freeform, like a note or a label. It might also be useful to attach links to fields--for example, Apple's Address Book app is not very good at dealing with the extremely common situation where two or more people share a phone number and/or an address. You can either put them both in one record (which means you need labels or notes to indicate which one of them a given cell-phone number belongs to), or you can give them their own separate records (which means the app isn't aware that there's any connection between them). (The app does have a great feature that lets you specify the names of people connected to a given person--you can specify spouse's name, child's name, etc--but those names aren't linked to their own records.) It might be nice to allow the user to add a "shared-by" link between person A's home phone and person B's home phone. (It might also be nice to have the app automatically notice duplication and create those links, but that's a different feature area than what I'm talking about in this entry.)
Also, of course, it's still important to be able to add metadata to the entire record, not just a single field; I want to have a Notes field that applies to the whole record as well as one for each field in the record.
When I told her about all this, the friend whose phone number had been at issue said something like, "And you could have meta-metadata for every metadata field, too!" I said that was crazy talk. But yes, you could indeed extend the TMI to apply recursively to metadata fields.
I also have vague wild-eyed ideas about connecting the TMI to another system I've been thinking about, in which anything can be labeled as a to-do item. But that's another topic for another day.
Btw, I don't claim that anything in this entry is entirely original; for example, I suspect that a fair bit of it was prefigured by features of Ted Nelson's Project Xanadu. It's been a while since I read about Xanadu in any detail, and I haven't gone back and checked.