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

Webmention message is not clearly mapped to linked data #51

Closed
melvincarvalho opened this issue Jun 13, 2016 · 50 comments
Closed

Webmention message is not clearly mapped to linked data #51

melvincarvalho opened this issue Jun 13, 2016 · 50 comments

Comments

@melvincarvalho
Copy link

The webmention spec lack interoperability with linked data.

What is needed is an explicit translation of

source=https://waterpigs.example/post-by-barnaby&
target=https://aaronpk.example/post-by-aaron

Into a format that can be implemented by those working with web standards such as JSON LD, Turtle, AS2 etc.

While the spec clarifies the namespace that could be used in the predicate position. The mapping remains unclear for implementors and needs to be stated explicitly.

It is clear that webmention alone suffers from the "webmention spam" problem leading to possible DDoS attacks. The argument I have heard is that while webmention is small, it's not a problem, but if it becomes a W3C REC extensibility will become critical. The samlention and vouch system essentially are replicating work done elsewhere in the W3C such as digital signatures and verifiable claims. Rather than replicating this work twice, or forking the working group, I would strongly suggest aligning the work now by adding an example to the spec to explicitly show how implementors can send source and target to a server using linked data (JSON-LD might be a good fit).

But this mapping is currently under specified. I suggest using this issue to come up with the closest mapping possible.

@melvincarvalho
Copy link
Author

cc @sandhawke

@aaronpk
Copy link
Member

aaronpk commented Jun 13, 2016

I believe this is the same issue as #9? The outcome of that issue was adding a document at http://www.w3.org/ns/webmention and this sentence to the spec:

If your implementation wants to treat the source and target parameters as URIs, you can prefix the terms with http://www.w3.org/ns/webmention#.

