rss_style: include guid in tickets RSS
SlapOS ticket RSS have one entry for each ticket, with the content of the latest event as description, but when using a feed reader application, we'd like to have a new entry for each message posted to the ticket, to be notified that a new message was posted.
Feed reader applications fetch the RSS and have to determine if each entry is already in their database or not. In a scenario like below, we observe different behaviors for different applications:
- a user open a ticket "help" with a first message "I need help !". The RSS entry for this ticket is:
<item>
<link>https://slapos.example.com/#/support_request_module/1</link>
<title>Help</title>
<pubDate>Mon, 01 Jan 2001 10:57:10 +0100</pubDate>
<description>I need help !</description>
</item>
=> feed reader fetches the RSS and add a new entry with title "Help"
- support operator reply with a second message "how can I help you ?" The RSS entry for the ticket becomes:
<item>
<link>https://slapos.example.com/#/support_request_module/1</link>
<title>Help</title>
<pubDate>Mon, 02 Jan 2001 08:32:12 +0100</pubDate> <== this is different
<description>How can I help you ?</description> <== this is different
</item>
now depending on the implementation of the feed reader, it will either:
- add a new entry, this is the best behavior. In the RSS readers I tested, liferea and newsboat do this. Probably they consider that the entry is different because it has a new pubDate and/or description.
- update the existing entry "in place" - this is not so good, because this does not appear as a new entry and the original message is no longer in the RSS reader. TinyTinyRSS behaves like this (at least in version 17.4, which is a bit old)
- consider they already have the entry and don't do anything - this is even worse, because user can not see there was a reply. FreshRSS behaves like this.
A RSS for tickets will always have the problem that the feed reader must refresh often enough if we want to have a copy of all messages in the feed reader (and that's why ERP5 CRM's uses a RSS of Events and not Tickets), but we can make this situation better by using guid on messages.
By constructing a guid [1] that will become different every time a new
message was posted, feed readers consider each item as a a new, different
entry. At least this is the case for all the feed reader I tested, except
ERP5 builtin feed reader which only consider the link
attribute.
Strictly speaking this implementation has a "problem" that these guids are not permalinks, but I believe that's something we should address in erp5_rss_style (if guid does not look like an URL, set isPermalink="false"), but in practice it does not seem to be a problem.
1: https://validator.w3.org/feed/docs/rss2.html#ltguidgtSubelementOfLtitemgt