Hacker News new | ask | show | jobs
by grishka 1524 days ago
The thing with the Nokia 5800 (I also have one) and other phones not designed in the US is that outside of the US, most people paid for SMS per message. So it made sense to present the messages in that UI, you're paying for the whole thing anyway, could as well use all 160 (or 70 around here) characters. No one in their right mind would split into several messages something that fit into one. For this style of instant messaging, we used ICQ. There were unofficial ICQ clients for just about everything.

On XMPP itself — I'm looking into it as the protocol for messaging for my federated social network. I first contemplated using Matrix, but then I looked at the spec, saw the mathematical notation for the room state synchronization algorithm, and noped outta there really fast.

3 comments

If you're looking into XMPP for a social network, you might be interested in movim.eu (based on XEP-0277: Microblogging over XMPP) and the efforts to combine ActivityPub and XMPP:

* https://nlnet.nl/project/Libervia/

* https://inqlab.net/2022-01-17-activitystreams-over-xmpp.html

mental note to link https://matrix.org/docs/guides/implementing-stateres from the matrix spec :p
Oh, thanks for this. I did look for a tutorial about implementing a minimally functional Matrix server like there are for ActivityPub[1][2], but didn't find any.

[1] https://blog.joinmastodon.org/2018/06/how-to-implement-a-bas...

[2] https://blog.joinmastodon.org/2018/07/how-to-make-friends-an...

And after reading the whole article, I'd like to add: it really helps to treat these protocols like APIs. As in, if you're building an XMPP server, you wouldn't want to expose the actual clients as resources, for example. You'd instead just send each message to each connected client and present them all as one single "client" to other users and for the purpose of s2s federation. That would eliminate an entire class of issues, like messages getting lost, AND improve the user experience at the cost of a slight, barely noticeable spec noncompliance.

I do a variation of this for ActivityPub in my project already. Except I don't implement c2s ActivityPub at all.