jb55's avatar
jb55 _@jb55.com 9 months ago
My nostr community idea: - can only post in one community at a time. - separate follow list for communities you’ve joined (relationship statuses ideally) - communities have a name, banner, and description and can only be created once (name is immutable, non addressable). communities therefore have a specific sha2 ID which is the unchanging identifier for the community. - non-addressable sha2 id over d-tag name anchor, otherwise it's not clear which "bitcoin" community you are referring to. - size of community is counted by number of people who have that community id on their community follow list. - community posts have a distinct design (shows the community name on top of the post in your timeline like in X) - community can have addressable data associated with it via the creator or frost creators (sidebar info like on reddit) - Since threads could be quite large, we should use [NIP-22 Comments](https://github.com/nostr-protocol/nips/blob/master/22.md), this would allow us to pull large root threads first (if building a reddit-style design) - outbox: community author can create a preferred relay list for the community, or it can be more amorphous and exist everywhere - cross sections of the community can be moderated if viewed from the perspective of moderated relays that host content from that community - the community name changing would be confusing, immutable is good for the community creation anchor. - description could be overridden with the addressable metadata event, but name can’t change - there could be forked or hidden parts of the community on unofficial relays. these are just different views of the community associated with the sha2 id of the community. - they have much better network effects as well and can exist for long periods of time as they can exist on any or all relays - community members can publish relay lists and they can fight over which views of the network are the "official" ones, effectively forking the community without needing to change the root identifier - the largest community for a given name would be the defacto “reddit community” for that identifier Feel free to add questions and I'll add them to my notes here:
jb55's avatar jb55
There’s an simple, cross-relay, non-moderated community implementation that seems obvious to me but has not been spec’d yet… hrmm
View quoted note →

Replies (93)

