Melvin,
Going this route is not going to address the issues people have. The draft is oh-so-very-close to completion. I think that folks are largely OK with the text, the procedures, and the data format. There are still editorial matters, but nothing controversial.
The only sticky issue is use of TLS or not. But it’s a big one and we ought to get this right.
Without requiring use of TLS, there exists the possibility that a person queries for “custome...@somebank.com” and a thief intercepts that request and provides bogus information. The user might trust that information, call a discovered phone number, and provide the thief with information that the thief can use to empty the user’s bank accounts.
Requiring TLS, though, is viewed as a roadblock to deployment. For sites where security simply is not that important, it is a valid question as to why TLS must be mandated.
Some clients are in the unfortunate position of not knowing whether security is or is not important for any given query. Some clients know, though. If I had software on my server that facilitates an OpenID login, it would know to use TLS only. My email client, though, does not know how important security is.
The current text that’s proposed allows the client to select the transport. I think that’s OK, but we just need to provide some additional guidance to client writers. Perhaps we even suggest that an indicator should be provided to the user so they will know if HTTPS was used to retrieve the data. But it would have to be ONLY HTTPS was used, as a promotion from HTTP to HTTPS cannot be trusted. The “visible trust” element is presently missing.
Anyway, I think working through that language might be a good compromise. Clients that need security will get it. Clients that do not care may or may not. Providing a visual indicator to the user, where appropriate, might help address the MITM attack concerns.
We just need to decide:
· HTTPS only
· Either HTTPS or HTTP (or both)
There are those firmly sitting on both sides and that’s the problem. We need to just pick a direction and go with it. Ironing out the wording is far less difficult than reaching agreement on the two choices.
Now to your plea to just get it done. Here’s what I suggest: how about we just say HTTPS only and publish it. Then, we could later introduce an HTTP fallback option via a separate or updated RFC. The issue with introducing HTTP as an option now is the security complexity. That’s really holding us up. So, if we table that issue and just go with HTTPS for the moment, we at least have a working solution that starts out as a secure solution. We could form a WG to hammer out how to soften the security requirements once we get the HTTPS-only version out the door. (There are other things I believe we probably need to tackle as a part of that WG, such as definition of properties, new “rel” values, etc.)
Paul
Melvin,
Going this route is not going to address the issues people have. The draft is oh-so-very-close to completion. I think that folks are largely OK with the text, the procedures, and the data format. There are still editorial matters, but nothing controversial.
The only sticky issue is use of TLS or not. But it’s a big one and we ought to get this right.
Without requiring use of TLS, there exists the possibility that a person queries for “custome...@somebank.com” and a thief intercepts that request and provides bogus information. The user might trust that information, call a discovered phone number, and provide the thief with information that the thief can use to empty the user’s bank accounts.
Requiring TLS, though, is viewed as a roadblock to deployment. For sites where security simply is not that important, it is a valid question as to why TLS must be mandated.
Some clients are in the unfortunate position of not knowing whether security is or is not important for any given query. Some clients know, though. If I had software on my server that facilitates an OpenID login, it would know to use TLS only. My email client, though, does not know how important security is.
The current text that’s proposed allows the client to select the transport. I think that’s OK, but we just need to provide some additional guidance to client writers. Perhaps we even suggest that an indicator should be provided to the user so they will know if HTTPS was used to retrieve the data. But it would have to be ONLY HTTPS was used, as a promotion from HTTP to HTTPS cannot be trusted. The “visible trust” element is presently missing.
Anyway, I think working through that language might be a good compromise. Clients that need security will get it. Clients that do not care may or may not. Providing a visual indicator to the user, where appropriate, might help address the MITM attack concerns.
We just need to decide:
· HTTPS only
· Either HTTPS or HTTP (or both)
There are those firmly sitting on both sides and that’s the problem. We need to just pick a direction and go with it. Ironing out the wording is far less difficult than reaching agreement on the two choices.
Now to your plea to just get it done. Here’s what I suggest: how about we just say HTTPS only and publish it. Then, we could later introduce an HTTP fallback option via a separate or updated RFC. The issue with introducing HTTP as an option now is the security complexity. That’s really holding us up. So, if we table that issue and just go with HTTPS for the moment, we at least have a working solution that starts out as a secure solution. We could form a WG to hammer out how to soften the security requirements once we get the HTTPS-only version out the door. (There are other things I believe we probably need to tackle as a part of that WG, such as definition of properties, new “rel” values, etc.)
Melvin,
Most of those issues have been addressed. We’ve divorced WF from Hostmeta. XRD is no longer used. We are using JRD, but I see no good reason to exchange it. It’s six of one, half a dozen of anther when it comes to a format like that. JRD is clean and it has some nice properties about it that allow us to do things like are shown in the examples. I think the biggest concern people had was the need to go read RFC 6415 or the XRD spec. We’ve addressed that by documenting JRD entirely within the WF spec itself.
Paul
From: webfinge...@ietf.org [mailto:webfinge...@ietf.org] On Behalf Of Melvin Carvalho
Sent: Sunday, December 16, 2012 4:01 PM
To: webf...@googlegroups.com
Cc: webf...@ietf.org
Subject: Re: [webfinger] Possibly speeding up the RFC process
[snip]
Re: the HTTP/HTTPS debate, I'm really supportive of whatever will allow consensus to be reached fastest. Today I ordered my StartSSL certificate, so hopefully I can do my little bit too :)
However, that is not the greatest of the concerns that I have seen. The most serious critique I've seen to date is the thread form Mark Nottingham, "Looking at Webfinger"
http://www.ietf.org/mail-archive/web/apps-discuss/current/msg06487.html
In particular:
[[
Astute observers will notice that this approach removes the need for an ACCT URI scheme (at least here).
* What's the fascination with XRD and JRD? These specifications seem to be creeping into IETF architecture; first it was in a pure security context, but now folks are talking about using them in a much more generic way, as a cornerstone of what we do. As such, I think they deserve a MUCH closer look, especially since we're defining things with "Web" in their name when the W3C has already defined solutions in this space.
]]
Mark Nottingham has a stellar reputation at the IETF, and these are some of the more serious concerns raised to date, imho, and have yet to be fully addressed. And that may take some time to work through.
If perhaps going the "informational" route could save a significant amount of time, say, 6 months or a year, do you think would it be worth considering?
Paul
From: webf...@googlegroups.com [mailto:webf...@googlegroups.com] On Behalf Of Melvin Carvalho
Sent: Sunday, December 16, 2012 10:08 AM
To: webf...@googlegroups.com
Subject: Possibly speeding up the RFC process
Webfinger is now in it's 4th year and I think everyone would agree that we are keen to see it shipped
It seems to me that there are two value added use cases that have remained constant from the start.
1) Lookup of a string of type user@host to produce a HTTP URL
2) Lookup of a string of type mailto:user@host to produce a HTTP URL
These are two things that would really be very useful, irrespective of all the other benefits that webfinger has to offer.
We're perhaps at a point where both of these two cases have a solution.
So maybe it may be an idea to tidy up the current RFC in the WG and mark it as informational in line with the following:
http://www.ietf.org/iesg/informational-vs-experimental.html
[[
An "Informational" specification is published for the general information of the Internet community, and does not represent an Internet community consensus or recommendation. The Informational designation is intended to provide for the timely publication of a very broad range of responsible informational documents from many sources, subject only to editorial considerations and to verification that there has been adequate coordination with the standards process
]]
I'm speculating here that this would get webfinger shipped more quickly. Getting webfinger to IETF to recommendation level would appear to be a greater task. Perhaps adding months to the time line, and if i have understood correctly there's no guarantee that an RFC will make it to recommendation status.
Part of me wants webfinger to be the best spec it can be, and for quality to be really high, yet another part would like to see webfinger actually shipped asap, and to start using a stable form to complete the loop in discovering more information from email via HTTP. So, just putting the idea out there.
[snip]
Melvin,
Most of those issues have been addressed. We’ve divorced WF from Hostmeta. XRD is no longer used. We are using JRD, but I see no good reason to exchange it. It’s six of one, half a dozen of anther when it comes to a format like that. JRD is clean and it has some nice properties about it that allow us to do things like are shown in the examples. I think the biggest concern people had was the need to go read RFC 6415 or the XRD spec. We’ve addressed that by documenting JRD entirely within the WF spec itself.
Melvin,
Comments are in inline:
From: Melvin Carvalho [mailto:melvinc...@gmail.com]
Sent: Sunday, December 16, 2012 4:38 PM
To: Paul E. Jones
Cc: webf...@googlegroups.com; webf...@ietf.org
Subject: Re: [webfinger] Possibly speeding up the RFC process
On 16 December 2012 22:27, Paul E. Jones <pau...@packetizer.com> wrote:
Melvin,
Most of those issues have been addressed. We’ve divorced WF from Hostmeta. XRD is no longer used. We are using JRD, but I see no good reason to exchange it. It’s six of one, half a dozen of anther when it comes to a format like that. JRD is clean and it has some nice properties about it that allow us to do things like are shown in the examples. I think the biggest concern people had was the need to go read RFC 6415 or the XRD spec. We’ve addressed that by documenting JRD entirely within the WF spec itself.
Yes, I did note that those changes were made, and I particularly like the move from XML to JSON.
I could be mistaken, but I am unsure that that all of the concerns will have been addressed to the satisfaction of the IESG.
The ones I noted:
- Should webfinger use the acct: scheme rather than simply a query parameter. This strikes me as a 'vanity' URI scheme. Aesthetics are important, but I'm unsure how popular a choice that will be with the IETF.
PEJ: WebFinger uses any URI scheme. The “acct” scheme is just one of them and is not core to the spec now, though there is a statement recommending its use to identify accounts. That is its purpose and the “acct” URI, and it’s a valid purpose. The one example I like to give is “How do we identify an account at Twitter?” There is no email, so “mailto” is not the right URI. A user has an account at any service provider and the “acct” URI would identify the account, not the particular service at the service provider (e.g., email, XMPP, or whatever).
- JRD does not allow an array of items/subjects to be rendered in response to an HTTP request, whereas other serializations do allow that. This leads to an interoperability issue.
PEJ: I don’t understand your concern. If I query my server, I get an array of link relations. I can step through those sequentially to find what I’m looking for. If I want to arrange the data different, I could. There was a proposal, for example, to allow the “rel” value be the key that refers to an array of possible values. That works, but the issue is that we lose useful constructs like “properties”, “titles”, etc., unless we have keys that point to arrays of objects. This can get syntactically ugly. I personally like the way JRD is defined: it’s simple and clean. It definitely does not present interoperability issues. An interop problem exists when two devices implanting the same thing do it differently. If you implement JRD, there is no interop issue. JRD is JRD as defined entirely in the WF spec. People have been able to use it just fine so far.
- Concerns were raised over the IPR of XRD/JRD. IANAL, but to the best of my knowledge they are not creative commons, or royalty free under, say, IETF / W3C / ISO. This topic would be well outside my area of expertize, but something the IETF may look at.
PEJ: It has been said before that there were IPR claims on XRI. I’ve never heard an IPR claim on XRD, though. And JRD is an entirely different syntax defined within the IETF (Eran, specifically). If there are IPR claims on JRD, then it must have something to do with very high-level concepts for which there would be no way to escape, such as the notion of defining a “document” that contains “links” and “metadata” or something – like HTML. Until an IPR statement is filed, I think we can ignore this. Anything we would consider might fall into the realm of somebody’s IPR, so there’s no point worrying about it without solid evidence.
- Could webfinger be recommended as a best practice if the scope is sufficiently wide, to overlap in areas where the W3C has already standardized. Namely those of discovery via http (aka linked data) etc.
PEJ: I’m not sure what you are asking here.
Paul
Melvin,
Comments are in inline:
From: Melvin Carvalho [mailto:melvinc...@gmail.com]
Sent: Sunday, December 16, 2012 4:38 PM
To: Paul E. Jones
Cc: webf...@googlegroups.com; webf...@ietf.org
Subject: Re: [webfinger] Possibly speeding up the RFC process
On 16 December 2012 22:27, Paul E. Jones <pau...@packetizer.com> wrote:
Melvin,
Most of those issues have been addressed. We’ve divorced WF from Hostmeta. XRD is no longer used. We are using JRD, but I see no good reason to exchange it. It’s six of one, half a dozen of anther when it comes to a format like that. JRD is clean and it has some nice properties about it that allow us to do things like are shown in the examples. I think the biggest concern people had was the need to go read RFC 6415 or the XRD spec. We’ve addressed that by documenting JRD entirely within the WF spec itself.
Yes, I did note that those changes were made, and I particularly like the move from XML to JSON.
I could be mistaken, but I am unsure that that all of the concerns will have been addressed to the satisfaction of the IESG.
The ones I noted:
- Should webfinger use the acct: scheme rather than simply a query parameter. This strikes me as a 'vanity' URI scheme. Aesthetics are important, but I'm unsure how popular a choice that will be with the IETF.
PEJ: WebFinger uses any URI scheme. The “acct” scheme is just one of them and is not core to the spec now, though there is a statement recommending its use to identify accounts. That is its purpose and the “acct” URI, and it’s a valid purpose. The one example I like to give is “How do we identify an account at Twitter?” There is no email, so “mailto” is not the right URI. A user has an account at any service provider and the “acct” URI would identify the account, not the particular service at the service provider (e.g., email, XMPP, or whatever).
- JRD does not allow an array of items/subjects to be rendered in response to an HTTP request, whereas other serializations do allow that. This leads to an interoperability issue.
PEJ: I don’t understand your concern. If I query my server, I get an array of link relations. I can step through those sequentially to find what I’m looking for. If I want to arrange the data different, I could. There was a proposal, for example, to allow the “rel” value be the key that refers to an array of possible values. That works, but the issue is that we lose useful constructs like “properties”, “titles”, etc., unless we have keys that point to arrays of objects. This can get syntactically ugly. I personally like the way JRD is defined: it’s simple and clean. It definitely does not present interoperability issues. An interop problem exists when two devices implanting the same thing do it differently. If you implement JRD, there is no interop issue. JRD is JRD as defined entirely in the WF spec. People have been able to use it just fine so far.
- Concerns were raised over the IPR of XRD/JRD. IANAL, but to the best of my knowledge they are not creative commons, or royalty free under, say, IETF / W3C / ISO. This topic would be well outside my area of expertize, but something the IETF may look at.
PEJ: It has been said before that there were IPR claims on XRI. I’ve never heard an IPR claim on XRD, though. And JRD is an entirely different syntax defined within the IETF (Eran, specifically). If there are IPR claims on JRD, then it must have something to do with very high-level concepts for which there would be no way to escape, such as the notion of defining a “document” that contains “links” and “metadata” or something – like HTML. Until an IPR statement is filed, I think we can ignore this. Anything we would consider might fall into the realm of somebody’s IPR, so there’s no point worrying about it without solid evidence.
- Could webfinger be recommended as a best practice if the scope is sufficiently wide, to overlap in areas where the W3C has already standardized. Namely those of discovery via http (aka linked data) etc.
PEJ: I’m not sure what you are asking here.
Melvin,
Comments inline again:
PEJ: WebFinger uses any URI scheme. The “acct” scheme is just one of them and is not core to the spec now, though there is a statement recommending its use to identify accounts. That is its purpose and the “acct” URI, and it’s a valid purpose. The one example I like to give is “How do we identify an account at Twitter?” There is no email, so “mailto” is not the right URI. A user has an account at any service provider and the “acct” URI would identify the account, not the particular service at the service provider (e.g., email, XMPP, or whatever).
It's great that acct: is almost completely decoupled from the spec.
Sure I do understand why acct: would be useful.
But Mark and others pointed out you could equally use
webfinger?acct=bob
or
/.well-known/user/bob
my own suggestion from February was
/@/bob
None of the above are as beautiful as acct: but the debate may arise this is worth creating a new uri scheme.
PEJ: Yeah, all of these are possibilities. The one thing that I personally think is important is that the “thing” we query is a URI. So, forms that do not utilize URIs I think we should not consider. There are several ways to utilize URIs and I think it comes down to putting the URI as a part of the path or using a URI parameter. We’re presently heading down the latter path. The disadvantage is that one cannot build a “truly” static site, though one can come close using Apache re-writing rules. That said, there is utility in the approach, since once can query for a specific URI and request the response to be filtered for a particular set of link relations (“rel” parameters). Thus, it’s making the web programmable. I think we’re past that debate now. I hope so.
- JRD does not allow an array of items/subjects to be rendered in response to an HTTP request, whereas other serializations do allow that. This leads to an interoperability issue.
PEJ: I don’t understand your concern. If I query my server, I get an array of link relations. I can step through those sequentially to find what I’m looking for. If I want to arrange the data different, I could. There was a proposal, for example, to allow the “rel” value be the key that refers to an array of possible values. That works, but the issue is that we lose useful constructs like “properties”, “titles”, etc., unless we have keys that point to arrays of objects. This can get syntactically ugly. I personally like the way JRD is defined: it’s simple and clean. It definitely does not present interoperability issues. An interop problem exists when two devices implanting the same thing do it differently. If you implement JRD, there is no interop issue. JRD is JRD as defined entirely in the WF spec. People have been able to use it just fine so far.
The link relations contain 3 components. The subject, the predicate and the object. In other language the entity the attribute and the value. The Entity in this case would be @subject, the attribute would be the rel of the link, and the value would be the value of the link.
In almost every serialization I know, multiple subjects/entities are permissible, in an array of (say JSON) objects. In JRD there is a constraint limiting the serialization to exactly one entity/subject. This imho could be seen as a slight weakness, especially it it makes the serialization of choice not 100% interoperable with others more permissible serializations.
PEJ: My understanding of subject is the “thing” I’m querying (e.g., acct:pau...@packetizer.com). Given that definition, JRD covers a single subject since WF is looking for a single “thing”. Inside, there may be multiple “properties” for the “thing” (e.g., “http://packetizer.com/ns/name” is a property with a value “Paul E. Jones). Then there is an array of “link relations”. The definition follows that of RFC 5988. Each link relation is identified by a “rel” value. There is also an optional “type”. And there is an “href”. JRD also allows for self-describing link relations, where the “href” is absent and “properties” are used to describe the value of the relation to the “rel”. An example is this: http://tools.ietf.org/html/draft-ietf-appsawg-webfinger-07#section-4.3. Lastly, any link may have one or more human-readable names in a “titles” array. You can see an example here:
http://tools.ietf.org/html/draft-ietf-appsawg-webfinger-07#section-4.1.
- Concerns were raised over the IPR of XRD/JRD. IANAL, but to the best of my knowledge they are not creative commons, or royalty free under, say, IETF / W3C / ISO. This topic would be well outside my area of expertize, but something the IETF may look at.
PEJ: It has been said before that there were IPR claims on XRI. I’ve never heard an IPR claim on XRD, though. And JRD is an entirely different syntax defined within the IETF (Eran, specifically). If there are IPR claims on JRD, then it must have something to do with very high-level concepts for which there would be no way to escape, such as the notion of defining a “document” that contains “links” and “metadata” or something – like HTML. Until an IPR statement is filed, I think we can ignore this. Anything we would consider might fall into the realm of somebody’s IPR, so there’s no point worrying about it without solid evidence.
If JRD is completely under the IETF IPR, that would be extremely cool. I was unaware of that, if you have a pointer that would be great.
PEJ: I didn’t say that, only that JRD was entirely documented in an IETF document (RFC 6415). The syntax was derived from XRD, though. I’m just not aware of any IPR claims on XRD, and whatever is claimed may or may not apply to JRD (since it is a different syntax). As I said, it would have to be a pretty broad, generic claim.
- Could webfinger be recommended as a best practice if the scope is sufficiently wide, to overlap in areas where the W3C has already standardized. Namely those of discovery via http (aka linked data) etc.
PEJ: I’m not sure what you are asking here.
I think the point Mark was suggesting is that both webfinger and the w3c 'web stack' offer options for discovery. Namely the W3C has spent much of the last 10 years working on discovery based on HTTP identifiers. If webfinger becomes a general purpose discovery method for any URI, then there is a possible overlap, which may perhaps lead to further discussion.
PEJ: WebFinger is narrowly defined. If there is another standard doing exactly the same thing with the same level of simplicity, I think it would have been adopted already. There are certainly other kinds of “discovery” protocols, but each that I have seen has a different scope, complexity, value, etc. The support for WF has been pretty strong thus far. I cannot say it will be the recommended best practice, though. We’ll have to see what the adoption rate looks like.
As you point out, it's just speculation at this point. Tho my understanding of the IETF process is that they do tend to drill down into the details, so sometimes it doesnt hurt to be prepared, or have a plan B :)
PEJ: I’m too tired for a Plan B. WebFinger started as a spec with a lot of stuff inside and we’ve thrown out lots of options. We’re now down to this, a product of several years’ worth of work by multiple people. Once we settle on the HTTP/HTTPS issue, I hope we can say we’re finished (modulo less controversial editorial things). There will be a review process, but I would not expect that to result is significant technical changes.
Paul
Melvin,
Comments inline again:
PEJ: WebFinger uses any URI scheme. The “acct” scheme is just one of them and is not core to the spec now, though there is a statement recommending its use to identify accounts. That is its purpose and the “acct” URI, and it’s a valid purpose. The one example I like to give is “How do we identify an account at Twitter?” There is no email, so “mailto” is not the right URI. A user has an account at any service provider and the “acct” URI would identify the account, not the particular service at the service provider (e.g., email, XMPP, or whatever).
It's great that acct: is almost completely decoupled from the spec.
Sure I do understand why acct: would be useful.
But Mark and others pointed out you could equally use
webfinger?acct=bob
or
/.well-known/user/bob
my own suggestion from February was
/@/bob
None of the above are as beautiful as acct: but the debate may arise this is worth creating a new uri scheme.
PEJ: Yeah, all of these are possibilities. The one thing that I personally think is important is that the “thing” we query is a URI. So, forms that do not utilize URIs I think we should not consider. There are several ways to utilize URIs and I think it comes down to putting the URI as a part of the path or using a URI parameter. We’re presently heading down the latter path. The disadvantage is that one cannot build a “truly” static site, though one can come close using Apache re-writing rules. That said, there is utility in the approach, since once can query for a specific URI and request the response to be filtered for a particular set of link relations (“rel” parameters). Thus, it’s making the web programmable. I think we’re past that debate now. I hope so.
- JRD does not allow an array of items/subjects to be rendered in response to an HTTP request, whereas other serializations do allow that. This leads to an interoperability issue.
PEJ: I don’t understand your concern. If I query my server, I get an array of link relations. I can step through those sequentially to find what I’m looking for. If I want to arrange the data different, I could. There was a proposal, for example, to allow the “rel” value be the key that refers to an array of possible values. That works, but the issue is that we lose useful constructs like “properties”, “titles”, etc., unless we have keys that point to arrays of objects. This can get syntactically ugly. I personally like the way JRD is defined: it’s simple and clean. It definitely does not present interoperability issues. An interop problem exists when two devices implanting the same thing do it differently. If you implement JRD, there is no interop issue. JRD is JRD as defined entirely in the WF spec. People have been able to use it just fine so far.
The link relations contain 3 components. The subject, the predicate and the object. In other language the entity the attribute and the value. The Entity in this case would be @subject, the attribute would be the rel of the link, and the value would be the value of the link.
In almost every serialization I know, multiple subjects/entities are permissible, in an array of (say JSON) objects. In JRD there is a constraint limiting the serialization to exactly one entity/subject. This imho could be seen as a slight weakness, especially it it makes the serialization of choice not 100% interoperable with others more permissible serializations.
PEJ: My understanding of subject is the “thing” I’m querying (e.g., acct:pau...@packetizer.com). Given that definition, JRD covers a single subject since WF is looking for a single “thing”. Inside, there may be multiple “properties” for the “thing” (e.g., “http://packetizer.com/ns/name” is a property with a value “Paul E. Jones). Then there is an array of “link relations”. The definition follows that of RFC 5988. Each link relation is identified by a “rel” value. There is also an optional “type”. And there is an “href”. JRD also allows for self-describing link relations, where the “href” is absent and “properties” are used to describe the value of the relation to the “rel”. An example is this: http://tools.ietf.org/html/draft-ietf-appsawg-webfinger-07#section-4.3. Lastly, any link may have one or more human-readable names in a “titles” array. You can see an example here:
http://tools.ietf.org/html/draft-ietf-appsawg-webfinger-07#section-4.1.
- Concerns were raised over the IPR of XRD/JRD. IANAL, but to the best of my knowledge they are not creative commons, or royalty free under, say, IETF / W3C / ISO. This topic would be well outside my area of expertize, but something the IETF may look at.
PEJ: It has been said before that there were IPR claims on XRI. I’ve never heard an IPR claim on XRD, though. And JRD is an entirely different syntax defined within the IETF (Eran, specifically). If there are IPR claims on JRD, then it must have something to do with very high-level concepts for which there would be no way to escape, such as the notion of defining a “document” that contains “links” and “metadata” or something – like HTML. Until an IPR statement is filed, I think we can ignore this. Anything we would consider might fall into the realm of somebody’s IPR, so there’s no point worrying about it without solid evidence.
If JRD is completely under the IETF IPR, that would be extremely cool. I was unaware of that, if you have a pointer that would be great.
PEJ: I didn’t say that, only that JRD was entirely documented in an IETF document (RFC 6415). The syntax was derived from XRD, though. I’m just not aware of any IPR claims on XRD, and whatever is claimed may or may not apply to JRD (since it is a different syntax). As I said, it would have to be a pretty broad, generic claim.
- Could webfinger be recommended as a best practice if the scope is sufficiently wide, to overlap in areas where the W3C has already standardized. Namely those of discovery via http (aka linked data) etc.
PEJ: I’m not sure what you are asking here.
I think the point Mark was suggesting is that both webfinger and the w3c 'web stack' offer options for discovery. Namely the W3C has spent much of the last 10 years working on discovery based on HTTP identifiers. If webfinger becomes a general purpose discovery method for any URI, then there is a possible overlap, which may perhaps lead to further discussion.
PEJ: WebFinger is narrowly defined. If there is another standard doing exactly the same thing with the same level of simplicity, I think it would have been adopted already. There are certainly other kinds of “discovery” protocols, but each that I have seen has a different scope, complexity, value, etc. The support for WF has been pretty strong thus far. I cannot say it will be the recommended best practice, though. We’ll have to see what the adoption rate looks like.
As you point out, it's just speculation at this point. Tho my understanding of the IETF process is that they do tend to drill down into the details, so sometimes it doesnt hurt to be prepared, or have a plan B :)
PEJ: I’m too tired for a Plan B. WebFinger started as a spec with a lot of stuff inside and we’ve thrown out lots of options. We’re now down to this, a product of several years’ worth of work by multiple people. Once we settle on the HTTP/HTTPS issue, I hope we can say we’re finished (modulo less controversial editorial things). There will be a review process, but I would not expect that to result is significant technical changes.
Paul
On 17 December 2012 00:21, Paul E. Jones <pau...@packetizer.com> wrote:Melvin,
Comments inline again:
PEJ: WebFinger uses any URI scheme. The “acct” scheme is just one of them and is not core to the spec now, though there is a statement recommending its use to identify accounts. That is its purpose and the “acct” URI, and it’s a valid purpose. The one example I like to give is “How do we identify an account at Twitter?” There is no email, so “mailto” is not the right URI. A user has an account at any service provider and the “acct” URI would identify the account, not the particular service at the service provider (e.g., email, XMPP, or whatever).
It's great that acct: is almost completely decoupled from the spec.
Sure I do understand why acct: would be useful.
But Mark and others pointed out you could equally use
webfinger?acct=bob
or
/.well-known/user/bob
my own suggestion from February was
/@/bob
None of the above are as beautiful as acct: but the debate may arise this is worth creating a new uri scheme.
PEJ: Yeah, all of these are possibilities. The one thing that I personally think is important is that the “thing” we query is a URI. So, forms that do not utilize URIs I think we should not consider. There are several ways to utilize URIs and I think it comes down to putting the URI as a part of the path or using a URI parameter. We’re presently heading down the latter path. The disadvantage is that one cannot build a “truly” static site, though one can come close using Apache re-writing rules. That said, there is utility in the approach, since once can query for a specific URI and request the response to be filtered for a particular set of link relations (“rel” parameters). Thus, it’s making the web programmable. I think we’re past that debate now. I hope so.
Sure, but query parameters can take URIs too, SWD did, for example.
- JRD does not allow an array of items/subjects to be rendered in response to an HTTP request, whereas other serializations do allow that. This leads to an interoperability issue.
PEJ: I don’t understand your concern. If I query my server, I get an array of link relations. I can step through those sequentially to find what I’m looking for. If I want to arrange the data different, I could. There was a proposal, for example, to allow the “rel” value be the key that refers to an array of possible values. That works, but the issue is that we lose useful constructs like “properties”, “titles”, etc., unless we have keys that point to arrays of objects. This can get syntactically ugly. I personally like the way JRD is defined: it’s simple and clean. It definitely does not present interoperability issues. An interop problem exists when two devices implanting the same thing do it differently. If you implement JRD, there is no interop issue. JRD is JRD as defined entirely in the WF spec. People have been able to use it just fine so far.
The link relations contain 3 components. The subject, the predicate and the object. In other language the entity the attribute and the value. The Entity in this case would be @subject, the attribute would be the rel of the link, and the value would be the value of the link.
In almost every serialization I know, multiple subjects/entities are permissible, in an array of (say JSON) objects. In JRD there is a constraint limiting the serialization to exactly one entity/subject. This imho could be seen as a slight weakness, especially it it makes the serialization of choice not 100% interoperable with others more permissible serializations.
PEJ: My understanding of subject is the “thing” I’m querying (e.g., acct:pau...@packetizer.com). Given that definition, JRD covers a single subject since WF is looking for a single “thing”. Inside, there may be multiple “properties” for the “thing” (e.g., “http://packetizer.com/ns/name” is a property with a value “Paul E. Jones). Then there is an array of “link relations”. The definition follows that of RFC 5988. Each link relation is identified by a “rel” value. There is also an optional “type”. And there is an “href”. JRD also allows for self-describing link relations, where the “href” is absent and “properties” are used to describe the value of the relation to the “rel”. An example is this: http://tools.ietf.org/html/draft-ietf-appsawg-webfinger-07#section-4.3. Lastly, any link may have one or more human-readable names in a “titles” array. You can see an example here:
http://tools.ietf.org/html/draft-ietf-appsawg-webfinger-07#section-4.1.
Melvin,
Comments below:
The link relations contain 3 components. The subject, the predicate and the object. In other language the entity the attribute and the value. The Entity in this case would be @subject, the attribute would be the rel of the link, and the value would be the value of the link.
In almost every serialization I know, multiple subjects/entities are permissible, in an array of (say JSON) objects. In JRD there is a constraint limiting the serialization to exactly one entity/subject. This imho could be seen as a slight weakness, especially it it makes the serialization of choice not 100% interoperable with others more permissible serializations.
PEJ: My understanding of subject is the “thing” I’m querying (e.g., acct:pau...@packetizer.com). Given that definition, JRD covers a single subject since WF is looking for a single “thing”. Inside, there may be multiple “properties” for the “thing” (e.g., “http://packetizer.com/ns/name” is a property with a value “Paul E. Jones). Then there is an array of “link relations”. The definition follows that of RFC 5988. Each link relation is identified by a “rel” value. There is also an optional “type”. And there is an “href”. JRD also allows for self-describing link relations, where the “href” is absent and “properties” are used to describe the value of the relation to the “rel”. An example is this: http://tools.ietf.org/html/draft-ietf-appsawg-webfinger-07#section-4.3. Lastly, any link may have one or more human-readable names in a “titles” array. You can see an example here:
http://tools.ietf.org/html/draft-ietf-appsawg-webfinger-07#section-4.1.
Sorry forgot to respond to this point. (only did the red ones :))
Thanks, I think I understand the JRD format and it's great that A) it's JSON based and B) it can be self describing and C) that it can include references (links) to other URIs
The weakness in this serialization is that it becomes tightly coupled to the query that generated it. A data document should be an entity in it's own right that is independent of how it is generated. What we are getting is data, that happened to be delivered via webfinger. While it is often the case on the web that a document will yield a single subject, and indeed in many cases this is a best practice, it is not always the case. There are many cases where there are multiple items in a single page, a good example is wikipedia which divides itself up into many sections; the page may be about Germany, then the sections could be about Geography, History, Economy etc. This leads to interoperability issues with the rest of the web.
My view is that webfinger should be serialization agnostic and operate using content negotiation. JRD is one of the weaker serializations, imho, and as mark has suggested, if favoured especially it will need greater review, which may take time. Im not sure anyone has ever answered the question as to why has it been consistently favoured?
PEJ: It is tightly coupled with the query, but view that as positive. JRD has a limited use. It’s not HTML where we’re creating elaborate documents. It’s a simple data structure that conveys link relations and properties about a “subject”. If one wanted to have a more complex document that included multiple “subjects”, one could create an array or hash table of JRDs. Such use, though, is entirely outside the scope of WebFinger. I do like use of content negotiation. Nothing precludes that from happening in WF, either, since it is built on top of HTTP. We’re just not specifying what would be negotiated. The current text says:
WebFinger servers MUST return a JRD as the representation for the resource if the client requests no format explicitly via the HTTP “Accept” header. A client MAY include the “Accept” header to indicate a desired representation, though no other representation is defined in this specification.
Melvin,
The JRD spec itself (and I’ve extracted it out and placed it here for convenience: http://www.packetizer.com/json/jrd/) does not define creating an array of itself.
However, programmatically it would be trivial to create an array of JRD objects in virtually any language. WebFinger only deals with a single “subject” at a time. So, the data returned from the server does not need to have multiple sections with a “subject” per section. However, since the “subject” is an element within the JRD, then you can imagine a JSON object like this:
{ “jrds” : [ { <jrd1> }, { <jrd2> }, { ... } ] }
or
{ “<jrd subject 1>” : { <jrd 1 }, “<jrd subject 2>”, { <jrd 2> }, ... }
Neither are defined, but you can see how JRDs could be used within more complex documents.
Paul
Melvin,
The JRD spec itself (and I’ve extracted it out and placed it here for convenience: http://www.packetizer.com/json/jrd/) does not define creating an array of itself.
However, programmatically it would be trivial to create an array of JRD objects in virtually any language. WebFinger only deals with a single “subject” at a time. So, the data returned from the server does not need to have multiple sections with a “subject” per section. However, since the “subject” is an element within the JRD, then you can imagine a JSON object like this:
{ “jrds” : [ { <jrd1> }, { <jrd2> }, { ... } ] }
or
{ “<jrd subject 1>” : { <jrd 1 }, “<jrd subject 2>”, { <jrd 2> }, ... }
Neither are defined, but you can see how JRDs could be used within more complex documents.
Melvin,
Yep, that syntax will work just fine if you want an array. I was thinking only about object syntax.
In any case, the JRD syntax is documented in the current WF spec. That’s where it will be cast into stone and I don’t expect any need for making changes to it once we’re finished. We ought not add more complexity to it than is already defined.
Paul
From: Melvin Carvalho [mailto:melvinc...@gmail.com]
Sent: Monday, December 17, 2012 4:36 PM
To: Paul E. Jones
Cc: webf...@googlegroups.com; webf...@ietf.org
Subject: Re: [webfinger] Possibly speeding up the RFC process
On 17 December 2012 22:04, Paul E. Jones <pau...@packetizer.com> wrote: