Skip to content
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

Bulletin Boards #1815

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

vitorpamplona
Copy link
Collaborator

@vitorpamplona vitorpamplona commented Feb 28, 2025

A simple scheme for boards and threads to be used with a NIP-29 relay.

Read: here

@thelmuxkriovar
Copy link

thelmuxkriovar commented Feb 28, 2025

Love the idea, currently for a nostr client I'm building, I'm using NIP-7D and NIP-22 to create the same effect, but honestly I much prefer your approach due to the use of replaceable events.

Just one minor tweak, I believe that boards should be allowed to have parent boards, allowing for sub-categorization, such as for example:

  • Technology
    • Computer and Hardware
      • Linux
      • macOS
    • Time Machines
  • Sports
    • Soccer
      • FIFA

We could achieve this by having an "e" tag in the 30891, what do you think about that?

@vitorpamplona
Copy link
Collaborator Author

vitorpamplona commented Feb 28, 2025

Can't we solve it with a way to parse the category? Maybe <level1>/<level2>/<level3>?

Making things recursive really complicates things.

@thelmuxkriovar
Copy link

Maybe something like this would work?

{
  "kind": 30890,
  "tags": [
    ["d", "<unique_board_identifier>"],
    ["name", "<board_name>"],
    ["summary", "<short summary for preview>"]
    ["image", "<optional_image_url>"],
    ["relay", "wss://"], // home relay
    ["relay", "wss://"], // mirror relay
    ["forum", "<30891:pubkey:dTag>", "<level1>"], // forum
    ["forum", "<30891:pubkey:dTag>", "<level1>", "<level2>"], // forum
    ["forum", "<30891:pubkey:dTag>", "<level1>", "<level2>", "<level3>"], // forum
    ["forum", "<30891:pubkey:dTag>", "<level1>", "<second_level2>"], // forum
    ["forum", "<30891:pubkey:dTag>", "<second_level1>"] // forum
  ],
  "content": "<board_description and rules>"
}

@staab
Copy link
Member

staab commented Feb 28, 2025

Why not use NIP 29 groups as boards? Particularly since content moderation is to be implemented using relay moderation tools. That would solve permissions etc as well. At least use 7D and 22 for threads/replies.

@vitorpamplona
Copy link
Collaborator Author

Why not use NIP 29 groups as boards?

That's the goal but without any of the other stuff like chats or hierarchical threads. That's why 7D and 22 really don't fit the usual concept of a board.

@staab
Copy link
Member

staab commented Feb 28, 2025

You don't have to show everything in a room, just like you don't have to show everything in a relay. Just ignore chats and kind 1s etc, that's what flotilla does for the chat rooms.

@vitorpamplona
Copy link
Collaborator Author

vitorpamplona commented Feb 28, 2025

You don't have to show everything in a room, just like you don't have to show everything in a relay.

That's the goal for the new events. To show just one board with a few given forums. Then ignore chats, kind1s, and the usual threads with NIP-22.

I am also using new kinds to use Markdown, since NIP-22 and NIP-29 native kinds need to use plain text.

@staab
Copy link
Member

staab commented Feb 28, 2025

To show just one board with a few given forums.

What does this mean? Doesn't a board exist within a forum?

Then ignore chats, kind1s, and the usual threads with NIP-22.

That's the goal with 7D too. It even enforces that replies must not be nested.

I am also using new kinds to use Markdown, since NIP-22 and NIP-29 native kinds need to use plain text.

This fixation on using markdown vs the markdown subset we defined in #1800 is only going to result in two versions of everything.

@vitorpamplona
Copy link
Collaborator Author

vitorpamplona commented Feb 28, 2025

What does this mean? Doesn't a board exist within a forum?

Board is the BB site. It has categories and inside each category forums.

Inside the forum, people can start threads and reply.

That's the goal with 7D too. It even enforces that replies must not be nested.

I just noticed that. We need to decide if the scope can change how NIP-22 behaves or not. I would expect any client that implements NIP-22 but not NIP-7D to just reply as usual there, breaking NIP-7D. Right now for instance, Amethyst is breaking NIP-7D because it always replies to NIP-22 in the NIP-22 style, regardless of scope.

@staab
Copy link
Member

staab commented Feb 28, 2025

Board is the BB site. It has categories and inside each category forums.

I see. This is inverted from how I used the terms growing up, but I see both terminologies are used in the wild. A nice source of ambiguity for people to argue over.

We need to decide if the scope can change how NIP-22 behaves or not. I would expect any client that implements NIP-22 but not NIP-7D to just reply as usual there, breaking NIP-7D. Right now for instance, Amethyst is breaking NIP-7D because it always replies to NIP-22 in the NIP-22 style, regardless of scope.

I suppose it would probably make sense to create a new comment kind that MUST not comment on a comment. It breaks flotilla, but that's not the end of the world.

@luigi1256
Copy link

another kind to create a global view, FAQ, presentation stuff for each site, maybe just the boring stuff from the forums policy and other

@vitorpamplona
Copy link
Collaborator Author

vitorpamplona commented Mar 1, 2025

It breaks flotilla, but that's not the end of the world.

Frankly, I am not expecting/wanting this to show on Flotilla and Chachi. These are for bulletin boards, not for Slack/Discord clients. Vastly different things that should be kept separate on purpose.

@staab
Copy link
Member

staab commented Mar 1, 2025

Flotilla is not a chat client, it's a community client. This may include chat, or it may include forum posts. It's arbitrary to dictate what should be combined. I mean, look at Amethyst, it doesn't stay in its kind 1 lane by any means.

@vitorpamplona
Copy link
Collaborator Author

Yep, I don't mind you integrating it and I will integrate them too in Amethyst, but the purpose of this NIP is to create a very specialized system, not a broader/more generic "community client".

@staab
Copy link
Member

staab commented Mar 1, 2025

My point is they're very nearly identical in terms of functionality, just structured differemtly. This is a "multiple ways to do the same thing" scenario. The difference is in how that thing is done (forum events vs nip 29 groups, kinds, markdown, how relays are selected). I'd like to avoid duplicating stuff if we can. But go ahead and fork if you think the differences are worth breaking interop. I'll continue to use 7D.

@vitorpamplona
Copy link
Collaborator Author

My point is they're very nearly identical in terms of functionality, just structured differently.

Everything is nearly identical in functionality to each other on Nostr. Video kinds and Picture kinds are essentially NIP-94 kinds, which are essentially Kind1 posts. NIP-22 kinds are Kind 1 replies. Live chats on streams, NIP-28 and NIP-29 chats are virtually the same. Labels, reports, and polls are essentially Reactions with minor functional differences.

This idea that function is what defines a NIP is wrong. NIPs are defined by their application, by their UI/UX, because these minor functional differences make or break the applications themselves.

@vitorpamplona
Copy link
Collaborator Author

Similarly, supporting markdown with or without tables is a minor functional difference. But it makes or breaks applications that need tables to operate. If we fix a given syntax in a kind, that application will need to create a new kind to support the extra features it wants, even though it is just a minor difference. There is no option to use the existing kind. Shortly thereafter, there will be another app that needs tables + footnotes and we will need to then define a new kind that offers tables + footnotes because without it that new app cannot exist. Even though it's all just a very minor difference.

@luigi1256
Copy link

What if you called this nip Dev Board?

@vitorpamplona
Copy link
Collaborator Author

What if you called this nip Dev Board?

Is it just for devs? I wasn't thinking about them, but I am open to it.

@thelmuxkriovar
Copy link

I don't like the name Dev Board personally, it's too specific and bulletin boards are used by more than just developers

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants