On Tue, 17 Mar 2026 15:28:35 +0800
"Marvin W. via Standards" <standards(a)xmpp.org> wrote:
Hi,
There was already discussions on that matter during Summit and I made
the point that I believe we have two entirely separate issues here
that IMO should also be treated entirely independent (potentially
using two XEPs):
(a) Markup to the body, that has the purpose to indicate that a part
of the body is referring to a user or a group of users
(b) Some indication that the message should have some sort of priority
to a user or a group of users
Here's why I believe they should be independent:
- A client may decide to send both at the same time, but it doesn't
need to. (a) can also happen in conversations that the referred user
is not a part of and thus part (b) certainly can't apply. It is thus
only logical that even if the referred user is in the same room, one
should be able to send a message that does not indicate (b).
- (a) is indicating to a specific instance of body, implying that in
scenarios of multiple bodies (xml:lang, xhtml-im), there need to be
multiple of such (a) indications, but the indication of (b) does not
need to appear multiple times, as it is independent from the actual
body.
- The (b) indication might have some implication on servers (e.g.
might receive priority for CSI when regular type=groupchat messages
don't), (a) is entirely to be processed by clients.
- When end-to-end encryption is used, it may be desirable to keep (b)
unencrypted (so servers can process it), whereas (a) should always be
encrypted when end-to-end encryption is used, as it may leak
information about the message's plain text.
I think this gives a good idea of why I believe those are two separate
things. The XEP proposal puts them into a single thing, but does
acknowledge some of the things I mention:
- A mention can happen without referring to a specific part of the
body, effectively turning it into a (b) only indication
- A mention can happen with <noping/>, effectively turning (b) off
when (a) is used
Now here are problems I see with the proposed specification, directly
stemming from trying to merge the two:
- A mention can happen with <noping/> and without begin/end,
indicating that a user/group is mentioned, which feels largely
useless.
- When multiple languages are used, there may be multiple <mention/>
elements. What if they have conflicting <noping/> indications?
On top, there's another major issue somewhat caused by merging the
two: The user's home server usually does not have an understanding of
group membership details, hats and so on, meaning it can't give
messages priority (e.g. for CSI) based on that in the proposed
protocol.
So my proposal is to do two separate things for mention (which could
reference each other):
- A markup-only indication. This is meant to be processed by clients
exclusively. I personally would prefer this being based on XEP-0394
spans, as those already have some business logic that is relevant here
(spans must not cross each other, spans cannot cross block level
markup) that would need to somehow be codified if it was done
indpendent of XEP-0394.
- For notifications in MUCs, to solve the issue that the home server
does not understand details like affiliation/hats, have a new protocol
that allows a sender to indicate which group they want to notify and
then have the MUC translate this into XEP-0224 attention elements when
reflecting the message to applicable recipients.
- For priority notifications in direct chats (if messages aren't
notified by default), just use XEP-0224 directly.
This way we have a single standard for the receiving server/client to
know that a message is important and should notify (XEP-0224). We have
a single standard for markup related matters (XEP-0394). And we have a
new standard to indicate to the MUC server they should notify specific
recipients.
Hello, thanks for the feedback! I wasn't around for the Summit, and it
sounds like not many notes were taken on the topic, so its certainly
interesting hearing about the ideas proposed there.
I agree that the current published draft does try to cover two separate
use-cases in one go, but most of the feedback I've gotten now suggests
that people don't actually want (a) without (b), so my current working
draft [1] has been revised to focus solely on the core use-case of
mentioning users with intent to notify. I would definitely like to hear
from others if such a split is actually desired, though.
On the other hand, the points about the server-side handling in regards
to notifications and encryption/CSI still seem relevant.
* How would you handle notifications in encrypted group chats? I feel
like relying on the MUC to notify the relevant users would leak the
most important part of the mention to the MUC.
* Also, XEP-0224 only tells me that I've been notified, but not why.
How would my server know to surpress group notifications if I'm only
interested in individual mentions, for example?
[1]
https://github.com/xsf/xeps/pull/1511