Write Abstract Protocol
(As @mitar has often pointed out) as we get closer to proposing an actual IETF Braid Working Group, it could become worthwhile to write up a formal specification for the Abstract Braid protocol—the core concepts separated from any transport like HTTP.
This spec would help people create Braid-compatible specs for new transports, by articulating the concepts that need to be mapped into any particular transport spec. This spec would generalize:
- Braid-HTTP
- Braid-WS
- Braid-WebRTC
- etc.
We have a couple very drafts of such a thing floating around:
- https://braid.org/demo/interact#the-braid-model
- https://wickie.invisible.college/braid/protocol/abstract
I can help here with some questions for the notifications portion that I articulated the development of PREP:
- How does a client discover notification capabilities, ie what is the structure of a discovery request?
- How does a client request notifications, ie what is the structure of subscription request?
- What customization for notifications can a client request (imho these are very limited because every customization makes life harder for intermediaries and takes us away from the layering benefits of REST)?
- What is the structure of the response if there is an error or resource is not available?
- What is the structure of the response if resource is available, but there is an error in sending notifications or notifications are not available?
- What is the structure of response ie how does it frame historic patches, the current representation and then notifications?
- What does a notification look like when:
- only events are sought?
- events and patches are sought?
- what do the patches look like?
- a more processed combination of the two are sought?
- How and when does server terminate notifications?
- How and when does client terminate notifications?
I believe there is a protocol independent answer for each of these questions! I hope this helps...
This is a wonderful list @CxRes! Thank you! I am glad that you've put so much thought into this, and that we can now benefit from your insight and organized mind on the topic.
If I'm understanding correctly, this is essentially a list of questions that a protocol designer should answer in order to fully-specify a subscription/notifications protocol over any transport. If the designer has answered all these questions, I suspect that should be enough to fully specify the protocol!
I would not say fully-specify, but these were the questions I came up with after I had made a proto-version of PREP. It should help mostly-specify a notifications protocol.
One of the benefits of putting the list out (selfishly) is that others can identify blindspots!