Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add alternative multiselect proposal #223

Closed
wants to merge 1 commit into from
Closed

Add alternative multiselect proposal #223

wants to merge 1 commit into from

Conversation

bigs
Copy link
Contributor

@bigs bigs commented Oct 25, 2019

Potential successor for #95. Initial work by @raulk and @marten-seemann. Surfacing it here to start a discussion.

Goal

Achieve enough consensus to start more serious prototyping by next Wednesday, October 30.

Needs

Concerns

I'll let @Stebalien speak for himself, but in our conversation he mentioned that, while he's interested in this iteration, he'd like for multiselect to remain as composable as is possible. While having a compact, prefix-analyzable binary format like that described in #95 is nice, switching to protobuf does make life easier for development and wouldn't sacrifice too much. He's a bit worried that this represents an over simplification

Notes & Thoughts

  • Dynamic IDs: @Stebalien pointed out that his proposal is in agreement with the "receiver chooses the dynamic ID" approach, which is great. His proposal would require a slight change to be useful for the packet case, however. We'd need to add the ability to have a sender initiate with multiselect/string, for example, and then have a receiver reply with multiselect/dynamic, mentioning the same protocol string the sender sent and then assigning it a dynamic ID.
  • Payloads: Pretty much every message could be extended to have an optional payload, making it more packet-orientation friendly.
  • Parsing: Protobufs make parsing easier, but prefix inspection more difficult. I've already written a simple tokenizer for reading varints and varint delimited strings/bytestrings, so this shouldn't be an issue. For that reason, it may be nice to use a more compact binary format as described in the original proposal.

Cole's Conclusion

I think we could pick up #95 and modify it with some of the revelations from this iteration. In particular:

  • Keep the compact binary format.
  • Adopt the new negotiation flow by adapting messages like multiselect/string and multiselect/dyanmic to match the Offer and Use flow.
  • Optional payloads on most messages.
  • Reject messages are necessary:
    • Reject protocol (referencing dynamic ID or string)
    • Reject transport (prefer another transport)

@bigs
Copy link
Contributor Author

bigs commented Oct 25, 2019

Jumped the gun with this, we'll put this up for discussion early next week.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant