Akseli on Nostr: I wrote down some things about a chat protocol I would find ideal these days. I don't ...
I wrote down some things about a chat protocol I would find ideal these days.
I don't want security over usability, I want safety and usability over security.
It's not a spec. It's nothing but list of ideas and thoughts. It's nothing concrete. But this is something I would like to see.#
Super Simple Chat protocolA chat protocol where safety is first and security second. UX is the major driver.
Bullet points with (?) are things I'm unsure about.<li>Federated chats, so one server going down isn't dropping all of them<ul><li>Room is hosted per server though, so if server goes down, so does the room</li><li>Rooms can be given backup rooms, so conversation will move to other room in another trusted server in the meanwhile if needed</li></ul></li><li>Direct messages that could be encrypted with PGP or similar<ul><li>User login password is also their PGP password<ul><li>Insecure I guess but also good UX</li></ul></li><li>User can opt in to use different password for the PGP</li><li>The key is saved on users account but since it has a password that server doesnt know about, it should be secure-ish (?)</li></ul></li><li>Effortless group chats<ul><li>One room</li><li>Multiple channels in room</li></ul></li><li>Markdown messages</li><li>Custom emote support</li><li>Custom sticker support</li><li>Avatars</li><li>Profile text</li><li>Nickname and nick colors</li><li>No threads inside chats (?)<ul><li>They fracture chats even further and make things hard to follow</li><li>Just make a new room</li></ul></li><li>File sharing (upload to server, it makes a link that anyone can open)<ul><li>The file is never uploaded to anyone elses server except the users</li></ul></li><li>Safety over security<ul><li>Messages can be deleted, destroyed</li><li>Federation can be either blocklist <em>or</em> allowlist</li><li>Anti-spam tools<ul><li>Auto-ban and account deletion if certain words are used for example</li></ul></li><li>E2EE is not as important as the safety of users<ul><li>One can argue that E2EE is safety but it's so much more than that</li></ul></li><li>Images/files will not be cached by the servers receiving them (?)<ul><li>The responsibility of owning an image is on the server sending it</li></ul></li><li>Servers with open registration can be limited/blocked<ul><li>For example user can set "block anyone on open-register server from DM'ing me"</li></ul></li><li>Open registration is in general highly discouraged<ul><li>Defaults are to encourage vetting your users</li></ul></li><li>Roles for all kinds of operational actions, that affect whole room<ul><li>Per channel overrides (like announcement channel can have different rules than the room rules)</li></ul></li></ul></li><li>UX is the key<ul><li>Client more important than server</li><li>Have basic client implementation that allows all the necessary things</li><li>Allow custom clients</li><li>When user uses a client, client must inform the server owning the room about it's capabilities<ul><li>This is to avoid situations where some people use feature 1 and client can't see them</li><li>Instead client will see a "unsupported feature: feature_name" and general information about it</li></ul></li></ul></li><li>Bots are just users with custom clients<ul><li>Bots could be flagged as one and other users will see BOT tag (?)</li><li>Moderation should never need a bot<ul><li>Moderation can however be automated with one (like automated community ban lists)</li></ul></li></ul></li><li>Voice and video chat can be added much later when text part works (?)<ul><li>These could be somekind of media streams that just play</li><li>Client would handle the microphone etc. settings</li><li>Or just use mumble lol, idk if everything needs to be done in same app</li></ul></li><li>Messages could be just JSON data between servers (?)<ul><li>Timestamp</li><li>Room-ID</li><li>User</li><li>Message</li><li>????</li></ul></li>
Published at
2025-04-11 21:07:26 UTCEvent JSON
{
"id": "a016017ce3bd12fd0e89885204b95b4a17c135375a26d1ce87f210c854139aa3",
"pubkey": "cfd86f7086bacf4bf939fbccad72b22f883cd29b1a30bc782931903d5f340da5",
"created_at": 1744405646,
"kind": 1,
"tags": [
[
"proxy",
"https://scalie.zone/@aks/114321368463055897",
"web"
],
[
"proxy",
"https://scalie.zone/users/aks/statuses/114321368463055897",
"activitypub"
],
[
"L",
"pink.momostr"
],
[
"l",
"pink.momostr.activitypub:https://scalie.zone/users/aks/statuses/114321368463055897",
"pink.momostr"
],
[
"-"
]
],
"content": "I wrote down some things about a chat protocol I would find ideal these days.\nI don't want security over usability, I want safety and usability over security.\n\nIt's not a spec. It's nothing but list of ideas and thoughts. It's nothing concrete. But this is something I would like to see.# \n\n\n\nSuper Simple Chat protocolA chat protocol where safety is first and security second. UX is the major driver.\nBullet points with (?) are things I'm unsure about.\u003cli\u003eFederated chats, so one server going down isn't dropping all of them\u003cul\u003e\u003cli\u003eRoom is hosted per server though, so if server goes down, so does the room\u003c/li\u003e\u003cli\u003eRooms can be given backup rooms, so conversation will move to other room in another trusted server in the meanwhile if needed\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003cli\u003eDirect messages that could be encrypted with PGP or similar\u003cul\u003e\u003cli\u003eUser login password is also their PGP password\u003cul\u003e\u003cli\u003eInsecure I guess but also good UX\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003cli\u003eUser can opt in to use different password for the PGP\u003c/li\u003e\u003cli\u003eThe key is saved on users account but since it has a password that server doesnt know about, it should be secure-ish (?)\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003cli\u003eEffortless group chats\u003cul\u003e\u003cli\u003eOne room\u003c/li\u003e\u003cli\u003eMultiple channels in room\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003cli\u003eMarkdown messages\u003c/li\u003e\u003cli\u003eCustom emote support\u003c/li\u003e\u003cli\u003eCustom sticker support\u003c/li\u003e\u003cli\u003eAvatars\u003c/li\u003e\u003cli\u003eProfile text\u003c/li\u003e\u003cli\u003eNickname and nick colors\u003c/li\u003e\u003cli\u003eNo threads inside chats (?)\u003cul\u003e\u003cli\u003eThey fracture chats even further and make things hard to follow\u003c/li\u003e\u003cli\u003eJust make a new room\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003cli\u003eFile sharing (upload to server, it makes a link that anyone can open)\u003cul\u003e\u003cli\u003eThe file is never uploaded to anyone elses server except the users\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003cli\u003eSafety over security\u003cul\u003e\u003cli\u003eMessages can be deleted, destroyed\u003c/li\u003e\u003cli\u003eFederation can be either blocklist \u003cem\u003eor\u003c/em\u003e allowlist\u003c/li\u003e\u003cli\u003eAnti-spam tools\u003cul\u003e\u003cli\u003eAuto-ban and account deletion if certain words are used for example\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003cli\u003eE2EE is not as important as the safety of users\u003cul\u003e\u003cli\u003eOne can argue that E2EE is safety but it's so much more than that\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003cli\u003eImages/files will not be cached by the servers receiving them (?)\u003cul\u003e\u003cli\u003eThe responsibility of owning an image is on the server sending it\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003cli\u003eServers with open registration can be limited/blocked\u003cul\u003e\u003cli\u003eFor example user can set \"block anyone on open-register server from DM'ing me\"\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003cli\u003eOpen registration is in general highly discouraged\u003cul\u003e\u003cli\u003eDefaults are to encourage vetting your users\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003cli\u003eRoles for all kinds of operational actions, that affect whole room\u003cul\u003e\u003cli\u003ePer channel overrides (like announcement channel can have different rules than the room rules)\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003cli\u003eUX is the key\u003cul\u003e\u003cli\u003eClient more important than server\u003c/li\u003e\u003cli\u003eHave basic client implementation that allows all the necessary things\u003c/li\u003e\u003cli\u003eAllow custom clients\u003c/li\u003e\u003cli\u003eWhen user uses a client, client must inform the server owning the room about it's capabilities\u003cul\u003e\u003cli\u003eThis is to avoid situations where some people use feature 1 and client can't see them\u003c/li\u003e\u003cli\u003eInstead client will see a \"unsupported feature: feature_name\" and general information about it\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003cli\u003eBots are just users with custom clients\u003cul\u003e\u003cli\u003eBots could be flagged as one and other users will see BOT tag (?)\u003c/li\u003e\u003cli\u003eModeration should never need a bot\u003cul\u003e\u003cli\u003eModeration can however be automated with one (like automated community ban lists)\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003cli\u003eVoice and video chat can be added much later when text part works (?)\u003cul\u003e\u003cli\u003eThese could be somekind of media streams that just play\u003c/li\u003e\u003cli\u003eClient would handle the microphone etc. settings\u003c/li\u003e\u003cli\u003eOr just use mumble lol, idk if everything needs to be done in same app\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e\u003cli\u003eMessages could be just JSON data between servers (?)\u003cul\u003e\u003cli\u003eTimestamp\u003c/li\u003e\u003cli\u003eRoom-ID\u003c/li\u003e\u003cli\u003eUser\u003c/li\u003e\u003cli\u003eMessage\u003c/li\u003e\u003cli\u003e????\u003c/li\u003e\u003c/ul\u003e\u003c/li\u003e",
"sig": "2efd5e9cd357f9a064c37f4090c9d54ca5f4366288a31fa894f59c460d6ff3e2b25d01c30cada52e8a856935dd4dd48f3eda8cf54604b2314f886d72e6e42714"
}