There is a constant misunderstanding between open communities where the topic is not defined, like a "Reddit community" or a "BlueSky community", or a "Nostr community" and communities where the topic is defined. People join open communities to discuss whatever comes and join topic communities to stay on the topic and focus. Those are two different things. I don't see how topic communities can sustain their scope of discussion without moderation. And sustaining the scope is the whole point of establishing a community so that you can gather like-minded people.
jb55's avatar
jb55 _@jb55.com 9 months ago
you can have moderated views of the community if you want, but that is up to the users choosing which moderated relays they want to use for that community.
jb55's avatar
jb55 _@jb55.com 9 months ago
Without losing the network effects of the community via forking. Forking naturally emerges as an evolving relay set for that community. The creator of the community can’t do much to change it.
But that is just NIP-29, then: relay-based communities. We kinda had that for a while with NIP-28 public chats (we still have on Amethyst) where each relay has a different conversation going on while re-using the same community anchor id.
jb55's avatar
jb55 _@jb55.com 9 months ago
It also has tons of stuff like management, moderation, 7 moderation kinds! All of this is not necessary in my proposal
I agree that moderation should be a marketplace. It's kinda what relays try to do right now on all Nostr things. They just don't have the tools to actually run topic moderation effectively.
Most of that is just for moderating. And if relay operators need to moderate, you will need to design something like those actions soon or later. Either via Nostr or some other API. But if there is moderation, those methods will always be there in some form.
jb55's avatar
jb55 _@jb55.com 9 months ago
I'm just thinking relationship statuses for joining communities, nip-22 comments for threads, and a single note for the community anchor/id, name and description to start (addressable event for updating description can come later, its optional). there's almost nothing to it!
Isn't that a NIP-22 with `I` tags on hashtags? If there is no moderation, I don't think there is a need for picture and about me blurbs as they would just try to drive the conversation to one direction or another. With the hashtag, all the meaning must be extracted by the thing that cannot change: the hashtag name. Everything else is fluid. And it doesn't make sense to remove the fluidness without moderation to enforce a certain view.
While we're on the topic, when I go to the communities tab in Amethyst, there isn't an obvious way to search for communities. The search bar at the top does a global nostr search for names, posts, etc.
jb55's avatar
jb55 _@jb55.com 9 months ago
could definitely do it this way, but loses the charm of a reddit/twitter community with banner and sidebar. This could be a feature of the spec, generic or hashtag communities. It's compatible because I'm using nip22
Who controls the banner and sidebars if not the moderator of the community? Does that mean that we need relay-based hashtag pictures and "about me" pages? So that each relay can define their moderation policy on them?
jb55's avatar
jb55 _@jb55.com 9 months ago
I think calling them the moderator is a bit strong. its just the creator of the community who sets this. they can't really moderate anything except on their relays which host the community. but other relays can host the same community if they want. the banner and description can be overridden later by some future relay-based mechanism if needed ?
jb55's avatar
jb55 _@jb55.com 9 months ago
There's another variation of this. Maybe we can take inspiration from usenet here: sci.physics sci.physics.quantum sci.math then you could break down communities heirarchically tags for posting in sci.physics.quantum would be: [sci, sci.physics, sci.physics.quantum] so you could narrow down into niche areas if needed
jb55's avatar
jb55 _@jb55.com 9 months ago
i feel like anything with multiple tags gets spammy though... hmm
frphank's avatar
frphank 9 months ago
Hararil's "Sapiens" great book btw on how communities have formed since the start of humanity and how it separates us from the animals. Maybe learn from the past. The part about "myth building" is important.
jb55's avatar
jb55 _@jb55.com 9 months ago
this is why I sugegsted more explicit community ids vs hashtags. you can of course spam anything on nostr (threads, users, dms). hashtags are an easy target. your niche community? I guess, but these are the same problems we've always had and have methods to deal with (WoT, ranking community notes based on number of friends zaps and reactions, etc). this is not a replacement for relay group chats, those are still useful for smaller closed communities with low network effects. I'm more interested in a design for open, twitter-style communities.
Why can't we extrapolate the relay group model? chachi.chat is great for communities They have all the features necessary for a reddit style community except threads like posts. Which we can already do on nostr. I really don't see the holdup.
jb55's avatar
jb55 _@jb55.com 9 months ago
they are closed an invite based... I am trying to build a community approach that would fit into a microblogging app like damus. similar to twitter communities. relay chat doesn't really make sense there
That's really for each individual community to decide right? There can be groups that allow all to join, and I believe such groups already exist in the current implementation
A group can exist on multiple relays as well and they can just chose to shift on another one in nip 29 IIUC and there can obviously be multiple groups in a relay
jb55's avatar
jb55 _@jb55.com 9 months ago
But theres so much crap in that spec when it could have just been nip22. I don’t need 99% of it
I don't see any difference between hashtags and community IDs. Their meaning is fluid and can be taken over by the crowd at any point. Unless you filter by a moderating relay, which then both IDs and hashtags also apply and the definition is whatever the relay, not the users, want. They can all be spammed in the same way. The stronger they are, the more spam they are going to get.
jb55's avatar
jb55 _@jb55.com 9 months ago
there's no difference in terms of spam prevention, its really just to have an anchor for the creator to define the name, banner, and description. if you don't care about those things you can just use a hashtag (#physics) or namespace (!sci.physics.quantum) anchor. I've always wanted explicit to/cc on notes, so I would throw that in there as well for relay filtering and better hinting:
jb55's avatar
jb55 _@jb55.com 9 months ago
this is a combining my original mailing list idea with communities i guess
jb55's avatar
jb55 _@jb55.com 9 months ago
also with a user anchor they can also update the description with addressable events, as well as create relay lists for finding the canonical location, etc. the forking and moderation slicing is undefined and can be grown onto the spec later ?
I don't understand. If the community has no moderation and no theme, what's the difference between it and the global feed? I only see people coming together in a community for some common theme. If the community isn't fixed on the theme via moderation, it will quickly wither away because it won't maintain the theme that justifies the union. How will clients know where to get the notes made for the community if there won't be one or more relays defined for it? Searching for all community members to go get the notes from their relays seems a bit unfeasible.
jb55's avatar
jb55 _@jb55.com 9 months ago
clearly i'm bad at explaining my ideas so I'll just build it instead
JBN's avatar
JBN 9 months ago
Competition and crowdsourced design of the landscape of options available. And miniature community revolutions continually redefining Nostr societies, which soon enough will in some cases live transparently above Nostr. Communities will be referred to by users in terms of whether the community is top spot or not. 'Which Bitcoin community are you on?' 'Top Bitcoin' 'Main' 'Runnerup' 'Underdog' etc Will create the actual Dark Nostr.
Niel Liesmons's avatar
Niel Liesmons 9 months ago
I think :thread: Threads might be a great way out of the Kind 1 problems. But why don't we make it solve all problems with Kind 1s then? As in: why doesn't it solve the actual "Thread" part? Where the publisher gets to publish a sequence of posts in a way that it's clear for everyone where the Thread starts and ends. You could do this with a kind 30040 index of posts (type: thread) @Laeserin But I'm fine with solving this with an adjusted NIP-7D too @hodlbod
Niel Liesmons's avatar
Niel Liesmons 9 months ago
I do like that NIP-7D has a subject. That might actually be good fit too for the Forum solution you were looking for @franzap It wouldn't have MarkDown / AcsiiDoc styling tho.
Niel Liesmons's avatar
Niel Liesmons 9 months ago
I need a clear Twitter Thread solution. One that doesn't leave it to the apps to magically know which reply to the OP does or does not belong to the Thread.
Niel Liesmons's avatar
Niel Liesmons 9 months ago
That's why I see this opportunity. Pretty easy to add to NIP-7D tbh, without bothering anyone with a different defintion (i.e. Post/Note).
How do you prevent spam? Not only obvious spam but also off-topic comments and annoying people that ruin the community because there are no barriers to entry? It seems like these communities will have to naturally flock into relays that do the filtering on their behalf necessarily, and at point you're dangerously close to either NIP-29 or just kind:1 relay feeds. Both are good outcomes in my opinion.
The same NIP-29 group can be forked into multiple relays and each go through a completely different direction.
jb55's avatar
jb55 _@jb55.com 9 months ago
standard spam filtering approaches, with heavier emphasis on relay based filtering. We do this on the damus universe feed, only show notes from paid relays. This design of this is inspired by twitter communities, which would fit nicely into a microblogging client. I could use kind 1 but wanted to support reddit-like UIs via 7d+subject. Its meant for large communities (100k+) Since the “community” would get fragmented depending on which lens you’re viewing it from, @Vitor Pamplona suggested this shouldn’t be called communities. So i’ve been thinking of a different design where you explicitly tag which relays you are sending to (#bitcoin, #bitcoin@delvingbitcoin.org) so that relays can filter notes not sent to them. Maybe this would be 7D with an I hashtag scope. This is tentatively called distributed namespaced discussions. This would allow me to have my mailing list idea with a distributed form of “communities”… still working through that though, not sure if it makes sense yet.
rift 's avatar
rift 9 months ago
If everyone build their own relay then we don’t need developer to build us community . Which run on GitHub which funded by the big tech .
I think it's mostly a UX problem. On the write side, allow a chain of self-replies. On the read side, identify self replies that happen at the same time as the parent and show those as a thread. 7D isn't the right solution, and requires completely different UI, since it doesn't allow for replies to replies.
Niel Liesmons's avatar
Niel Liesmons 9 months ago
I want to avoid having all these as different things to render: - Kind 1 Note - Kind 11 Post without subject - Kind 11 Post with subject - Kind 30040 type: thread (since that would be the only clear Thread spec then) I don't see the need to reinvent Kind 1 with NIP-7D. We can just start replying with Kind 1111s on Kind 1 and have the same thing. Especially if no one is using the subject anyway.
> I don't see the need to reinvent Kind 1 with NIP-7D. We're not, it's a completely different concept. It's intended for use in old-school forum-like apps, not in kind 1 apps.
No, it absolutely isn't. Kind 1 allows for deeply nested reply hierarchies, 7D does not (for example). Clients should encourage longer, more complete thoughts in 7D vs kind 1s, which are context-independent and probably more memetic. It's a different medium entirely.
Niel Liesmons's avatar
Niel Liesmons 9 months ago
So if they're short articles, then why aren't they kind 30023 short articles? With the markdown etc... built in. I don't see how to explain this in-between thing to people.
30023s also allow nested replies, which kind 11 doesn't. In terms of semantics, how is a blog post distinct from a post on a forum? A lot of ways! A blog post is published within the context of an author (or publication), a forum thread is posted within the context of a topic or board. Blog posts are the focal point of the comments, a forum topic is a starting point for a longer discussion. Blog post comments may diverge into different sub-topics of the blog post, forum threads are "on topic" (or, "off-topic" as the case may be). They are entirely different media, and don't need to be squashed together.
Yes, that's crucial to the definition. I made this because I want a medium that doesn't have deeply nested conversations to enforce participants to stay on topic and contribute to a single "discussion". This has implications for the user interfaces that can be built, and for how people interact on a given topic. This is really the only differentiating factor from kind 1. See flotilla's threads feature for how this looks in practice.
Niel Liesmons's avatar
Niel Liesmons 9 months ago
1) 30032 should have Kind 11 replies. 2) The only is difference is the target + the limits to who can post the articles there In the personal blog case the target is the publishers own community, where only he can publish articles. In the Ray Peat Forum case the target is the Ray Peat Community, where anyone can publish articles. Same content type in both cases.
> The only is difference is the target + the limits to who can post the articles there Why are you ignoring me when I say that nested replies is the key difference? This is a key part of the medium.
Niel Liesmons's avatar
Niel Liesmons 9 months ago
I think we'll just build: :article: Forums on Kind 30032 and Kind 30040 (type: article) in one feed :thread: Threads with Kind 1 So far I don't see reasons to have any other content type
In NIP 22? Sure, but NIP 7D specifies not to do that: > Replies should always be to the root `kind 11` to avoid arbitrarily nested reply hierarchies. Maybe I should have used a different reply kind, but I don't really see why this is ambiguous.
Niel Liesmons's avatar
Niel Liesmons 9 months ago
Yep. Great! Will not use 7D then. That's clearly not my thing. Totally a deeply nested convo lover, on any content type.
jb55's avatar
jb55 _@jb55.com 9 months ago
yeah same... I think nip22 supports nested replies just fine from what I understand. just need to pick a root scope/kind
Doesn't seem like an issue to me. Plus how do you stop this from just fragmenting discussions with duplicate posts?