Socialwg/AccountDiscovery

From W3C Wiki

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.

Concerns

There are several issues that appear to make none of the existing systems ideal.

1. As few needless requests as possible. Mastodon has stated having issues with OStatus in the number of redirections and amount of overhead needed for each account lookup. This has resulted in some strict limits on how often a user account can be looked up to translate @user@host.com to host.com/@user (real url for the user.

2. Url's not as easy to remember. For users who have a complex path for their url, remembering john@host.com is far simpler than host.com/user-accounts/john

3. Pidgen-holed in to acct: format. for users who have their own domain, webfinger's syntax is needlessly excessive, they are forced in to aaronpk@aaron.pk, where aaron.pk would suffice.

4. Subdirectory installations. Sometimes you only have write access to a subdirectory or want to install a tool only in a specific directory. Acct: uri's fail here as you cannot create a .well-known at the domain root directory.

Current usage and interest

In an attempt to capture some of the current usage, i am looking at the use for the period character in usernames to see what systems support it. Am also asking about interest in supporting subdirectory installations and blank usernames (to allow domain names to be involved).

Posted several questions to this effect online, and made copies in various locations.


Friendica

Friendica allows the period in usernames, it also already supports subdirectory installations and just treats the entire portion after the @ sign as the "host" thus it will look for the .well-know outside of top level folder. However, it strongly recommends against either of these due to it not being supported by other projects and would thus break federation. Seemed interested in the possibility of using @host without a user listed.

Diaspora

Diaspora does not allow the '.' but knows that other projects may. Does not allow subdirectory installations. Developers did not seem receptive to allowing blank usernames saying it would "pretty much break everything"

Pump.io

Supports period in user names, though it has had issues in the past and is likely still highly error prone. Expressed interest in subdir support as well as blank usernames.

Mastodon

UI does not support entering periods in usernames. Have not connected with devs yet.

GNUSocial

Have not connected with devs yet.

Indieweb

doesn't use usernames at all, only URLs. Ben.thatmustbe.me would be intersted in supporting webfinger style usernames so long as the spec on how to connect is greatly simplified (preferrably through h-cards)

Brainstorming

use rel with template

One extremely simple solution is with a rel header for the template to map back and forth between user@host and url. rel="accountmap" template="https://Example.social/@{user}"

Limitation to this is looking up a user must be domain-wide, doesn't solve the sub-directory issue unless you just say anyone using a subdirectory would be required to use user@host.com/subdirectory

make a profile of webfinger

As in: https://github.com/tootsuite/mastodon/issues/1441#issuecomment-302969948

UI syntactic sugar

Have UIs treat @domain.example as syntactic sugar for domain@domain.example, on both input and output. The protocols would not need to change.

Additional Links

These should be reviewed for additional information, have not added this information to this page yet

  1. https://github.com/w3c/activitypub/issues/194
  2. https://github.com/tootsuite/mastodon/issues/1557#issuecomment-294382188