diff --git a/ProposalQualifiedTags.md b/ProposalQualifiedTags.md deleted file mode 100644 index bdc9b6a9..00000000 --- a/ProposalQualifiedTags.md +++ /dev/null @@ -1,80 +0,0 @@ -#NIP-?? - - -##Qualified Tags. - -`draft` `mandatory(7/1/22)` `author:unclebobmartin` - -###Abstract -In order to resolve the ambiguities that have arisen based upon the ad-hoc rules that have been used to identify replies, I propose that we add an optional qualifier to tags in general. In the case of replies these qualifiers would look like this: - -`[["e[reply]" ] ["e[root]" ]]` - -Such qualifiers ought to create the flexibility we will need as new use cases present themselves. - -###Justification -Replying to an event is a use-case that is separate from the kind of citing that the unqualified "e" tag is meant for. The attempt to use "e" tags to handle replies has led several clients to impose an ad-hoc ordering to the "e" tags. That ordering was eventually described in NIP-10. It describes these three cases: - - 1. `[["e" ]]` - 2. `[["e" ] ["e" ]]` - 3. `[["e" ] ["e" ]... ["e" ]]` - -Where: - - * `reply-id` is the id of the event being replied to. - * `root-id` is the id of the event at the root of the thread of replies. - -Unfortunately these orderings create ambiguities. - -For example, consider an event with this tag: `[["e" ]]` - -Is this event a reply to `event-id`, or is it merely mentioning `event-id`? - -To answer this question, some clients (e.g. damus) have resorted to an undocumented and ad-hoc _parsing_ rule. These clients parse the content of the event, looking for the replacement tags defined in NIP-08. (e.g. `#[n]`, where `n` is the ordinal position of the tag in the `tags` array. More on that later.) The client determimes which "e" tags hold the `` and the `` by eliminating all "e" tags that have replacement tokens in the content. The remaining "e" tags must be the `` and ``; and they are identified by their order in the tags array. - -Unfortunately, if the `` and `` are to be properly identified, this solution _forces_ the use of replacement tokens in the content. This, it seems to me is an unreasonable constraint that all clients would have to conform to. It is unreasonable because it will likely be common for the author of an event to include footnotes in "e" tags without referencing them with replacement tokens in the content. These unreferenced mentions lead to ambiguities. - -###Ambiguities - - * An event with an unreferenced footnote would use the tag `[["e" ]]`. Clients that used NIP-10, and the ad-hoc _parsing_ rule would consider this to be a reply, and would therefore thread it below an event that is merely a footnote. Users will consider this to be _odd_. - - * An event with two unreferenced footnotes would use the tags `[["e" ] ["e" ] ["e[root]" ]]` - -This eliminates the need for NIP-10, and also eliminates the need for the ad-hoc _parsing_ rule. The need for the `` is obvious. The `` is necessary because clients may not posess the event that is at the root of the thread. - -The positional ordering of NIP-08 replacement tokens could be resolved with: - -`["e[fun-event]" ]` and the content reference: `#[fun-event]`. - -###Implementation plan - -Because there are clients currently following NIP-10 and the ad-hoc _parsing_ rule, we need a way to gently transition toward the tag qualifier solution. (if adopted.) - -I propose that clients that have implemented NIP-10 (and possibly also the ad-hoc _parsing_ rule) continue to adhere to them, while ALSO adding _additional_ qualified "e" tags. Thus: - -`[["e" ] ["e" ] ["e[reply]" ] ["e[root]" ]]` - -New clients should NOT implement NIP-10 and should start using qualified tags immediately. - -I propose that we depracate NIP-10 with a cutoff date of July 1, 2022, after which NIP-10 would no longer be valid and all clients must use qualified tags for replies. - -It is my hope that the community is small enough, at this point in time, to tolerate this change without undue pain. - -