w3c / webmention

Webmention spec
https://www.w3.org/TR/webmention/
112 stars 46 forks source link

Remove Salmentions? #37

Closed sandhawke closed 8 years ago

sandhawke commented 8 years ago

Aaron and I noticed a problem with the normative references. There's a W3C process rule that specs aren't allowed to normatively refer to unstable technologies, because then conformance could change after-the-fact.

But aside from the process issue, which we could address other ways, I think the Salmention clause in Webmention isn't a good idea. The spec says:

A Webmention update implementation MAY support updating data from children, or other descendant objects of the primary object (e.g. a comment h-entry inside the h-entry of the page). If an implementation does support this, it MUST support it according to the [Salmention] extension specification (AKA a "Salmention implementation").

First off, I find that text very hard to understand. What are "children" and "descendant objects"? Those terms aren't defined in the spec, as far as I can tell, and mean nothing to me. Do I need to understand what they mean? By using "MUST" this text says I do. Are there test cases for this?

I do understand Salmention, I think. It's the practice that when your server receives a webmention and incorporates the content that mentions you into your own content, you should issue your webmentions again, so that "upstream" sites (things you point to) can see the "downstream" content (sites that point to you). But isn't that upsteam relaying is already implied by:

If the source URL was updated, the sender SHOULD re-send any previously sent Webmentions, (including re-sending a Webmention to a URL that may have been removed from the document), and SHOULD send Webmentions for any new links that appear at the URL.

... although maybe I don't understand that correctly. I think it means "If the source Resource was updated".

So, in effect, by following that SHOULD you're doing Salmentions without even knowing it, if you happen to include into your content any content that mentions you (with suitable provenance).

In short, can we remove the Salmentions text? And if not, can someone rephrase it in a way that makes quite plain the entirety of what I need to know in doing a complete and conformant Webmention implementation?

dissolve commented 8 years ago

Hmm, quite understandable how this got confusing. Originally update webmentions were only sent when authoritative data was updated, not when references were updated by webmention. This is what led to salmention being an extension.

The text you pointed to just says "if the source URL was updated" which does not say anything about which data was updated or if it was updated by receiving webmention or not.

something a bit clearer might be along the lines of

A Webmention update implementation MAY support updating data which is not part of the primary object. in response to a received webmention. If an implementation does support this, it MUST support it according to the [Salmention] extension specification (AKA a "Salmention implementation").

This at least puts it in to the same context as the previous paragraph, but I'm not sure thats terribly great since these are pretty much the only references to "primary object".

sandhawke commented 8 years ago

Fwiw, "primary object" isn't defined either. I think it's importantl to imagine people using webmention without microformats, or any kind of semantic markup. That kind of thing has to either be required by the spec or kept cleanly out of the spec. It seems a bit like it's creeping in with this kind of language.

sandhawke commented 8 years ago

Also, since we can't normatively refer to Salmention (since it's not formally stable), if we're going to include Salmention stuff here, I believe we need to spell out, right here in the Webmention spec, whatever Webmention implementors have to do.

And my point is... as I understand Salmention, Webmention implementors already have to do everything Salmention requires, which is to send mentions on upstream. (Or at least, the spec says they SHOULD send mentions when the content changes, so that amounts to Salmention propagation.)

sandhawke commented 8 years ago

Someone asked me privately about this W3C Policy on normative references. Full details at https://www.w3.org/2013/09/normative-references ( linked from https://www.w3.org/Guide/ )

dissolve commented 8 years ago

Fwiw, "primary object" isn't defined either.

I totally agree and thats what i noticed about it too, it doesn't fit.

I think there are several options here but the simplest would probably be to say simply that salmention implementation MUST resend webmentions when an update is done for any reason (including those caused by receiving a webmention)

sandhawke commented 8 years ago

That MUST would be in the salmention spec, right? And webmention could take out the normative text about salmention. That sounds reasonable to me

aaronpk commented 8 years ago

This has been fixed in the latest version. The section on sending webmentions now explicitly says that if a comment is shown on the page, that should be treated as an update of the page. For receiving, it now says implementations may wish to support salmention.