(from https://www.w3.org/TR/webmention/#uris-for-form-encoded-properties)

What more is needed to "clearly map" the message to linked data?

@melvincarvalho
Copy link
Author

@aaronpk how would you write the webmention message in linked data? (pick any serialization that you prefer)

@aaronpk
Copy link
Member

aaronpk commented Jun 13, 2016

@melvincarvalho Since you're more familiar with Linked Data perhaps you could provide an example? If there isn't enough information provided in that paragraph and in the namespace document to do so then maybe we can clarify those.

@dissolve
Copy link

Maybe two examples of how you could see it being serialized in json-ld? I
think that would be really helpful.
On Jun 13, 2016 11:57 AM, "Aaron Parecki" [email protected] wrote:

@melvincarvalho https://github.com/melvincarvalho Since you're more
familiar with Linked Data perhaps you could provide an example? If there
isn't enough information provided in that paragraph and in the namespace
document to do so then maybe we can clarify those.


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
#51 (comment),
or mute the thread
https://github.com/notifications/unsubscribe/ACbZ4VbGvpd5IT-ISw6746uDsYzMt486ks5qLX2tgaJpZM4I0a-K
.

@akuckartz
Copy link

👍 for the constructive discussion by all participants in this issue!

@sandhawke
Copy link
Contributor

What's unclear? What's a reasonable interpretation of the spec other than

@prefix : <http://www.w3.org/ns/webmention#>.
[] :source <https://waterpigs.example/post-by-barnaby>;
   :target <https://aaronpk.example/post-by-aaron>.

?

Of course you're always free to assign one or more URLs instead of using a blank node, but that's your business.

@melvincarvalho
Copy link
Author

melvincarvalho commented Jun 15, 2016

@sandhawke thanks for the example.

A possible interpretation could be:

<> 
   <http://www.w3.org/ns/webmention#source> <https://waterpigs.example/post-by-barnaby>;
   <http://www.w3.org/ns/webmention#target> <https://aaronpk.example/post-by-aaron>.

or

<> a <http://www.w3.org/ns/webmention#Webmention> ;
   <http://www.w3.org/ns/webmention#source> <https://waterpigs.example/post-by-barnaby>;
   <http://www.w3.org/ns/webmention#target> <https://aaronpk.example/post-by-aaron>.

Of course you're always free to assign one or more URLs instead of using a blank node, but that's your business.

How many implementors would have been able to work that out without the aid of an example? It wasnt immediately obvious to me. It may be that a blank node MUST be used, or MAY be used.

There are some quite subtle things going on.

  • translation of a string to an URI, using inferences from the spec
  • insertion of the blank node syntax [](Note: need to do this in JSON LD)
  • adding the prefix (you may or may not wish to do that)
  • selection of the serialization (turtle or JSON LD)

An example in the spec helps in a number of ways.

  • Shows unambiguously what it means
  • Provides a way to easily get started e.g. with cut and paste
  • Explains to implementors how to code this

Why not agree on an example so that implementors will be able to understand how to do this.

Also, although I prefer turtle personally, would JSON-LD not be more appropriate for this group?

@melvincarvalho
Copy link
Author

PS for those less familiar with linked data the example above might be instructive as to how it works.

Essentially its a string of 3 URLs surrounded by <> to show key, value pairs tied to a subject. You can also have say a string as an object and you would put them in "" instead of <>.

I mention this because I started out thinking the semantic web was super complex and it took me quite some time to realize that it's actually super simple and boils down to the above.

@sandhawke
Copy link
Contributor

sandhawke commented Jun 15, 2016

The problem with making those design decisions is that we don't have use cases for this on which to make those decisions. At least I haven't seen any uses cases that make sense to me and involved interoperating using webmentions written in an RDF syntax.

The problem with providing an example is that people might think they MAY send webmentions that look like that, but that's not true.

@melvincarvalho
Copy link
Author

It is easy to construct a use case. Alice is using a system that supports AS2 or Solid or Web Annotations or LDP or any number of the growing Linked data systems.

Someone mentions her in the comments of a post of another person's, and she would like to see when people are talking about her. In fact I came across this very problem in solid social it's also a natural way to grow social network participation.

I would like an example to send to Alice's server so that she can become aware that she was mentioned. What is the JSON LD that I send? Here is where an example would be needed.

This is underspecified, and it's up to the authors to decide. Possible sensible choices here.

  • The example shows a blank node or misses out the @id (json-ld)
  • The sender MAY send a field in the @id field, I guess it's impossible to stop them
  • The example will indicate that the object strings are translated to URIs (this is not always the case e.g. in timbl's webid the preferredURI is a string!)

Webmention message should be able to work, with those implementing AS2, rather than reinventing the wheel. An example is needed for this.

@melvincarvalho
Copy link
Author

Clarification of "Webmention message should be able to work".

Probably better to read : "the webmention message semantics should ..."

@aaronpk
Copy link
Member

aaronpk commented Jun 15, 2016

@melvincarvalho You may wish to read this very thorough documentation of a live implementation that uses the existing Webmention spec to send notifications between JSON-LD documents: http://lombardpress.org/2016/04/16/iiif-webmentions/

He was able to make a system that interoperates with other JSON-LD servers, and seems to have no problem sending the form-encoded webmention payload to do so.

I encourage you to implement sending and receiving webmentions with this implementation to get a sense of how a real world implementation works with JSON-LD documents.

@sandhawke
Copy link
Contributor

sandhawke commented Jun 15, 2016

@melvincarvalho that use case demonstrates exactly why an example would be harmful. If someone tries to send a webmention encoded in json-ld (or anything other than form encoding) the receiver isn't obligated to understand it. By advertising an endpoint with rel=webmention I'm promising to understand form encoded webmentions, no more.

If you want to advertise an endpoint that commits to more than form encoded source and target, use a different rel. That's what I keep telling you. Webmention is what it is, and if you want something else, like something with authentication or json-ld, which are totally reasonable things to have, then just do that (with some other rel). It's not helping anyone to try to turn webmention into something different.

@melvincarvalho
Copy link
Author

@sandhawke I disagree with this. It's rather a bad idea, from an implementation perspective to have two different endpoints, one that understands JSON and one that understands form variables. And it's perfectly reasonable to have an endpoint that understands a variety of formats. In most languages it's quite easy to switch on the payload that you get, to determine what it is.

This groups is already developing endpoints around JSON-LD, around AS2 and this effort is proposing form encoded variables.

I think it's just about OK if webmention is a note. But a REC could be dangerous. Consider drupal or wordpress being persuaded to adopt it. Now you have a massive DDoS attack that this work is not able to counter as it stands. It will need to innovate work such as signatures or verified claims, which is already going on in the W3C, and being serialized in JSON LD.

You may have a differing opinion on this (and its ok to disagree), but I think it would be a mistake to reinvent the wheel here. And have two efforts and/or fork the WG. The "doubles" version should be a flattened form of the "triples" version. By its very nature the triples version is more expressive, and information will be lost going one way to another. So come up with a triples example, and that's canonical. Then have the doubles version unchanged.

@sandhawke
Copy link
Contributor

@melvincarvalho I don't agree with your theories about how protocols can evolve in place. But I've said that many time before in many ways, and this is going in circles, yet again and again and again, so I'm done done done.

Meanwhile, if you see a DDoS attack vector with webmention, then raise that as it's own issue, unrelated to RDF. Maybe it'll turn out that the solution involves adding RDF, as you seem to think.

@melvincarvalho
Copy link
Author

melvincarvalho commented Jun 20, 2016

@sandhawke thanks for your input. I know you feel strongly here, so we'll have to disagree on this one. To avoid needless repetition I suggest the DRY ("Dont repeat yourself") principle.

re: webmention spam, it is an acknowledged issue and an issue ( #27 ) on DDoS was previously opened. I think the resolution was that we dont know how bad it will be, and that the vouch extension may be a way to help.

I dont really know what my supposed theories about "how protocols can evolved in place" are or what that means, so I'll take your word for it.

Linking this back to the original thread my concern is about interoperability. What's clear is I think it's more of an issue than you, and that's fine. What I would want to see is the authors of this spec (and perhaps you) agreeing how this would look in JSON-LD ... maybe even writing out an example in a github issue would be valuable for implementors? I ask because there are a number of ways of doing it. What do you think?

I know you are a fan of examples. So I thought of a practical one that we've discussed in Solid. How does a user login to a site using the user@host type memorable identifier? Well many of us here implemented webfinger and I think it's fair to say that consensus was that it's not a well liked protocol. You could use webmention here in a two step process.

    1. Send a webmention to a server with a user's home page
  • 1.1 The user has a link to their email on their home page using linked data (e.g. foaf : mbox ) -- I've implemented this alreday
  • 1.2 The server then adds that information to it's knowldge base (ie this URL is associated with the email address user@host)
  • 2 The user can now login with a user@host string which may be memorable to type and perhaps easier

Abstracting this principle whenever you would like a server to know about a "rev" style link where typical follow your nose will not yield the knowledge you need, you can send the target a "hint" which will be useful in future.

I hope this example demonstrates that this type of message (im talking about the message body here, and not the protocol) has wider applicability in the social web, and would be appropriate in use cases for linked data based systems. And vice versa.

@melvincarvalho
Copy link
Author

melvincarvalho commented Jun 20, 2016

Proposal:

@prefix : <http://www.w3.org/ns/webmention#>.
[] :source <https://waterpigs.example/post-by-barnaby>;
   :target <https://aaronpk.example/post-by-aaron>.

Given a lack of other suggestions, should we take this (Sandro's suggestion) as the official canonical example in linked data of a webmention?

EDIT: replaced the word "form" with "example"

@dissolve
Copy link

dissolve commented Jun 20, 2016

Why would you need this to be in json-ld at all? (for the webmention part)

The server fetches and parses the linked data from the users homepage. The server can store that data any way it chooses, thats outside of the spec.

The webmention is just telling the server to fetch that page. So all it has to do is implement a webmention endpoint per the spec.

To rewrite your example a little.

  1. The user has a link to their email on their home page using linked data (e.g. foaf : mbox )
  2. Send a webmention to a server with a user's home page
    1. The server fetches the user's homepage and parses that linked data into any internal format
    2. The server then adds that information to it's knowldge base (ie this URL is associated with the email address user@host)
  3. The user can now login with a user@host string which may be memorable to type and perhaps easier

Interesting to note, If you remove logging in with user@host and instead login with the homepage url, this looks a LOT like indieauth. Instead just fetch the data when the user types their homepage url in to a login form.

I would also note that this example doesn't really make sense unless the home page is linking to the server it sends the webmention to, otherwise, there really isn't a mention and the server wouldn't generally send a webmention.

@aaronpk
Copy link
Member

aaronpk commented Jun 20, 2016

@melvincarvalho Would you please give this document that @rhiaro wrote a read and see if maybe this answers your questions? https://github.com/rhiaro/wm-ldp/blob/master/index.md

@melvincarvalho
Copy link
Author

@aaronpk this actually highlights this issue.

@rhiaro and @sandhawke have written it out in slightly different ways. The implication is that there's an clear and obvious way to do this. This shows that is not the case.

This potentially confuses implementors and harms interop. Pick an example and just go with that.

  • Sandro's way or Amy's way (pick one, I suggest) both are reasonable
  • Choose between turtle or JSON-LD
  • If JSON-LD is chosen then make sure the context (described in Amy's post) returns something

@sandhawke
Copy link
Contributor

Giving people an example like this would provide a false illusion of interoperability.

@aaronpk
Copy link
Member

aaronpk commented Jun 21, 2016

Unless I am mistaken about how Turtle is parsed and is able to interop, both their examples end up being equivalent.

In any case, I am happy to end this thread by recommending people read @rhiaro's document. The context in her example has been live for some time now: http://www.w3.org/ns/webmention

Like @sandhawke said, putting an example of a payload that is not form-encoded into the spec would actually do more harm than good.

@sandhawke
Copy link
Contributor

sandhawke commented Jun 21, 2016

Aaron, Rhiaro's example serialization and mine are different in a way that would often not matter, but might in some deployment situations. Without having real use cases, I'm there's no way to say which would be better.

@sandhawke
Copy link
Contributor

Melvin, it would be good to have the working group make a final decision and wrap up this issue. It sounds like you might be ready to make a concrete proposal. If so, please do that.

@melvincarvalho
Copy link
Author

Giving people an example like this would provide a false illusion of interoperability.

This confirms what I have been stating ie that webmention is not interoperable. That's my concern.

I would propose to:

  • take sandros syntax (using the bnode)
  • use JSON-LD as a serialization (meaning the @id is omitted)
  • have an example in the spec which shows implementors how they can create a webmention using JSON

@melvincarvalho
Copy link
Author

melvincarvalho commented Jun 21, 2016

@aaronpk thanks for pointing out the context is live in http://www.w3.org/ns/webmention

{
  "@context": "http://www.w3.org/ns/webmention#",
  "@type": "Webmention",
  "source": "https://waterpigs.example/post-by-barnaby",
  "target": "https://aaronpk.example/post-by-aaron"
}

This one ^^.

Note: I think in Amy's document to align with this and sando's example the <> should be a []. <> means properties of the document (so we dont know actually that document is, probably the newly created resource). [] means blank / empty. It probably doesnt make sense to tie source and target to an HTTP document anyway.

@melvincarvalho
Copy link
Author

I'd like to point out one advantage of this serialization for practical use. The type = Webmention allows you to create a generic resource that can receive all kinds of incoming messages. It also future proofs the data structure against name clashes in two ways, one showing that the JSON object is a webmention. The other, more importantly, is that the JSON objects can be easily stored and retrieved via the type, as part of a bigger knowledge base. This is very useful, for example, when using in memory data stores.

@sandhawke
Copy link
Contributor

sandhawke commented Jun 21, 2016

Giving people an example like this would provide a false illusion of interoperability.

This confirms what I have been stating ie that webmention is not interoperable.

Interoperability only makes sense in a context.

With a good standard, all implementations of it are interoperable with each other.

One of the more prominent early uses of the word was in the TCP Interoperability Conferences (I vaguely recall the first one, in Monterey, in 1987), which as I recall were inspired by earlier informal "bake-off" sessions where people got together to see if they could get their TCP implementations to talk to each other properly. By 1987 the community was getting too big to do that. The series turned into Interop, which I guess is still going strong. Wikipedia says, "For every US event, Interop volunteers build a network (called the InteropNet) using tools from various vendors to demonstrate the latest technologies and interoperability."

It makes sense to have have each TCP implementation work with each other TCP implementation. That's how the Internet works. If the TCP implementation on your server isn't interoperable with the the TCP implementation on my laptop, then my browser may not be able to properly connect to your webserver.

On the other hand, the UDP implementation on your server would never be interoperable with the TCP implementation on my laptop. They're different protocols. One would never expect them to interoperate. It makes no sense for them to interoperate. If you say you're making your UDP implementation interoperate with my TCP implementation, then I say that sounds like you're actually making a TCP implementations. If you're saying you want to make your OSI system (the Internet's competition at the time) interoperate with TCP, ... it's kind of nuts, because it's a different stack. TCP fits on top of IP. Running TCP on top of X.25 or something, ... well, that would be a terrible design, at best.

So when you say you want webmention to be interoperable, you have to say what you want it to be interoperable with.

I think webmention interoperability is fine, because all evidence suggests webmention implementations are doing fine at interoperating with other webmention implementations.

What you actually say in the issue introduction, is you want it to be interoperable with "linked data", but that doesn't really parse. Rhiaro's text shows it's easy to make webmention interoperate with linked data systems.

It's like you're trying to make TCP interoperable with JSON. The whole concept is misguided nonsense. I keep thinking if I explain it a little more, you might come to understand it. Very frustrating.

In any case, your proposal is out of order. It's already been decided that we wouldn't use JSON-LD as the syntax.

@melvincarvalho
Copy link
Author

melvincarvalho commented Jun 21, 2016

Interoperability only makes sense in a context.

Yes, I agree. interopable is perhaps a loaded term which can evoke emotion. In order to achieve a balanced conversation I'd suggest avoiding terms like "nuts" or "misguided nonsense"

I appreciate you sharing background but I also have some experience in the social web, being an author of the XG report, the only person on every call there, and having spoken to many people in the social web, one on one.

The fact is, most systems think they are interoperable, but there are barriers and artifacts that get introduced that caused a balkanized social web. I am trying to help to break down those barriers.

It's like you're trying to make TCP interoperable with JSON

That's not accurate. TCP is a transport protocol, and JSON is a serialization. I am trying to align the serialization so that different aspects of the social web can know how to work together by way of example.

Given that we have a triple style serialization that plays well with a number of other groups, both in this WG and the W3C, we should create an example so that those implementors know how to send this kind of message. There may be a slight loss when going from triples to doubles, but that's OK.

At a minimum I would like to agree on what such a thing looks like. There have been differing suggestions here, and I have proposed one. It's not as easy as it first seems. The first step is simply to write out an example we can agree on. I have proposed one.

So when you say you want webmention to be interoperable, you have to say what you want it to be interoperable with.

I thought I did at the top: "that can be implemented by those working with web standards such as JSON LD, Turtle, AS2 etc."

Please dont feel frustrated, I am trying to listen to you, but it's possible for people to disagree on the topic of interop. Essentially I'm trying to build bridges, rather than, create islands.

In any case, your proposal is out of order. It's already been decided that we wouldn't use JSON-LD as the syntax.

Let's break down my proposal into two parts then.

  • 1 . Lets try and agree what a webmention would look like if a typical coder in JSON / AS2 / JSON-LD might like to use this technology, and write it out somewhere.
  • 2 . Let's agree on where that "somewhere" should be. My view is that it should be in the spec for this to be a quality piece of work. But if it's only in the vocab, or only in a footnote or github issue somewhere, that's at least better than what we have today.

At a minimum I think (1) is helpful and please take a look at my proposal above for it, or make a counter proposal. Im totally open to ideas.

@melvincarvalho
Copy link
Author

melvincarvalho commented Jun 21, 2016

Let me just quote openstand which W3C is a member of (I beleive):

Commitment by affirming standards organizations and their participants to collective empowerment by striving for standards that

provide global interoperability, scalability, stability, and resiliency;

https://open-stand.org/about-us/principles/

I'm not trying to score points here, just give an idea of what the word interoperability means to me.

@sandhawke
Copy link
Contributor

sandhawke commented Jun 21, 2016

Please dont feel frustrated, I am trying to listen to you, but it's possible for people to disagree on the topic of interop. Essentially I'm trying to build bridges, rather than, create islands.

What are you trying to build a bridge to? What system would want to interoperate with webmention that can't just speak webmention? There aren't any, because it's really easy to speak webmention.

You're not trying to build bridges between islands, you're trying to tell people to build bridges in a different way because someday somehow maybe it'll make things easier for someone. That's helpful to a point, when it's possible they haven't considered what you're saying, but at some point it becomes rude and annoying.

1 . Lets try and agree what a webmention would look like if a typical coder in JSON / AS2 / JSON-LD might like to use this technology, and write it out somewhere.

Those are all orthogonal to webmention. The webmention spec already says everything one needs, as far as I can tell. If it's missing something, maybe it's missing a section on how all the things you're saying are irrelevant, but I have no idea how to write that in a way that makes sense to you, despite oh so many attempts.

If you want to communicate via JSON or AS2 or JSON-LD or natural language text or whale song, you put that content on the Web. Then, if you want to tell someone about it because that content is about them, you send them a webmention. Those two parts are entirely orthogonal.

One could hypothetically have an alternative version of webmention that used JSON-LD instead of form encoding, but that would be more complicated for no benefit that's not full of handwaving, and the WG has already decided against that.

In order to achieve a balanced conversation I'd suggest avoiding terms like "nuts" or "misguided nonsense"

Weeks of being as clear and patient as I can have completely failed to register on you at all. I thought maybe that more dramatic language would help you realize how your behavior looks to me, and perhaps get you to reconsider your actions here.

@rhiaro
Copy link
Member

rhiaro commented Jun 21, 2016

1 . Lets try and agree what a webmention would look like if a typical coder in JSON / AS2 / JSON-LD might like to use this technology, and write it out somewhere.

2 . Let's agree on where that "somewhere" should be. My view is that it should be in the spec for this to be a quality piece of work. But if it's only in the vocab, or only in a footnote or github issue somewhere, that's at least better than what we have today.

But it's not as simple as just putting an example of the serialisation in the spec. If we did that, we'd have to describe how a webmention endpoint should handle it, too. With that, comes a bunch of other considerations.. basically another spec. A different spec, for generic message passing in linked data, outside of webmention's well defined scope. I agree that's important, and you're invited to help work on it. But it's not webmention.

@melvincarvalho
Copy link
Author

melvincarvalho commented Jun 29, 2016

Weeks of being as clear and patient as I can have completely failed to register on you at all. I thought maybe that more dramatic language would help you realize how your behavior looks to me, and perhaps get you to reconsider your actions here.

You opened your dialogue on this issue with "If you just want to be a pain to the WG". If this is being as clear and patient as you can, I would not wish to see you in an impatient mood. I will reiterate that your tone is not conducive to a productive dialogue.

If it's missing something, maybe it's missing a section on how all the things you're saying are irrelevant

As above.

What is clear is that I consider interop with LD an important issue and you dont. This has been established.

My aim in this thread is not to argue with you. My aim is to write out an example in JSON LD, which you originally said you'd help with. And that you wrote out in turtle. There is also a similar way that Amy wrote it. Aaron provided some useful information in that the LD context is there. My aim is to pick one serialization between yours and Amy's and write in LD. Ive made a number of suggestions and proposals here. It would be helpful to either agree with one of them, ask for clarification, or propose an alternative.

@rhiaro whether or not the example should go in the spec, I think it's valuable to have an example written down somewhere at least, and a github issue was suggested instead of the mailing list. What do you think about my suggestion of using the serialization in your document but replacing <> with []?

@melvincarvalho
Copy link
Author

To clarify

Proposal 1

{
  "@context": "http://www.w3.org/ns/webmention#",
  "@type": "Webmention",
  "source": "https://waterpigs.example/post-by-barnaby",
  "target": "https://aaronpk.example/post-by-aaron"
}

Proposal 2

{
  "@context": "http://www.w3.org/ns/webmention#",
  "source": "https://waterpigs.example/post-by-barnaby",
  "target": "https://aaronpk.example/post-by-aaron"
}

Is there any preference between these 2? I favour proposal 1.

@melvincarvalho
Copy link
Author

@rhiaro what do you think about putting such an example in the webmention namespace vocab document?

@sandhawke
Copy link
Contributor

Repeating myself: I'm strongly opposed to the WG endorsing an example, because it would cause more problems than it would solve. Also, you agreed your use of the term interop was misleading, then you went ahead and kept using it.

@melvincarvalho
Copy link
Author

it would cause more problems than it would solve

Could you elaborate on what problems it would cause? Are they things you've run into, or theoretical issues?

@sandhawke
Copy link
Contributor

sandhawke commented Jul 5, 2016

People tend to think examples in a spec are something that should work. So if we put an example in the spec, people might think it would work. But since Webmention endpoints don't accept JSON-LD, the example won't work (on a typical webmention endpoint). To me, that sounds like a problem.

@akuckartz
Copy link

I agree that misleading examples are a problem. But this problem can be reduced by including an appropriate comment in the example.

@sandhawke
Copy link
Contributor

What would it say? " Here's a thing you shouldn't do with webmention" ? Maybe a big red X over it?

@tantek
Copy link
Member

tantek commented Jul 5, 2016

I think a better way to resolve this, now that we have accepted Linked Data Notifications as an Editor's Draft, is to transfer this issue there and close this one with no changes to the Webmention spec which is already in CR.

That is, Linked Data Notifications should document mapping Webmention to linked data, rather than asking a mature spec that has no other mentions or even informative LD dependencies to do anything.

@rhiaro if that sounds ok to you, could you open an issue on Linked Data Notifications accordingly?

@melvincarvalho you indicated in #social WG IRC today that accepting Linked Data Notifications as an ED and documenting a mapping would be acceptable to you as a resolution to this issue (51). http://socialwg.indiewebcamp.com/irc/social/2016-07-05/line/1467741287976
Thus as soon as @rhiaro opens the corresponding issue on Linked Data Notifications I'd like to have @aaronpk close this issue with the "Commenter Satisfied" label.

@rhiaro
Copy link
Member

rhiaro commented Jul 5, 2016

LDN actually already has a webmention example in json-ld. I'll also document how to convert between them in SWP if that seems appropriate.

@sandhawke
Copy link
Contributor

@tantek, procedurally and socially, I think it's better to have commenters close their own issue if they're satisfied.

@melvincarvalho
Copy link
Author

People tend to think examples in a spec are something that should work. So if we put an example in the spec, people might think it would work. But since Webmention endpoints don't accept JSON-LD, the example won't work (on a typical webmention endpoint). To me, that sounds like a problem.

In that case would it be reasonable to take at two step approach.

You did say on the ML

I'll reply about the mapping issue, or someone else will, if you raise it on github.

  1. Firstly decide on what a reasonable mapping of a webmention to JSON-LD should look like. I have made two proposals.
  2. Have a discussion on the most appropriate place to put that.

@sandhawke
Copy link
Contributor

And my reply is, again and again and again, the webmention spec is not the right place for this, because RDF is not part of the webmention protocol. Above, you've been told two places that are the right place for this. Please take your input there, and close this issue.

@melvincarvalho
Copy link
Author

@sandhawke I disagree with your analysis.

My original post states that webmention lacks interoperability. I have gone over why this is advantageous. It is possible that I am over rating the importance of interop, but Im not persuaded of that. The W3C does have a commitment to interop. This would be perhaps an interesting meta discussion. Therefore, my original objection stands. If a disinterested party were to weigh in on the topic of interop I would be willing to be persuaded.

I've not been persuaded by your argument that a mythical developer will misread the spec, in such a way as to send JSON to a webmenion endpoint and get back an error message. Is there any evidence for this? And given content negotiation is both fundamental to the web, and to cross origin messaging, it is a reasonable expectation for endpoints and developers to be able to work with multiple formats.

In any case, I would like to come to a consensus on what a webmention mapping example would look like in JSON-LD and this has been seconded on this thread. Where do you suggest raising an issue for this as we have 3 proposals now.

@melvincarvalho
Copy link
Author

melvincarvalho commented Jul 10, 2016

@tantek if there is a reasonable expectation of LDN to be published by the WG in some form (e.g. note or rec) and it contains an example of a webmention mapping, in linked data so that developers can see what it might look like, I think that works for me.

@melvincarvalho
Copy link
Author

Closed as requested, pending new information. Would still appreciate pointers regarding my question above on where to map out webmention to linked data.

@rhiaro
Copy link
Member

rhiaro commented Jul 19, 2016

@melvincarvalho In progress in SWP, see commit as a start ^

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

No branches or pull requests

7 participants