#4043 HIGH Update.: [discussion] Group support in gabble and salut
Zarro Boogs per Child
bugtracker at laptop.org
Thu Nov 8 11:13:23 EST 2007
#4043: [discussion] Group support in gabble and salut
------------------------------+---------------------------------------------
Reporter: kimquirk | Owner: smcv
Type: enhancement | Status: new
Priority: high | Milestone: Update.2
Component: telepathy-other | Version:
Resolution: | Keywords:
Verified: 0 |
------------------------------+---------------------------------------------
Comment(by Eben):
Replying to [comment:3 smcv]:
> So: just what is a group, conceptually? It sounds as though you have
some working definition in the 1CC office that I'm not fully aware of. Use
cases?
A group is a list of contacts who have organized themselves around a
common interest or goal. The group provides a persistent "collaboration
space" within which the members may work on activities, chat, and share
objects with each other. The membership of the group is known to everyone
within the group, and anyone in the group may invite others to it or leave
it at any time.
Use cases could be "third grade class" or "my band" or "chess lovers" or
"reading group 5."
> And some more concrete questions, on the assumption that my view of what
you mean when you say "groups" isn't a million miles from the truth:
>
> * Who can be in a group? Am I right in assuming a group contains (only)
contacts?
Strictly speaking, yes, but the existence of a group implies that other
state is kept around (bulletin boards, for instance, require a shared
space for "posting" files and notes).
> * Are groups determined per-user (the user chooses to put Alice, Bob and
Chris in the group "my bestest friends"), or imposed by others (the
teacher chooses to put Alice, ..., and Zack in the group "class 12a" and
all their laptops automatically pick that up), or both?
Neither, exactly. The current vision for a group is that anyone may start
one, and anyone within the group may invite others, who become members
only upon acceptance of such an invitation. Groups are private, but openly
extensible; a group has no manager. As such, a user invites (not places)
Alice, Bob, and Chris to the group "our tight-knit group", and then some
(not necessarily proper) subset of those invited will accept the
invitation. Likewise, a teacher could invite Alice, ..., and Zack to
"class 12a", implicitly becoming a member of the group herself, and then
each child would have to accept the invitation.
> * Do you need to still be aware of groups while offline? (Assuming
they're server-stored, that would mean PS would have to save them locally,
since Salut obviously can't store anything on its lack of a server)
Absolutely. Groups should be made "more efficient" by the server, but
should function without it. The extent to which the shared "bboard" space
is stored offline requires some thought. If we simply store a local list
of references to all objects on a bboard, for instance, we can apply the
same visual design for presence and absence to indicate those which can be
retrieved from someone around within the group, and those which aren't
accessible based on the current network composition. If I was out sick
today, I can find out from my neighbor Alice that evening what others
posted to our group bboard, but I can only retrieve the files that Alice
herself posted or downloaded, perhaps.
> * When can you edit groups? Only when connected to the server, or while
offline with synchronization later, or what?
Groups can be modified at any time. If I choose to leave a group, I can
do so even when no other member of the group is around. My action will be
conveyed to other group members once I am back in contact. Likewise, If
Alice, Bob, and Chis are in a group, and Alice goes home where the only
other person she can reach is Dan, she may invite Dan to the group. Bob
and Chris will be informed of the new membership later.
> * Who can see who's in a group? Is it public information, or available
only to members, or available only to privileged members (e.g. only the
group creator), or does it need to be switchable?
We're virtually eliminating management completely. The creator is in no
way distinguishable from the members she first invited. Groups, at least
for now, will be private spaces within which activities can be
collaborated on, conversations may happen, and objects may be shared. No
one outside the group can see any of these activities, conversations,
objects, or for that matter, the group membership.
Obviously in cases like "chess lovers" it might be nice to have public
groups that anyone could find and join. This, however, adds a management
step to the group creation process, even if it is just one checkbox, which
we can ignore for now. (I say creation because it's a ''very'' hard
problem to deal with once the group has membership, since no member has
ownership or managerial status. If members ''join'' a group knowing it's
public, then they are aware that anything they say or share is also
public.) I think this is a great thing to have eventually, but it
requires more work to figure out how to create them and also how to
visualize them so others may join.
> * Do groups need an associated chatroom? If so, how is it used? Would it
be sufficient if it was implemented as "start the Chat activity and invite
all the people in this group" or does it need special-casing?
We do need a form of chatroom for the group, which will likely ''not'' be
an activity. Instead, some of the thinking leans towards a "bubble chat"
overlay in Groups view, which could be toggled on and off (one and the
same as the bboard, perhaps?). This would be an transient chat space,
with messages appearing over the XOs and then disappearing shortly
thereafter. It does not serve as a permanent record of conversation;
that's what the Chat activity is for. Of course, any member of the group
could start a "group chat" trivially by rolling over "Chat" in the Frame
and selecting "Chat with Group...<my group>", which would invite all group
members.
> * Can there be more than one group with the same human-readable name?
This is a very good question. My inclination is that we have to assume
so. Without a server to mediate groups at all times, this is going to
happen. It's simpler to assume that, as group membership is only known to
its members, the two groups may never conflict. The only troublesome case
occurs when Alice gets invited to a group of the same name as one she is
already in. Perhaps in such a case we simply allow Alice to create a "pet
name" for the new group as she accepts the invitation, so that it's
locally distinguished for her.
> * What are the priorities of the above considerations, on a scale from
"meh, don't really care" to "1.1 blocker"?
Groups as an organizational concept comes first. That is, having a way to
initiate activities with (or change sharing scope to) a predefined contact
list is the fundamental building block. The chat and bboard
functionalities are extensions of the group concept which provide the
persistent collaboration space. I'm not sure, offhand, which of these is
more important in the near term. As mentioned, I'm more interested in all
of these at the private level for now.
--
Ticket URL: <http://dev.laptop.org/ticket/4043#comment:6>
One Laptop Per Child <http://dev.laptop.org>
OLPC bug tracking system
More information about the Bugs
mailing list