-
Notifications
You must be signed in to change notification settings - Fork 731
Contact Cards #761
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Contact Cards #761
Conversation
|
cc @Semisol |
|
Will this allow for |
|
Previous discussion regarding contact list at #349 |
correct typo
|
@alexgleason I think NIP-32 may be the best way to declare public relationship statuses. |
|
There are so many jokes here that I don't know if this proposal has any legs 😅 |
|
Most "Relationship Status" lists will have few items so NIP-51 would be enough. @vitorpamplona Please take a look at this example I just added there: Lines 53 to 87 in 8ae2b5d
|
|
So, the goal for Relationship Status is that most of us have over 10,000 contacts (not friends, not follows, just contacts). And a list with 10,000 people is quite a heavy list to be updated all the time. That was the reason to start this. Like, an email client, for instance, can have a status group for every person that sent you an e-mail. Instead of updating the list in every new e-mail and blasting all relays with it, the client just adds a Relationship Status event. |
|
So, with my unbounded list proposal (basically the {
"kind": 33118,
"tags": [
["d", "random6467362966154779"]
["n", "contacts"]
],
"content": "<NIP-44 encrypted Stringified TAG-List([
["p", "91cf9..4e5ca", "wss://alicerelay.com/", "Alice"],
["status", `<Known Face, Contact, Following, Coworker,
Friend, Partner, Family, Extended family, Trusted,
Competitor, Traitor, Used to Know, Scammer, NSFW,
Unkown, etc>`],
["summary", "<summary of the relationship>"],
["email", "bla@ble.com"]
])>",
...other fields
}The difference is that you can later add the same entry simultaneously to another unbounded list editing it and adding a new Want all contacts, search by the n tag and author. Edit: the event is supposed to hold just one |
|
@vitorpamplona Added you as author and also the "contacts" example there at #784 |
I am confused. What does it do? Why would I add the entry to another unbounded list? |
|
I would separate the status example from a people list example. Otherwise, you have to link each So, an unbound list allows a client to search for multiple You could turn the Wouldn't that be the right way to do this? |
A kind 33118 event was meant to have a single
Hmm got it you want to have kind 30382 with a p tag unencrypted (to able to use on filter). I encrypted the {
"kind": 30382, // can fetch all contacts
"tags": [
["d", "91cf9..4e5ca"]
["n", <NIP-44 encrypted("known_face")>], // can fetch all "known_face"s but no one knows the status
["relay", "<recommended relay>"],
],
"content": "<NIP-44 encrypted Stringified TAG-List([
["nickname", "<My buddy>"],
["summary", "<summary of the relationship>"],
["email", "bla@ble.com"]
])>",
...other fields
}Is this it? |
|
If the above I encrypted it because someone may get mad if it discovers his friend labeled him as a "scammer" or something worse =o |
|
ohh interesting.. i didn't know the
Maybe using status for |
Just tested it. It is not deterministic =( |
If searching by the status at [
["status", "<status 1>", "random string 1"],
["status", "Big Time Scammer", "6064460175057025"]
]Then the |
|
@arthurfranca I am back to this, changed it to a private status (hash of the key as I will be using this to document a list of Patients a doctor is taking care of. People can count how many patients a doctor has, but the relationship between them should be fully private. |
|
Then why isn't it merged, if it's already in active use by multiple clients? Have to dig through the PRs, to find it. |
Merging things too early in a core proposal (it could replace contact lists) like this one is bad. I am ok with waiting for more people to code and be convinced that this is a good approach or not. |
|
Hmm. Just means that protocol changes in the repo are too difficult and slow, so that the development of the protocol always happens elsewhere, and this repo is now just an archive of old versions. |
Protocol changes should be slow. New usage of the protocol can be much faster. Most NIPs are just new usages.
As it should. Proposals should be developed, tested and show some proven usage before the specs are merged. Otherwise, we would have had 1000s of NIPs already and 90% would be unused. Lots of noise, little signal.
This repo does not direct where Nostr is going. It only reflects what people are actually doing and using. PRs are just propositions of where apps want to go to allow other devs to react to any blatant issue when encoding things into Nostr. |
|
Okay, but then, what's the advantage of keeping the spec in the repo, versus just having a NUD in the wiki and listing the corresponding event kind in the repo ReadMe? Everything in here is outdated. |
There is no significant advantage for the NIP. It's just additional exposure. In fact, many people would say NUDs are a better system for specs than a centralized repo run by Microsoft.
Outdated means obsolete. Which is not the case. This repo just doesn't have all the crap people are testing, kick-starting, etc. It only has the things that have shown they are useful. Think about this repo as an interoperability layer. If multiple clients are trying to be interoperable, this is a good spot to come together. If a client is not interested in getting others to use their stuff, they don't need to be here at all. In fact, many couldn't care less about interoperability. |
|
We low-key hate GitHub, but Nostr development has kind of forced us to use it. We were usually using other git servers, before. |
jb55
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
its a good idea
|
Recently was thinking that maybe the |
|
@staab @vitorpamplona keep |
|
I would use |
|
We had that discussion before. Just because they have the same format doesn't mean they are the same.
The semantical difference between a hashtag, a label, and a set is big enough to justify their separate existences. Even though they all use exactly the same syntax and largely intersect with one another. |
|
My doubt is if its worth it having Are they really that different? I know that sometimes one wants to have namespaced labels together with ugc, like for example an app wants you to pick a label for some event from their fixed list of labels and you may also add some hashtags to label it freely. On the previous example, what we want is these to not clash when filtering at relays so today that hypothetical app would pick As food for thought, what if we picked the Example of someone labeling a website at Yahoo: {
// ...other event fields
tags: [
// T is "tag presence" plus optional namescape
// Good if we want all kind:xyz events with "hashtags"
// or all events labeled with the namespace my app cares about
["T", "t"],
["T", "t:com.yahoo"],
["t", "free-stuff" /* normalized */, "Free stuff" /* to display it as typed by user */],
["t", "com.yahoo:app", "App" /* to display it as intended by Yahoo */],
["t", "com.yahoo:ar", "AR"],
["t", "com.yahoo:vr", "VR"],
]
} |
There is no such thing as a "global tag" on Nostr. Each NIP redefines every tag, both syntactically and semantically, to their own liking. Most of the redefinitions are syntatically backwards-compatible but semantically quite different. In code, you can never expect a global tag approach to last.
There is no point in merging concepts. What's to gain from it? You lose all the beautiful specialization that each of them have for the sake of what? One less character to use on your source code? One less if (if "t" -> if "t" or "l")? Generalizations are the enemy of interoperability. So, no I don't think we should merge |
|
We are about to implement this at damus for "favouriting users" can we call these Nostr Contact Cards instead? |
Yeah, we can change |
|
Just changed the name and adjusted the text. |
| "kind": 30382, | ||
| "tags": [ | ||
| ["d", "e88a691e98d9987c964521dff60025f60700378a4879180dcbbb4a5027850411"], | ||
| ["n", "follow"], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should probably standardize a "follow" type
Uses unbound lists to create events that define the relationship between two pubkeys in a public or private manner.
Read here