[sugar] Mini-Conference Proposal: Automatic transfer/update of activities on the mesh

Eben Eliason eben.eliason
Tue Mar 25 17:31:27 EDT 2008


After just a couple well considered responses, it seems that this
might be another topic worthy of some time under the spotlight at the
mini-conference.  I copied both of these great responses to my initial
email below, just to make sure they remain for everyone to reference.
I trust that you can faithfully reconstruct my initial proposal and
questions from the responses.

- Eben


On Tue, Mar 25, 2008 at 4:02 PM, Benjamin M. Schwartz
<bmschwar at fas.harvard.edu> wrote:
> On Tue, 2008-03-25 at 13:46 -0400, Eben Eliason wrote:
>  > Naturally, there are some security concerns, but those could be easily
>  > addressed, I believe, with the usual signing mechanisms.  Updates to
>  > activities would only be transparent if the update was signed, etc.
>
>  I agree.  For a first implementation, only basic signing is required.
>  Eventually, we may have activities written by teams of children in which
>  new members come and go, and the projects occasionally fork.  This
>  requires a more complex signing/upgrade system.  I sketched one proposal
>  at [1]; it is not perfect.
>
>
>  > The bigger question is really determining how to make the whole
>  > transfer process work smoothly in these cases.  Can we use a torrent
>  > model to make it easy to get activities from the mesh, even as people
>  > come and go on an unreliable network?
>
>  For a first implementation, this is not necessary.  Most Activity
>  Bundles (.xo's) are about 100 KB or less.  Over a direct mesh link,
>  transferring small bundles takes about a second.  Only with very large
>  activities, and very bad links, will simple transfers be insufficient.
>
>
>  > Can we transfer it directly
>  > from someone who is in the activity we join?
>
>  This seems the simplest solution.
>
>
>  > If so, can we still ask
>  > the next activity participant for the remainder if the first one
>  > leaves?
>
>  Yes.  However, for a first implementation, the download should probably
>  just restart.  This optimization will only be important for activities
>  with exceptionally high turnover.
>
>
>  > As there has been interest expressed in developing basic OS
>  > integrated object transfer as a GSoC project, I wonder if those
>  > efforts could also be applied to this problem, or if this should be
>  > offered as another distinct project alternative.
>
>  Current implementations of file transfer (Read, and therefore
>  Distribute) work by getting a Stream Tube from Telepathy, and then
>  running a HTTP server on this tube.  Any near-term implementation of
>  transferring Journal Entry Bundles or Activity Bundles is likely to use
>  the same mechanism.
>
>  This works, and will work for the proposed case.  For the future, I see
>  file transfer as precisely the sort of thing that should be handled
>  internally to Telepathy.  Perhaps Telepathy should implement XEP-0234
>  (file transfer)[2] or even XEP-0214 (file sharing)[3].
>
>  > What do people think?
>
>  I think it would not be too hard, and should definitely be on the to-do
>  list.  It would be a major user-visible milestone in the journey toward
>  Complete Sugar.  There are several things that have to happen first:
>
>  1. Basic activity signing.
>  2. Pushing SVG files through Presence, so that I can see the icon in the
>  mesh for an activity I don't have.
>  3. Sane activity storage:
>  What if the shared session is a newer version of an installed activity,
>  but it's been modified by someone other than the original author?  I
>  should then be able to join, but it should be treated as a new activity,
>  not an upgrade, even though it has the same name.  This means we need an
>  activity storage mechanism that can handle multiple activities with the
>  same name.
>
>  Also, all installed .xo bundles must be kept around, or Sugar must be
>  able to reconstitute them on demand without invalidating the signatures.
>
>  --Ben
>
>  [1] http://lists.laptop.org/pipermail/security/2007-December/000341.html
>  [2] http://www.xmpp.org/extensions/xep-0234.html
>  [3] http://www.xmpp.org/extensions/xep-0214.html
>
>

On Tue, Mar 25, 2008 at 3:40 PM, Michael Stone <michael at laptop.org> wrote:
> Eben,
>
>  I've got more questions than answers for you, but perhaps my smaller
>  questions will make the overall problem easier to analyze.
>
>  Michael
>
>  Questions:
>
>  First, how will we discover that a code exchange is needed?
>
>   Three straw-man options include:
>
>   a) include adequate information in a presence notification or in a
>      resource discovery URL [1] to permit us to calculate decide
>      protocol compatibility
>
>   [1]: http://lists.laptop.org/pipermail/devel/2008-February/011108.html
>
>   b) add a new handshake to the "join a shared instance" protocol to
>      establish this information.
>
>   c) leave it up to the activity to figure out (perhaps with assistance
>      from a system service or library)
>
>  Next, let us assume that a code or data exchange is necessary in order
>  to provide protocol compatibility. How do I figure out what bits are
>  needed? How do I figure out where to go in order to get the requisite
>  bits?
>
>   I think it would be wise to add some indirection here so that people
>   who are not in physical proximity can acquire the bits from low-cost
>   sources when possible and to fall back on direct exchange of bits when
>   necessary. Also so that we can extend the bit-acquiry software with
>   new protocols as they become available.
>
>   (For a first draft, we might as well copy Read's use of
>   HTTP-over-Tubes, since it's already conveniently available to us.)
>
>   NB: If we ever want to imagine running Sugar on platforms other than
>   XOs, (or even between XOs running significantly different builds),
>   then we'd better consider system-dependency issues up front. (We can
>   ignore this question temporarily while doing feasibility studies on
>   our own platform, but if this idea is going to rock the world like I
>   want it to, then we need to think early on about giving the humans
>   operating our technology access to information adequate to debug and
>   work around incompatibilities between their respective systems.)
>
>  After acquiring the bits, there's a small question of what to do with
>  them. Do they go into the Journal as a new entry? Are they immediately
>  unpacked alongside the user's other activities? If so, do they
>  obscure older versions of the same activity? Should the older version be
>  removed?
>
>   I'm particularly concerned by Pippy-generated bundles here because
>   they seem like they might be particularly subject to edit wars simply
>   by being so easy to create and modify! (Should Pippy-generated bundles
>   "stake claims" to their names in the fashion proposed in [2]?)
>
>   [2]: http://dev.laptop.org/git?p=users/krstic/installer;a=tree;
>
>
>  > Naturally, there are some security concerns, but those could be easily
>  > addressed,
>
>  They are far from "easily" addressed, but there's a good argument that
>  they're _worth_ addressing because, in my opinion, easy and safe code
>  sharing is one of the most attractive UI goals of our project!
>
>
>  > I believe, with the usual signing mechanisms.  Updates to
>  > activities would only be transparent if the update was signed, etc.
>
>  Information assurance mechanisms primarily deal with spoofing attacks
>  and network hanky-panky. Isolation mechanisms are what we're using to
>  make it generally safer to run code, regardless of whether we know where
>  it came from. Both are necessary to make this "easy code sharing" policy
>  more safe to pursue.



More information about the Sugar-devel mailing list