On Cerebro, Telepathy, yokes and whites (was Re: cerebro in sugar)

Polychronis Ypodimatopoulos ypod at mit.edu
Tue Jun 10 13:05:34 EDT 2008


Tomeu and Marco,

For the history, both me and another student from MIT tried to implement 
a connection manager back in January but gave up after a couple of 
weeks, even with significant help from Daf. We don't claim to be expert 
python programmers, but spending two weeks on something and still not 
even having understood what needs to be implemented (let alone 
implementing it) to get a connection manager going, or exactly how 
telepathy works was quite frustrating. What is more frustrating is that 
the telepathy API is no secret, but it seems that there is some distance 
between the API and how the presence service and telepathy really work 
on the laptop.

Like Michael pointed out, "there are few people at OLPC who understand 
and enjoy telepathy". I think this is an understatement. Personally, I 
think that Collabora was very pressed to get something working on the 
laptop and the resulting presence stack looks like one hack on top of 
another. For example, there are tons of abstraction layers, yet 
activities have visibility (while they shouldn't) on how telepathy works 
(since telepathy is only a dependency to sugar, this should not be the 
case). Also, the presence service needs to understand if it should 
switch from salut to gabble, but the broadcast storm caused by salut 
won't let XO get an IP address through DHCP, which would mean that 
there's a school server around and..... you get the picture! The current 
plan to attack scalability problems is implementing gadget from scratch 
which, if I understand correctly, is a plug-in to jabber which already 
has many problems of its own. Are we sure we're investing our limited 
time in the right direction?

Personally, I don't think this is entirely Collabora's fault. I also 
think that if you want to have "distinct yoke and white", this is where 
you should start: Make telepathy dead-simple to understand by reading 
the code, not the API. I did a funny activity showing XOs and their 
relative distance 
(http://www.olpcnews.com/hardware/wireless/xo_space_where_you_are.html) 
almost a year ago in a couple of afternoons, when there was no hint of 
Sugar APIs (not even hippocanvas!) because it was dead-simple to inspect 
other activities' code and how sugar works.

Which brings us to cerebro. Since I got stuck with telepathy, I decided 
to circumvent telepathy altogether, at the very least as a proof of 
concept for cerebro's functionality. The result is an API 
(http://wiki.laptop.org/go/Cerebro#Programming_API ) that offers not 
only presence and data sharing between activities, but is also a 
/complete collaboration framework/: you can share/join activities, get a 
list of all currently shared activities and users participating in them, 
invitations, out-of-band chat, interoperability with Windows, embedded 
Linux and OpenMoko (collaboration tested on all these platforms) and 
most importantly, scalability.

Now, the nightmare strikes back: I have to go back to implementing a 
connection manager. Tomeu has a point: "How many people you know that 
understands and enjoys any of mozilla, gtk, pygtk, abiword, X, cairo, 
etc?". But when did OLPC start doing compromises? And if you have to do 
a compromise, it's better not to do it at such a critical point like the 
collaboration in sugar.

Here's what I propose:

1) Someone should take the lead at implementing a connection manager and 
I will actively participate, not just by adapting cerebro's API if 
necessary, but also with implementing the necessary stubs for the 
connection manager. But the skeleton must be well understood by the 
person implementing it!

2) Make provision in both sugar and activities so that there is a clear 
abstraction from telepathy so that _if_ a better collaboration stack 
comes along, telepathy won't be "hardcoded" in sugar. This mainly 
involves documenting the existing calls from sugar/activities to 
telepathy (and objects returned thereof) and signals provided by telepathy.

3) Get cerebro into joyride which will help a lot with the upcoming 
multi-hop tests: humans will be operating and updating their XO that 
participates in the mesh in MIT campus, so I think it is critical to 
have cerebro in joyride. Am I wrong?

Pol

-- 
Polychronis Ypodimatopoulos
Graduate student
Viral Communications
MIT Media Lab
Tel: +1 (617) 459-6058
http://www.mit.edu/~ypod/




More information about the Devel mailing list