Before I joined the TC this summer, a decision was made to use the underscore symbol for relative names in XDI. From the wiki https://wiki.oasis-open.org/xdi/NamespaceArchitecture
Relative XDI Identifier
A relative XDI identifier identifies an XDI resource only relative to the context in which it appears. A relative identifier MUST NOT be used as a top-level XDI context.
For example, the XDI identifier =_foo MUST NOT be assumed to identify the same person in any of the following contexts (it may identify the same person, but that inference cannot be made from the following identifier sequences alone):
I am uncomfortable with using underscores for relative names for a number of reasons:
A. UNDERSCORES SHOULD NOT BE USED FOR FUNCTIONALITY
I do not believe that the underscore symbol is appropriate for functional use. The underline and hyphen are used extensively by most ever system (URI, usernames, etc.) as part of name space, not functional space like the @ typical is. Underlines are regularly used in names for readability, for differentiation, etc.
An argument has been made that it is only the first underline that is significant, i.e. in =_foo_bar it is only the =_ that is functional, but this would be the only character of the set =#$*@+ that are legal INSIDE of name, for instance =_foo*bar is not legal name.
B. IMPORTANCE OF RELATIVE NAMES
I believe that when we move to a possible decentralized rootless future, relative names will be much more important then they were originally thought. I envision a cryptographic XDI future where relative names may be the norm for nyms.
For instance when Drummond introduces me to the group, I am =Drummond=_ChristopherA as "ChristopherA" is the nym he knows me by. If I introduce my writing partner Shannon Appelcline, he might be =Drummond=_ChristopherA=_Shannon. If you decide to have establish a trust relationship directly with Shannon, but you already have a Shannon in your relative name space, Shannon could become "=_me=_Shannon_Appelcline".
As you can see from the examples above, the _underlines are confusing. Is Shannon's nym "_Shannon_Appelcline" or "Shannon_Appelcline"?
I don't believe that these uses were under consideration when the original character set for relative names was defined.
C. USING TILDE FOR RELATIVE NAMES
I would like to suggest using tilde ~ for relative names, and I am curious why it was not considered before.
In math, the ~ means "approximately" or "equivalent to".
Also in math, "x ~ y" means "x is equivalent to y", but is a weaker statement than stating that "x equals y."
I am approximately =~ChristopherA which is equivalent to, but not the same as who I am. That is semantically close to what I feel a relative name means.
The tilde is already used as a nym marker on the web in many places. In a unix based systems, and many unix based http servers, tilde
denotes a personal folder or website, for instance http://www.example.com/~johndoe/
Note that you can't reserve a domain name with a tilde in it, but you can reserve a domain name with an underscore.
In the above example, the longer relative name is still quite easy to read:
It is easy to see that =Drummond is a unique fixed identity, whereas =~ChristopherA and =~Shannon_Appelcline are only approximately equal to an identity — they both rely on =Drummond.
I have shared this request with Drummond and Markus, and they don't know of any other reasons why we can't change from underline to tilde.
As Drummond is working on the docs next week, is this a reasonable change request to the spec?
Any reasonable objections or concerns?