Update NIP-56 to handle more detailed content moderation and generic labeling#524
Update NIP-56 to handle more detailed content moderation and generic labeling#524staab wants to merge 1 commit intonostr-protocol:masterfrom
Conversation
41a1b7d to
554172e
Compare
|
I see you kept quality between 0 to 1, do you want to include a seperate tag like |
|
The meaning of the fields in a tag has not depended on the event kind before. Here we have an 'e' tag where the meaning of the fields is different then every other e tag in every other kind. This complicates my code lots. So I'm against unless this can be changed. |
|
That isn't new, it's how kind 1984 is already described. Line 24 in 00491aa It may be better to eschew kind 1984 for a different structure, but it's been kept this way for backwards compatability. |
|
Yes, the intention was for backwards compatibility, but I agree that the structure used in 1984 is abhorrent. I'll draft a new PR this week with a cleaner implementation. |
As I was putting this PR together, I came to the conclusion that negation isn't necessary if you think in terms of a venn diagram rather than vectors to/away from a target. In the former metaphor, a negative match makes no sense, since 0 indicates no overlap, IOW a total negation. The latter might indicate toward (+1) or away from (-1) some target or standard, but that metaphor only applies to some concepts (you might be able to justify negative quality, but not negative confidence). So my preference is now a spectrum of 0 to 1, I think it's much cleaner. Querying the tag is another question, I'll think about how that might be accomplished. |
|
Here's what I'm thinking so far; single reference, multiple labels. {
kind: ???
tags: [
["p", <pubkey>],
["t", "label"],
["t", "label2"]
]
}Any tags attached to the event besides tags in the spec like I see two ways in which Keeping Other thoughts: |
|
Closed in favor of #532 |
|
@Gruruya I don't mind any suggestions you made above, but I went a slightly different direction with the new PR. There is a trade-off between being able to apply multiple labels to a single entity vs applying a single label to multiple entities, I went with the latter in the new PR. I removed |
I'll write something, I want multiple labels for one reference as I expect to be doing a lot of mass-tagging. It seems two seperate implementations may be necessary. |
|
Ok, I can take another look. I suppose we could just support multiple labels and multiple targets, with the implication being that all labels are applied to all entities. |
Purpose
Content reporting is a type of labeling. In #459, @Gruruya proposed expanding NIP-56 to encompass labeling.
In #457, @s3x-jay and @rabble proposed a nomenclature and more comprehensive mechanism for content reporting/labeling. The consensus seems to be that a nomenclature is not a good idea, but there were some good ideas to include.
In #522 (comment) I realized that the same labeling mechanism could be used to leave reviews for relays, which I am eager to add to Coracle so people can start to find a better relay selection.
This PR may also render #46 obsolete.
Justification
Maybe this will seem like I'm trying to make a single NIP do too many things. But reviews, labels, and reports all have two things in common: they refer to an object, and are an expression of someone's opinion. In each case, there is a value judgment involved in assigning the label, involving both imprecision and uncertainty. Expressing this opinion using either a mark, or content, or both, allows either a machine or human to make a judgment call as needed.
One nice thing I'd also like to point out about this PR is if clients follow the bi-directional tagging rule, it allows for associating any two entities (e/p/r/t) in nostr, and searching those associations. This gives us the beginning of graph-database-like functionality that can form the basis for both WoT and topical moderation and recommendations.
Confidence/quality may seem like the same thing, but they're two different axes along which to measure certainty. The first is subjective (the label author may not be 100% sure), the second objective (the label may not perfectly fit). This has been suggested in a few places, but was best executed by guide.newfounding.org (unfortunately their site is no longer available).
Compatibility
This PR should be backwards-compatible "enough" with the old version of NIP-56, but if there's disagreement on it, I can re-draft as a separate NIP. I'm particularly interested here in @jb55's feedback since he wrote the original version and is probably the only person who is relying on its implementation.
The only backwards-incompatible change I had to make is that context must now be marked by a
contexttag. My sense is that theptag was originally required so that a given event could be located. I don't expect that anyone has implemented any automatic routing based on theptag, and clients that continue to include aptag will simply be reporting the pubkey in addition to the event, which seems to be acceptable semantically.Other minor changes:
etag is now optionalcontent, or if thequalityandconfidencetags are sufficient.Implementation
None of this is implemented, but my main motivation of drafting this PR is so I can add relay ratings and reviews to Coracle soon.