Socialwg/AccountDiscovery

From W3C Wiki
Jump to: navigation, search

Account Discovery

A problem that recurs in the social web is "given this username, how to i find information about the account?" There are various historic approaches to this, discussed below, and a possible simple answer. The common use case is mentioning someone else using a shorter syntax than a URL. Many silos will autocomplete usernames within themselves, as they have the complete database and so can provide this. Doing this cross-domain is a bit trickier.

Just use URLs

This is the blogging solution - when you mention someone, link to their blog by hand.

Well known URLs

Within a silo, using @[username] or +[username] can be expanded into a local link. This is done by twitter, facebook, google+, instagram etc.

While convenient it does contribute to silo lockin and monoculture. The URLs can often by expanded to [domain]/@[username] (twitter, mastodon) or [domain]/[username] (Facebook, instagram) or [username].[domain] (tumblr, blogger) but that requires knowledge of each domainsURL patterns.

SgNodemapper was an attempt to collect and codify these patterns. It may be worth reviving.

Well-known URLs with indirection

Webfinger means you can look up /.well-known/webfinger?resource=acct%3Acarol%40example.com (that embedded thing is an acct url and get back a collection of rel-defined URLs, which may be endpoints.

Well-known URLs with double indirection

If one layer of indirection seems too easy, you can use LRRD to look up GET /.well-known/host-meta to get an XML document with a lrrd url template to look up your acct in to get back an xml document that lists the rel Links to the endpoints you might need.

If even more indirection is to your taste, you can follow this though further with Ostatus's workflow.

Naming Components

The acct spec refers to userpart and host.

Portable contacts uses

domain: The top-most authoritative domain for this account, e.g. "twitter.com". This is the Primary Sub-Field for this field, for the purposes of sorting and filtering.

username: An alphanumeric user name, usually chosen by the user, e.g. "jsmarr".

userid: A user ID number, usually chosen automatically, and usually numeric but sometimes alphanumeric, e.g. "12345" or "1Z425A".

SGnodemapper uses ident for name and PK for machine readable/generated ID

h-card uses nickname for the site name and url for the domain.