This is my preference for the idea. Having a field name be a tid feels like a powerful way to make connections. I use the ability for any tid to tag any other tid as a way to organically grow structure, and feel the same would be true for fields. I dont really see tids that are tag names as “tag tids” they are just tids. Similarly, I wouldn’t expect I’d see “field tids” as, well, “field tids”, they’d just be tids. From what you’ve written, I’d just expect them to be tids with a few optional extra fields that control how the equivalent field works, but none of them required (eg: field-type:
which might have “list” (as the “type” field has now), or “color” (as the “color” field has now), each resulting in a change of the field entry UI to suit, but without a field-type the default would be “short text”). But the same name being used as a normal tid is also possible, and therein lies the potential for organic and emergenct structure.
That’s not to say there isn’t a place for a $:/fields/
style namespace, but I would assume from the style of name, that it’d ne roughly analagous to the $:/tags/
namespace - in that it holds the system ones. But it’s an imperfect analogy since field names as shown/saved don’t have this prefix. (but maybe they could have a field caption
field or something to hold the name as displayed?)
Relevant (I hope) tangent: I know the tid format was modeled after HTTP headers, and they were explicitly modeled after RFC822 - the text message format which has evolved since (RFC5322) mainly on the demands of email, and that evolution originally had a mechanism to ensure official headers were separate from user-defined ones (by promising no official header would begin X-
), but later updates didn’t even mention it - the distinction between “official” and “user-defined” became irrelevant. I mention all this because in a way, I feel it’s relevant to here too - a tid can be as small as title: x
…and other fields are optional. This is part of why I feel the distinction between system and user-defined doesn’t need to be super struct.
The rfc822 message format also evolved into handling the other thing I read in that issue 5805 thread - handling multiple multi-line data. Email solved it by mime attachment, which in the vast majority of cases is just a simple attachment, but at it’s core effectively defines a mechanism by which a full nested tree of attachments can exist (including other full messages). So on the one hand, the problem has been solved, but it’s been solved in a way that is effectively the issue that Jeremy raised, in that it turns one field into a full sub-tid!
(final note: I’m not suggesting tid format follow rfc5322 format - it’s already diverged in a few keys way, though the continued similarity it has made it convenient for the tid->Maildir proof of concept script I’ve drafted up to give me IMAP read-only access to the raw content!)