I don't like the idea of different "message classes".

It is difficult to define classes that every client developer is happy with.
And new XEPs could add the need for more classes, too.

Every time, a new class is defined, this has to be added to the XEP and 
implemented on the server side.
Every server operator has to update his software so that clients using these 
new and/or changed classes could be used properly with this server.

In contrast the stripped stanzas proposal is flexible enough to allow the app 
developers add new types of push messages when the need arises.
Usually the team developing the appserver and the client app is the same so 
this integrates the definition and usage of new push types tightly into the 
developement cycle of the app in question.

The stripped stanzas proposal can even extended further allowing the keyword 
"full" for "include_payload" in addition to the keyword "stripped".
Clients specifying "full" will get a copy of the whole stanza which is useful 
in a trusted environment where appserver and xmpp server are operated by the 
same entity.

The "full" keyword also has the advantage that the underspecified "push 
summary" currently defined by the XEP could be removed.

The stripped stanzas proposal allows the client to define, what additional info 
should be sent to the appserver (nothing, stripped stanzas or full stanza 
copy), shifting the decision to the client instead of the server operator 
which is good for privacy reasons.

Currently a server operator can accidentally activate the "push summary" on 
his server and evey app server will get the last message body along with the 
message sender.
The stripped stanzas proposal doesn't have this pitfall at all.

So to summarize:
- Including "full" alongside of "stripped" and "none" allows us to remove the 
underspecified and rarely used "push summary" from the XEP while still 
maintaining compatibility with scenarios where this information is actually 
needed/wanted
- My proposal allows the client to specify what information it wants to be 
sent alongside of the push instead of the server operator
- My proposal is flexible in regard of future changes to the XMPP protocol
- It allows a much faster developement cycle for app developers because they 
don't have to wait for xmpp servers to implement new push types





Am Sonntag, 30. Juli 2017, 13:22:02 schrieb Chris Ballinger:
> After a few more days of thought I'm not fully happy with the priority idea
> because it doesn't really leave room for any other states other than new
> message notifications. There may be other types of high priority that would
> be helpful to include with static notifications, like invites, which aren't
> covered satisfactorily.
> 
> There is another proposal to include stripped stanzas, and while I think it
> offers the most flexibility, I am concerned that buggy (or even correct)
> implementations could leak too much info, and that it adds too much
> complexity to the pubsub node to parse the many different types of
> notifiable stanzas.
> 
> From my perspective I want the least amount of data possible to make a
> satisfactory user experience. Running the pubsub node and push API exposes
> a central point of failure, so I really want as little data as possible to
> pass through our servers. As a bonus, preprocessing the stanzas into a
> simple string enum type within the XMPP server before sending it over means
> that app developers running pubsub nodes don't need to each write their own
> stanza handling code.
> 
> last-message-type is probably the best in terms of trade-offs for my use
> case. There are a minimal number of values that need to be supported for
> basic functionality:
> 
> 1. "message" -> hint to show "New Message!"
> 2. "invite" -> hint to show "Someone new wants to chat!"
> 3. "invite_group" -> hint to show "You've been invited to a group chat!"
> 
> If you're a server operator that is concerned with privacy, you can send
> over just (1) and still have a satisfactory UX. Sending over (1,2,3)
> doesn't remove that much in terms of privacy either. The additional types
> I'm listing below _could_ be sent by the server, but perhaps should be
> disabled by default, and only enabled when you're using a vertically
> integrated XMPP stack and don't care as much about user metadata leaks. The
> below could also be filtered out by the pubsub node because it can cause
> major battery drain if these are constantly waking the app in the
> background.
> 
> 4. "typing_start"
> 5. "typing_end"
> 6. "receipt"
> 7. "read"
> 
> It could also be extended to other future types:
> 
> 7. "call_audio" -> "Incoming audio call..."
> 8. "call_video" -> "Incoming video call..."
> 
> If you want to get really fancy you could allow the spec to include
> multiple types separated by a space, to allow a fallback to recognized
> types. Or I guess you could just fallback to "message", or simply ignore
> unrecognized types.
> 
> On Thu, Jul 27, 2017 at 6:23 PM, Chris Ballinger <chrisballin...@gmail.com>
> 
> wrote:
> > This adds an optional "high" and "low" priority value, where "high"
> > depends on whether the message contains a <body> or <encrypted> (OMEMO)
> > element. This helps limit overly verbose push notifications for things
> > like
> > typing notifications, without requiring transmission of anything about the
> > message contents.
> > 
> > The suggestion is that "high" priority pushes trigger something visible to
> > the user, whereas "low" priority pushes can be filtered or sent as
> > background fetches.
> > 
> > This is a simplified variation of an earlier proposal that defined
> > multiple message types.
_______________________________________________
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
_______________________________________________

Reply via email to