Bug 28740 - Channel.I.Messages needs some way for clients to discover which headers are supported
Summary: Channel.I.Messages needs some way for clients to discover which headers are s...
Status: RESOLVED MOVED
Alias: None
Product: Telepathy
Classification: Unclassified
Component: tp-spec (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Telepathy bugs list
QA Contact: Telepathy bugs list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 28741
  Show dependency treegraph
 
Reported: 2010-06-24 06:56 UTC by Will Thompson
Modified: 2019-12-03 20:21 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description Will Thompson 2010-06-24 06:56:27 UTC
So. Message headers (and to a lesser extent body fields) fall into various categories:

• CMs must set this header on messages; clients must not (e.g. scrollback, message-sent, message-received)
• CMs must support this header; clients may set it (e.g. message-type)
• CMs may set this header on messages; clients must not set it (e.g. message-token¹)
• CMs may support this header on messages; clients may set it (currently just sender-nickname; this also applies to most of the headers I'm defining at the moment like message-subject, supersedes (bug 25636), message-validity (SMS), message-to/cc/bcc)

So the first two classes are unproblematic. CMs implement them, and clients can look for them (and set them in the second case) or ignore them.

The third class is also okay, I think: CMs can implement them, and clients can look for the header but just deal if it's missing, as with all headers.

The fourth class is a problem. How does the UI know that it's on MSN using Butterfly, and hence can set sender-nickname? Ditto XMPP and message-subject; Skype (and maybe ll-xmpp) and supersedes; etc.

I think the way to do this is to split the fourth set out in the spec, and have a property listing which extra properties clients can set on outgoing messages on this channel. (The property is immutable, but isn't requestable so doesn't really fit in RCCs, which is a bit annoying.)
Comment 1 Mikhail Zabaluev 2010-06-24 11:10:17 UTC
Re GetContactListAttributes: I find it sad that special timeout has to be written for this method; is it a generally accepted practice across Telepathy? This will require special work for bindings and clients.

Maybe a property/signal pair could be added so that clients could wait on the signal, and know that GCLA will return empty if called while contact list synchronization is pending?
Comment 2 Mikhail Zabaluev 2010-06-24 11:10:57 UTC
(In reply to comment #1)
> Re GetContactListAttributes:

Oops, please ignore this misplaced comment.
Comment 3 Simon McVittie 2010-06-29 02:38:18 UTC
> 3. CMs may set this header on messages; clients must not set it (e.g.
> message-token¹)

What was footnote 1 meant to be?
Comment 4 Simon McVittie 2010-06-29 02:48:36 UTC
> CMs may support this header on messages; clients may set it (currently just
> sender-nickname; this also applies to most of the headers I'm defining at the
> moment like message-subject, supersedes (bug 25636), message-validity (SMS),
> message-to/cc/bcc)
...
> [This] class is a problem. How does the UI know that it's on MSN using
> Butterfly, and hence can set sender-nickname? Ditto XMPP and message-subject;
> Skype (and maybe ll-xmpp) and supersedes; etc.
> 
> I think the way to do this is to split the fourth set out in the spec, and have
> a property listing which extra properties clients can set on outgoing messages
> on this channel. (The property is immutable, but isn't requestable so doesn't
> really fit in RCCs, which is a bit annoying.)

All(?) current implementations just ignore unrecognized headers, which is the behaviour I intended Messages to have.

I think this subdivides further:

4a. "Unimportant" hints. CMs may support this header on messages; clients may set it. If the CM doesn't support it, it's ignored, and that's OK; the message was delvered in a best-effort way. If the CM indicates that it doesn't support it, the client MAY hide the UI for it, or just send it unconditionally.

IMO, message-validity and sender-nickname are in this class, and probably supersedes too - if you don't understand how to supersede messages, the fallback behaviour of treating the new message as independent is ugly but legible. Whether subject is in this class is debatable.

4b. Important semantic differences. CMs may support this header on messages; clients may set it, but should not set it if unsupported, because the behaviour if it's not understood will differ significantly.

I'd assumed that message-to, message-cc and message-bcc were in this class, but having read your branch again, I'm not so sure: the intention of the branch seems to be that the recipients are determined by the channel's members. If you set message-bcc:[Bob] and the CM doesn't understand it, then the fact that Bob is a recipient is leaked, but that's the best you can do on a protocol where recipients of multi-recipient messages are always revealed to other recipients.
Comment 5 Will Thompson 2010-07-14 05:16:35 UTC
(In reply to comment #4)
> IMO, message-validity and sender-nickname are in this class, and probably
> supersedes too - if you don't understand how to supersede messages, the
> fallback behaviour of treating the new message as independent is ugly but
> legible.

For outgoing messages, the UI needs to know whether it should suggest to the user that it can edit messages.

For incoming messages I agree.
Comment 6 GitLab Migration User 2019-12-03 20:21:46 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/telepathy/telepathy-spec/issues/74.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.