mlswg / mls-extensions

Other
6 stars 7 forks source link

group context extension update proposal #27

Closed franziskuskiefer closed 2 weeks ago

franziskuskiefer commented 6 months ago

A proposal type to update rather than replace group context extensions. This is somewhat related to #26 as it allows to update extension data more efficiently.

cameronvoell commented 6 months ago

This looks great so far. I have a few questions.

Currently MLS RFC section 12.2-3.8 specifies that a proposal list for a commit is invalid if it has more than one Group Context Extension Proposal.

  1. I'm guessing the same reasoning for that rule might mean that a commit can not have more than one "gce_update" proposal, is that correct?

  2. Is it right to assume that a single commit could not contain both a "gce_update" proposal and the group context proposal?

When the extension exists in the group context, the values are extended with the values from the extension list item.

  1. For the above line, is it correct to say that the values for the extension that exists in group context are "replaced by" the values of the extension from the gce_update proposal, or does "extended with" mean something slightly different in this context?
franziskuskiefer commented 6 months ago
  • I'm guessing the same reasoning for that rule might mean that a commit can not have more than one "gce_update" proposal, is that correct?
  • Is it right to assume that a single commit could not contain both a "gce_update" proposal and the group context proposal?

Good points. Yes, I'll add validation rules like this here. In particular: A commit is invalid if it contains more than one gce_update proposal, or a gce_update and group_context_extensions.

3. For the above line, is it correct to say that the values for the extension that exists in group context are "replaced by" the values of the extension from the gce_update proposal, or does "extended with" mean something slightly different in this context?

The extension values are merged. This should be more specific indeed. But the main point of this proposal is to not replace, but merge the values. What wording would you suggest?

raphaelrobert commented 3 months ago

@franziskuskiefer This was never presented/discussed on list or at a meeting. Is this still something you want to get in?

rohanmahy commented 1 month ago

This extension suffers from two problems:

rohanmahy commented 1 month ago
  • I'm guessing the same reasoning for that rule might mean that a commit can not have more than one "gce_update" proposal, is that correct?

It seems perfectly reasonable to have more than one gce_update proposal as long as the same extension is not referenced in more than one gce_update.

  • Is it right to assume that a single commit could not contain both a "gce_update" proposal and the group context proposal?

agreed

Good points. Yes, I'll add validation rules like this here. In particular: A commit is invalid if it contains more than one gce_update proposal, or a gce_update and group_context_extensions.

  1. For the above line, is it correct to say that the values for the extension that exists in group context are "replaced by" the values of the extension from the gce_update proposal, or does "extended with" mean something slightly different in this context?

The extension values are merged. This should be more specific indeed. But the main point of this proposal is to not replace, but merge the values. What wording would you suggest?

for a given extension, you should be able to add a value, update its value, or remove the extension.

franziskuskiefer commented 1 month ago

Oh I totally lost track of this one. I agree @rohanmahy that this isn't fully fleshed out. Seeing that #26 got merged I think the question is if #26 is doing the right thing and if it may cover the use case here as well. Or if it's better to have a more light weight mechanism. In any case would this one need to be adapted to work in the context of #26.

raphaelrobert commented 2 weeks ago

In that case, I'll close this for now. Feel free to open it again, if and when you start working on it.