A modest proposal.

Robert McQueen robert.mcqueen at collabora.co.uk
Tue Feb 19 17:47:09 EST 2008


Such a thing would be most excellent, indeed. :)

A similar, but more standards-compliant[1][2] proposal might look more like:
 xmpp:name.xxx at school.country.xs.laptop.org

Clicking on a link of this form:
 xmpp:name.xxx at school.country.xs.laptop.org?subscribe
could add the individual as a friend, or a link like this:
 xmpp:name.xxx at school.country.xs.laptop.org?message
might start a conversation with them.

The presence service already registers to an XMPP server on the school
server. If we arrange the DNS reachability for school servers, we can
use the existing XMPP network and server-to-server connections to deal
with sending communications between school servers. We just need to arrange:
 a) global naming of the school servers
 b) discovery of that name by the laptops
 c) adding the name to the generated XMPP ID

There's already a service on each school server which responds on a well
known port (5222, aka xmpp-client) and confirms people's
status/availability, and we're already working on a simple add-on
component to enumerate activities which are reachable via that school
server, it's called Gadget (see http://wiki.laptop.org/go/Gadget).

Key verification of link-locally reachable contacts can be used to
resolve these contacts on the local network too.

Also, no punycode is required. XMPP was drafted after non-ASCII speaking
countries were discovered. :)

Regards,
Rob

1: http://tools.ietf.org/html/rfc4395
2: http://tools.ietf.org/html/rfc4622

C. Scott Ananian wrote:
> I propose installing a handler for a new URI type in our browse
> application.  The links will look like:
>    friend:name.xxx.school.country.xs.laptop.org
> where:
>   name is a Punycode encoding of the XO nickname.  Technically, the
> IDN ToASCII mapping operation is performed on the nickname, truncated
> on the right if necessary so the result is 63 characters or less; see
> http://en.wikipedia.org/wiki/Internationalized_domain_name.
>   xxx is an encoded version of the the XO public key.  The number is
> written in a variable base number system where the first three digits
> are base 36, base 37, and base 26 and the digits are mapped into
> characters starting with lowercase alphabetic, then numeric, then a
> hyphen.  If I've done my math correctly
> (http://en.wikipedia.org/wiki/Birthday_paradox ), this requires about
> 220 students to have the same name before a collision has a 50% chance
> of occuring.  If the server uses an independent means to prevent
> duplicate nicknames, the xxx can be replaced with 'fun'.
>   'school.country.xs.laptop.org' is filled in by registration with a
> school server.  If you do not have access to a school server, then you
> can register with xofriends.org (or another independent service) and
> use that suffix.
> 
> Clicking on a link of this form would add this person to your buddy
> list.  Communicating with a this form of buddy would, in parallel, (a)
> attempt to contact the IPv6 Link-Local address formed from the lower
> 64 bits of the SHA-256 of the complete friend domain string (not
> including the URI scheme or colon) and (b) attempt to look up the
> hostname and contact the IPv4 or IPv6 address returned.  (If the DNS
> responds, you SHOULD use this address for further communication in
> this session, since it may persist even if you roam off your current
> mesh.)  A simple service at a well-known port would confirm status and
> list sharable activities.
> 
> Via a network manager hook, XOs should report their current IPv4/IPv6
> addresses to the 'school.country.xs.laptop.org' part of their local
> domain name, which will export it via the standard dynamic DNS
> mechanisms.
>  --scott



More information about the Devel mailing list