[sugar] Flatland / the Home Turf
Ka-Ping Yee
laptop at zesty.ca
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
mailing list