[FOSS-GPS] Re: Geolocation services for FoxtrotGPS

Joshua Judson Rosen rozzin at geekspace.com
Thu Dec 23 17:39:12 EST 2010

This thread has been dormant for a while, but I've now spent some
significant time doing research into XMPP, the various `XEP's
(Geolocation, Publish-Subscribe, Personal Eventing Protocol), and
the Telepathy/Gabble frameworks, so I have some more thoughts
to bring into the discussion (see below):

Joshua Judson Rosen <rozzin at geekspace.com> writes:
> XMPP and youloc.net are described on the website as the
> `obvious candidates'. They were the first things that sprang to mind
> as options for established, open-standards systems that seemed like
> they would make sense as a basis for the sort of functionality that
> currently exists in tangoGPS and FoxtrotGPS (currently using what is,
> as far as I can tell, a proprietary web service).
> I was delighted to see XEP-0080 <http://xmpp.org/extensions/xep-0080.html>,
> because it made it apparent that other people were at least working on the
> same idea, and that it might actually gain enough traction in the community
> to take hold as a standard such that it wouldn't just be us driving it.
> The more I look into it, the more it seems like my intuition was right--
> that something XMPP-based is the way forward.
> Guilhem Bonnefille <guilhem.bonnefille at gmail.com> writes:
> >
> > Do you evaluated the telepathy framework? It already implement
> > geolocation of friends over XMPP.
> > http://telepathy.freedesktop.org/wiki/
> > Of course, my two ideas bring HUGE dependencies, compared to
> > home-made/raw solutions. But they simplify the specific code and
> > allow a better integration with other services. Furthermore, these
> > framework are already packaged in small devices like Nokia N900.
> So far, your suggestion of using Telepathy & Gabble to accomplish it
> is the best (and only) one that we have :)
> So, unless someone else offers a critique of Telepathy/Gabble
> (I don't yet have any experience with it, myself) or suggests
> a different toolkit to use, I'm inclined to say "let's go for it".

>From the research and experimentation that I've now done
in these matters, it looks like XMPP + XEP-0080 (Geolocation)
is indeed the way to go, but not Telepathy--and it's not that
Telepathy or Gabble is `too heavyweight'; rather, it looks like
Telepathy is just at too high a level of abstraction from
what we're going to need.

Gabble's location-publishing feature is specifically coded
to use Personal Eventing Protocol (PEP), which is limited
to being a direct, 1-to-1, user-to-user subscription system;
it's possible for a single JabberID to explicitly subscribe
to multiple other JabberIDs, and it's possible for a single
JabberID to have multiple subscribers, but there's no support
for a `chatroom'-style subscription where a user subscribes
to a multi-user aggregate and then automatically receives
notifications for *all* of the users that are aggregated
together `in that chatroom'. In other words, there's no way
to use Gabble to do anything like we're currently doing.

Now, PEP is an intentionally-limited subset of a more general
protocol: Publish-Subscribe (XEP-0060). The generalised
Pub-Sub spec. is *huge*, and allows for users to specify
the `node' to which they want to publish rather than
just automatically publishing to their `self' node.
But Gabble doesn't allow for use of Pub-Sub in place of PEP,
and Telepathy doesn't appear to have any interfaces
by which it could expose the relevant Pub-Sub options
even if Gabble did support it.

It looks like we can actually distribute geolocation
payloads via XMPP's Multi-User Chat (MUC; XEP-0045),
at least as far as the protocol itself is concerned
(and I've done some successful experiments with ejabberd),
but it doesn't look like Telepathy supports doing that,
because it doesn't know how to generate `message' elements
that contain structured data--it just wants to send MIME

So I'm going to look at libloudmouth (the XMPP library
used by Gabble) and see what it takes to use it directly.

If anyone else has other thoughts or suggestions to share,
they're appreciated.

"Don't be afraid to ask (λf.((λx.xx) (λr.f(rr))))."

More information about the FOSS-GPS mailing list