[sugar] Flatland / the Home Turf

Ka-Ping Yee laptop
Sun Aug 12 03:28:28 EDT 2007


Hi folks,

As the discussion about the collaboration model continues, I'd like to
draw your attention to the Flatland page on the OLPC Wiki:

    http://wiki.laptop.org/go/Flatland

I'm hoping you'll enjoy some of the ideas there.  Although the page
describes a different style of copy/paste interaction than Sugar's
current clipboard, the big ideas are more important:

1. Home turf

    Something I really like about Flatland is the concept of a place
    where the child has creative control -- a place where the child
    can put her "stuff" and that she can decorate as she likes.  Other
    places are all controlled by programs (the Sugar zoom levels have
    standardized appearances, and each activity dictates its own look
    and feel).  Wouldn't it be wonderful for there to be a place that
    truly belongs to the child?  If there's a place where the child is
    free to create a home for herself, I think it would increase her
    sense of ownership of the laptop and lower barriers to creativity.

2. Lightweight access

    There are a couple of reasons why home turf fits better as part of
    Sugar than as a separate activity.  First, most activities follow
    an application-centric model, in which they each manipulate a
    particular type of document and these documents are stored in the
    Journal.  But the home turf is a place, not a document -- so it
    shouldn't be confined inside an activity.  Second, launching
    activities is a heavyweight process, both in the mental sense (one
    has to decide which activity to use and commit to it) and in the
    practical sense (starting up an activity takes a long time).  The
    child shouldn't have to wait for an activity to start up before
    she can jot down a thought in a moment of inspiration.  Home isn't
    something you "launch"; it's the place you wake up in every day,
    and a place to be creative without having to start an activity.

3. Freeform arrangement of objects (initially images)

    We can get a lot of bang-for-the-buck from just two operations:
    grabbing snapshots of screen regions, and arranging them in a
    scrollable space.  This alone is sufficient to let children play
    any board game they want on the laptop, and invent their own board
    games as well.  Generalizing this to other object types makes the
    home turf a progressively richer environment.

4. Inviting others to come over and play

    Once one has a home turf, inviting friends over is a natural step.
    There's just something really nice about inviting a friend to see
    your home.  Decorating it makes it a place the child will want to
    show off and share, and being able to invite friends over also
    motivates the creative effort one spends to decorate it.  A play
    space shouldn't be a document of one type, confined to one
    activity -- but rather a place where objects of many types can be
    freely collected and mixed; from there, one can "dive into"
    particular activities to manipulate objects of particular types.


Mark Miller and I met with Eben on Friday morning, and among other
things, we talked a bit about how some of these ideas might fit into
Sugar's model.  Here are a few thoughts along those lines:

  - Flatland talks about an overlay for cutting and pasting, whereas
    Sugar currently uses the left side of the frame as a clipboard.
    The overlay method offers more direct manipulation and visibility
    of the clipped objects; on the other hand, the frame method makes
    it easier to move things back and forth between the clipboard and
    an activity because you can see it and the activity side-by-side.
    One possible compromise would be to keep the clipboard on the
    frame, but show more of the object content (e.g. pop up the whole
    image) when you mouse-over one of the icons on the clipboard.  In
    that case, there's still the open question of how we provide the
    snapshot tool in all contexts; perhaps it can be a button in or
    near the clipboard area of the frame.

  - To support the display of objects in the home turf, each object
    needs at least two APIs: one to display the object at full size,
    and one to do hit-testing on the object.  It looks like these APIs
    are going to be needed anyway to support posting objects on
    bulletin boards.

  - What would be a good place for the home turf?  There could be a
    dedicated Place for this on the places bar, or the bulletin board
    corresponding to the home zoom level is another possibility.  In
    the latter case, there's the open question of how to get there
    easily: is there a single key or button that will take you
    straight home, or do you have to switch to the Home zoom level
    and then activate the Overlay?

  - What does it mean to invite a friend into your home?  I'm under
    the impression that most of the discussions about sharing have
    assumed peer-to-peer sharing, where everyone has full and equal
    access to all content in the shared space.  On the other hand, a
    home turf resides on a single laptop; each laptop carries the
    authoritative definition of its own home turf, and the child
    owning that home turf should have some special control over it.
    P2P sharing and hosted sharing aren't exclusive options -- it
    seems clear that there are good reasons to support both.

As Eben explained it to me (if I understand correctly), the P2P model
goes something like this:

  - In a shared activity, there's an object that everyone is working
    on together.

  - Everyone has their own copy of the object.

  - When multiple participants are online, all the copies of the
    object are kept in sync.

  - When the state of the object is changed by one participant, the
    state change is broadcast to all the other participants; each
    laptop is responsible for reconciling the state change messages so
    that its copy of the object ends up in the same state regardless
    of the order in which the messages arrive.

  - When a participant goes offline, and then comes back online later:

      - If the object's state hasn't changed during the offline
        period, the participant rejoins the activity working on the
        same object.

      - If the object's state has changed during the offline period,
        the participant now has two separate objects, the local old
        version and a copy of the shared current version.

The "hosted sharing model" would go something like this:

  - A child's home turf is a space of heterogeneous objects maintained
    on the child's laptop.

  - When the child invites a friend to visit, and the friend visits
    the child's home turf, the friend receives a view of the visible
    part of the home turf.

  - The visitor can copy objects from the host's home turf into his
    local clipboard, or paste objects from his clipboard into the
    host's home turf.  Changes (moving around objects, pasting
    objects) always take effect on the host's laptop.

  - Objects don't diverge because each object has only one
    authoritative copy, residing on the host's laptop.

  - Probably only the host would be able to delete objects; visitors
    wouldn't be allowed to delete them.  Perhaps the host would also
    have a special "undo" action that would revert the home turf to
    its state a short time ago, or its state before visitors arrived.

What do you think?  Do I understand the distributed-object model
right, and how do you see the possibilities for a "home turf" fitting
in to Sugar?


-- ?!ng



More information about the Sugar-devel mailing list