Message: 3
Date: Tue, 27 Jan 2009 17:36:28 +0100
From: Evan Prodromou <[email protected]>
Subject: [Laconica-dev] Public site directory
To: [email protected]
Message-ID: <[email protected]>
Content-Type: text/plain; charset="iso-8859-1"; Format="flowed"

One thing that's come up recently for API clients is being able to let users sign up for an account on a public Laconica site. We have quite a few, and the number is growing. It's not always easy for users to add in the API root to general-purpose interfaces (like Twitterfeeds), nor is it easy for client developers to special-case each and every Laconica site in their software.

I'd like to propose a mechanism that would let client developers find public Laconica sites that their users can register on or log into an existing account.

The API would be rooted at dir.laconi.ca. It would be Twitter-like (RESTy, JSON and XML supported), with the following API elements:

   1. http://dir.laconi.ca/providers.[xml|json] would be a full list of
      all providers. It would support a "since" parameter to only show
      providers listed more recently than some date.
   2. http://dir.laconi.ca/providers/<provider-id>.[xml|json] would give
      data on a single provider.
   3. http://dir.laconi.ca/providers/<provider-nickname>.[xml|json]
      would give data on a single provider.
   4. http://dir.laconi.ca/providers/search.[xml|json]?q=<search term>
      would return a list of providers whose full name, nickname, or
      description contains <search term> as a substring. This might be
      useful for type-ahead directory interfaces. It would also take an
      hl=[code] parameter to limit results to descriptions or names in a
      particular language.

Updating profile information would be out-of-band; we'd probably have a Web UI for site admins to keep this data up-to-date.

Each provider is described by a data structure as follows:

    * ID - a unique numerical ID. Example: 3, 35015.
    * nickname - a unique nickname, lowercase ASCII alphanum, 1-64
      chars. Example: "identica", "bleeper", "twitarmy".
    * fullname - a more descriptive name, UTF-8, up to 255 chars.
      Example: "Identi.ca", "Twit Army Canteen", "Saigonica".
    * minilogo - URL of a logo image, 24x24 pixels
    * streamlogo - URL of a logo image, 48x48 pixels
    * profilelogo - URL of a logo image, 96x96 pixels
    * rooturl - root URL, like "http://bleeper.de/";
    * registrationurl - URL for a registration page, optional
    * apirooturl - URL for the Twitter-like API root, like
      "http://identi.ca/api";.
    * description - a text description of the provider. Typically 1-3
      sentences.

"fullname" and "description" could have multiple values, varying by human language. For the XML representation, we'd use xml:lang to differentiate; I'm not sure what to do for JSON. Something like "description_en", "description_no"?

Finally: participation for this directory would be voluntary. It would initially only contain Laconica sites, but other sites that support the Twitter API could also be listed in the future. Code for the directory would be Free Software under a liberal Apache 2.0 license, and the data would be CC0 (public domain-ish).

Any ideas or comments? Anyone want to do a fun little piece of work?

-Evan


I think this is a great idea, and I would add this capability to my client App right now if it was available. The only change I would propose is the addition of categories. This could be either a single field, or a couple of levels (primary category, secondary category). When we end up with thousands of laconi.ca instances to let the user choose from, I think having a way to filter them by categories will be very helpful.

-Tom
_______________________________________________
Laconica-dev mailing list
[email protected]
http://mail.laconi.ca/mailman/listinfo/laconica-dev

Reply via email to