URI
From Friend2Friend Wiki
F2F is full of URIs (Universal Resource Identifier), but doesn't use URLs (Universal Resource Location). These two terms may appear to be interchangeable, but they should not be.
Contents |
A URL is not a URI
WWW is based on navigation according to names, so http://... serves as a page location. F2F is decentralised, so doesn't use locations. It recycles URLs, using them instead, like namespaces, as globally unique identifiers, so http://friend2friend.net/services/send will work whether or not there is a site at http://friend2friend.net/. It could equally be f2f://net, or indeed ]US@DrS$32Gs1dWPO]d. It's just an identifier.
Using a URL as a URI
URLs can be used as URIs, and it is often helpful to do so. e.g. Suppose a soft-system received <servicereq function="http://f2f.gifteconomy.org/add"> but couldn't resolve it. One approach would be to install the requisite software automatically if highly enough trusted in the requester. In this case, http://f2f.gifteconomy.org/add provides a likely first place to start looking for the software.
New URI (f2f://)
This presentation introduces f2f:// as a new URI, intended to be searched for in a decentralised fashion by asking one's friends. This could be in addition to, rather than as a replacement for centralised resolution (traditional http:// style), to work as a fallback in case the central point were unavailable. The format is
f2f://[REQUESTER'S-PUBLIC-KEY:]RECIPIENT'S-PUBLIC-KEY@f2f.name/robin/etc which replaces http://[username:password@]f2f.name/robin/etc
The inclusion of the keys in the URI adds security to the request. Only the intended recipient of the request can decode it, and the recipient's private key is provided to allow the recipient to encrypt the answer such that only the requester can read it, and not any of the men in the middle who are needed for a decentralised search.
Pseudonamespacing
Since all F2F modules have a unique URI, this provides for a kind of 'pesudo- namepsacing'; if modules only declare resource URIs which begin with their own URI, no collisions will occur. This is not necessarily a rule, and as function URIs become popularised, modules may wish to support other modules' resources.