Subject: Re: [dispatch] Proposal for Per Resource Events Protocol

From: Kévin Dunglas <[email-masked]>
Date: Fri, 3 Nov 2023 10:34:52 +0100

Michael,

Many thanks to you and Rahul for pushing this topic forward.
Standardization of resource updates is much needed.

Unfortunately, I won't be able to make it to Prague. I'm not very familiar
with IETF meetings, but if it's possible to participate remotely in the
discussion, I'd be delighted to join you and present our work on Mercure.

I'll also send an email to the HTTPbis list to summarize the differences
and similarities between the three proposals, and show how these approaches
can be complementary.

Cheers,

On Thu, Nov 2, 2023 at 11:11 PM Michael Toomim <[email-masked]> wrote:

> Hi Kevin!
>
> I am grateful for your continued work on HTTP Subscriptions, and would be
> very happy to help make these approaches (Mercure, PREP, Braid-HTTP) work
> together, ideally in a unification that meets everyone's needs. It also
> might be educational to implement a babelfish that lets the protocols talk
> to one another by translating their messages.
>
> Since this conversation began, the chairs have suggested moving it to
> HTTPbis (cc'd) from Dispatch. So I am cc'ing HTTPbis on this email, and
> Rahul and I will be presenting PREP and Braid-HTTP at the HTTPbis meeting
> next Thursday or Friday in Prague:
> https://datatracker.ietf.org/doc/agenda-118-httpbis/ Maybe you would like
> to tune in and comment?
> (I will still present the idea of a new State Sync Working Group in
> Dispatch on Monday.)
>
> At this meeting, I am calling for HTTPbis to adopt work on
> Subscriptions—something to implement the core functionality that we all
> want with Mercure, PREP, and Braid. The resulting specification could end
> up looking like Mercure, PREP, Braid, or something else. See
> https://lists.w3.org/Archives/Public/ietf-http-wg/2023OctDec/0120.html
>
> Cheers!
>
> Michael
> On 11/2/23 10:13 AM, Kévin Dunglas wrote:
>
> Hi Rahul,
>
> Our team has been working for several years on a very similar protocol
> called Mercure:
>
> * Up-to-date spec: https://mercure.rocks/spec
> * Older I-D: https://www.ietf.org/archive/id/draft-dunglas-mercure-06.html
>
> The main difference is that we basically "ported" and extended the WebSub
> protocol (https://www.w3.org/TR/websub/) ro work over SSE.
> This approach has the benefits of working everywhere (even in HTTP/1.1
> contexts), to be easy to make compatible with environments not able to
> maintain persistent connections (PHP, serverless, CGI etc) and to be very
> easy to implement (no code nor SDK required client-side).
>
> Also, Mercure is already implemented and used in the wild by a lot of
> existing apps, and free software tools (including the popular Symfony web
> framework): https://mercure.rocks/spec#implementation-status
> It also a very dynamic community on GitHub:
> https://github.com/dunglas/mercure
>
> Our previous attempt to "promote" the spec as a RFC didn't get much
> feedback (
> https://lists.w3.org/Archives/Public/ietf-http-wg/2020JulSep/0020.html),
> so we are in the process of submitting the spec as independent submission.
>
> I'm glad to see that there seems to be a desire to standardize something
> on this subject (PREP, Braid...).
>
> Would you and Michael be available to discuss how both specs can work
> together?
>
> Best regards,
>
>
> On Mon, Oct 23, 2023 at 7:30 AM Rahul Gupta <cxres=
> [email-masked]> wrote:
>
>> Dale,
>>
>> Thank you (again!) for your interest and feedback. See responses
>> interleaved!
>>
>> BR/Rahul
>>
>> ------- Original Message -------
>> On Monday, October 23rd, 2023 at 3:00 AM, [email-masked] <
>> [email-masked]> wrote:
>>
>>
>> > Rahul Gupta cxres=[email-masked] writes:
>> >
>> > > I have submitted my proposal for the Per Resource Events
>> > > https://github.com/CxRes/prep Protocol as an
>> > > Internet-Draft
>> > >
>> https://datatracker.ietf.org/doc/draft-gupta-httpbis-per-resource-events/
>> >
>> >
>> > A few bits:
>> >
>> > - Section 5.1 seems to introduce "event fields" but it doesn't provide
>> > any description of what they are. This is particularly treacherous
>> > because the use of "fields" in "event fields" evidently does not mean
>> > exactly the same thing as "header fields" (as event fields aren't
>> > header fields), but are likely to have the same names as header
>> > fields, and event fields have values in some (different) way, which
>> > values have similar semantics to the corresponding header field
>> > values.
>>
>> I do explicitly define "event fields" in 3.5 Terminology.
>>
>> Would you like me to expand on it or put it in a different manner? Or
>> would you like a more explicit link back on first use in each major section?
>>
>> >
>> > - A few fairly complete examples would help. In particular, I think
>> > that the concept is that PREP is started by the client sending a GET
>> > containing the appropriate headers, then the server sends the header
>> > of a response containing the appropriate headers, then the first part
>> > of a multipart body and the first body part (containing the current
>> > state of the resource), then a multipart divider ... then possibly a
>> > delay ... then a second body part (containing the first update), then
>> > a multipart divider ... then possibly a delay ... But I don't think
>> > this is stated clearly near the beginning, nor is a complete example
>> > given.
>>
>> Given that you seem to describe PREP so well, it feels like the situation
>> is pretty good ;). There is also a cultural aspect here, I am still
>> relatively unfamiliar with the expectations of IETF/RFC readers. So, let me
>> ask you how you might approach this…
>>
>> 1. Would you like a complete example, say as an unnumbered section at the
>> end (linked from the introduction)?
>> 2. Do you want me to expand "1.2 How it works" a bit?
>>
>> >
>> > - Do you have an initial application? It always helps to get traction
>> > if you have an existing need that can be satisfied, or better, two or
>> > three.
>>
>> There is interest in Solid community to implement this (This work as I
>> stated in my original post came about because of my work on Solid
>> Notifications Protocol. The community has a real desire in Solid for a
>> simpler notifications system). There is a (public) expression of interest
>> from a private server developer and discussions with open source server
>> implementers. This was held back in part because I only last night released
>> the companion specification that links Solid and PREP, conveniently called
>> Solid-PREP <https://cxres.github.io/solid-prep/protocol/>. So
>> implementations are likely to come online more in time for IETF 119,
>> unfortunately.
>>
>> >
>> > - There's some sort of index at the end, but it's difficult to read, and
>> > it appears to only be a list of places where specified terms appear.
>> > This doesn't add much value, since every tool a person might use to
>> > look at draft-gupta-httpbis-per-resource-events has a string-search
>> > capability.
>> >
>>
>> This index is auto generated by RFC tooling (I only mark words that I
>> want indexed, because I want them recorded as significant terms in the
>> XML). I find the generated index unintuitive too. Please complain loudly :P
>> to the RFC tooling folks as this affects every I-D!
>>
>> > Dale
>> >
>> > _______________________________________________
>> > dispatch mailing list
>> > [email-masked]
>> > https://www.ietf.org/mailman/listinfo/dispatch
>> _______________________________________________
>> dispatch mailing list
>> [email-masked]
>> https://www.ietf.org/mailman/listinfo/dispatch
>>
>
> _______________________________________________
> dispatch mailing [email-masked]://www.ietf.org/mailman/listinfo/dispatch
>
>