Working on fmsg - open protocol for instant messaging, distributed by domain like email..
Its a message definition and protocol, addresses look like @user@domain, anyone can run a host, and threaded messages are linked by cryptographic parent hashes..
The idea is to take the best from email: open protocol, domain ownership, interoperability (unsolicited mail is a feature not a bug), and the best from closed instant messaging rebuilt: efficient binary messages, conversational threads, sender verification, message integrity etc. built-in. Originally envisaged for human-to-human messaging but partculalrly interesting time right now with human-to-agent and agent-to-agent messaging...
The OSS stack is up and running: Go host, Dockerised full setup, CLI, Web API, and a spec nearing v1.0. Did Show HN post week ago: https://markmnl.github.io/fmsg/show-hn.html
Seeking feedback, criticism, validation :) protocol bikeshedding, and especially interest from founding-engineer types who want to help build an open messaging ecosystem rather than another closed app..
What is the unique selling point that it has over Matrix?
Matrix addresses have a similar format, anyone can run a host, open protocol, domain ownership, interop... Threaded messages are supported AFAIK, the details of the crypto will be different but overall it feels like it is close enough that a new protocol will have a hard time having enough advantages to overcome the huge network effect (Matrix being one of the few open messengers that actually have some following already).
You're absolutely right to pick up on that, I did study the landscape and Matrix is closest.. biggest difference is fmsg is just messages - group like chats evolve naturally in the threads - but to get a message someone has to send you one. Group messaging platforms like Matrix, Rocket.Chat etc have concept of rooms/forums/channels i.e. groups, then have HTTP APIs to manage membership and sync messages.. fmsg just messages someone has to send you
Also fmsg being its own protocol can do novel things like to auto challenge during sending back to sender - can't do that with HTTP
I feel like perfecting something can be trap, sure keep it alive, but maybe think about the next thing to work on too?