[Sugar-devel] Collaboration support for sugar web activities

Daniel Narvaez dwnarvaez at gmail.com
Tue Jan 21 18:07:57 EST 2014

On 20 January 2014 22:22, Emil Dudev <emildudev at gmail.com> wrote:

> On Mon, Jan 20, 2014 at 10:33 PM, Daniel Narvaez <dwnarvaez at gmail.com>wrote:
>> On 20 January 2014 13:53, Emil Dudev <emildudev at gmail.com> wrote:
>>> On Mon, Jan 20, 2014 at 12:48 PM, Daniel Narvaez <dwnarvaez at gmail.com>wrote:
>>>> * Why did you go with a separate web activity instead on integrating
>>>> directly in the shell?
>>> Integrating it directly with the current neighborhood?
>> Not necessarily, I was also wondering why you didn't write the same thing
>> in python inside the shell. But now I probably see, an activity was the
>> only sensible place to put it if you wasn't merging with the telepathy view.
> I've got some plans rotating in my head to rebuild sugar entirely as a
> desktop web app. It's subjective. I'll try to not think 'big'. When I have
> some free time I'll work on integrating it with the current neighborhood.

sugar-web started from an experiment with a full rewrite of Sugar based on
the Firefox OS backend. I find thinking 'big' to be a very useful way to
generate ideas, then come back to the boring realities of backward
compatibility and such :)

>> One problem would be of duplicates if a user is both on the telepathy
>>> neighborhood and this 'new' one.
>>>  As mentioned in the earlier messages, I was thinking of writing a
>>> python class that would act as the client between the sugar's mesh and the
>>> web socket server.
>>> I wasn't sure how exactly to handle regular activities and web
>>> activities in such a 'merged' neighborhood.
>> I'm not sure to understand where we would get duplicates. It seems like
>> the mesh view is a list of activities. The new framework will provide you
>> another list. Isn't it just matter of merging the two? Even in the current
>> view if the user is in two activities, I believe we show it two times.
>> (Might very well be missing something!).
> As mentioned in the earlier messages, I was never able to get
> collaboration between normal activities to work, so probably I'm missing
> something.
> From what I was able to get working with telepathy is that on the network
> view (without the user doing/sharing anything), I can see all the users in
> 'the neighborhood' (on the same jabber server). I see their XO icons.
> These icons could be duplicated, as there would be an icon from the jabber
> server and an icon from the web socket server for the same user.

Yes, I had forgot about XO icons which are not inside an activity. We could
probably deduplicate those by keeping the telepathy id in the XO metadata
for the new framework.

> Besides the XO icons on the network view, I've heard rumors (and/or seen
> pictures) of having shared activities next to a user's icon, having adhoc/
> wifi networks on the view, having other things on the view.

I think it's more likely activity icons with Xo icons grouped around them.

> What I've done with the sugar-net activity is to place all the users on a
> random position and when the mouse hovers the user's icon a list with that
> user's shared activities will show. Clicking on an item from the list will
> join the activity.
> I've went for a similar, but slightly different approach. Who can I ask
> for the proper behavior of the network view? When I'll be merging the two,
> it would be good to know what to aim for. I'll probably not be able to test
> all the features (e.g. wifi/adhoc networks).

I would try with a separate email about that subject. Walter, Manuel,
Gonzalo probably knows more then me about that. Problem is that I think
most of the people that had some experience with the collab stuff are not
involved anymore. Ultimately you might have to read the UI code and guess
from there :)

> The reason I want to figure out if it's possible to merge the views is
>> that we are not going to be able to drop telepathy based collaboration any
>> time soon. We will have first to prove that the new framework works better
>> and get activity authors to buy into it, then deprecate, finally wait a few
>> years for activities to be migrated. So we need a plan on how the two can
>> coexist. I'm afraid having two separate views it's not something we can
>> afford user experience wise... but it would be good to hear the design team
>> opinions on this.
> Right. Life would be a lot easier if you didn't have to worry about
> backward compatibility and deprecation policies.
> I haven't given much thought to telepathy and normal activities. It won't
> happen again, I'll think of them first, before I do something collaboration
> related.

Ignoring backward compatibility is often good when you are doing the
initial research on something important like the collaboration framework,
so don't let me bring you back to boring realities too soon :)

>  * Would it be possible to implement this without adding to apisocket and
>>>> thus making it sugar specific?
>>> Making web collaboration sugar specific, or not (being able to
>>> collaborate from a normal browser)?
>>> Since apisocket.py is the only way to communicate between the javascript
>>> code and sugar, I'd say it won't be easy.
>>> As noted above, it won't be very easy to have collaboration outside of
>>> sugar, because the browser does not know where the activity page lies (if
>>> it needs to join/open an activity).
>>> It is possible to join a web activity, without changes to apisocket.py.
>>> The problem would be that the current webkit page (sugar-net activity)
>>> would be overwritten by the new activity (the one that is joined). There's
>>> no problem from the web activity's point of view. The problem is that sugar
>>> would still think that this is the sugar-net activity, and I'm not sure
>>> what that would lead to. An other problem is that the sugar-net activity is
>>> lost (it's page was reloaded into the joined activity).
>>> A possible way to solve this is to open the new activity's page into a
>>> separate tab. But then there are other problems: sugar would think the
>>> sugar-net activity and it's new tab (the new activity) are one. Also, I'm
>>> not sure how tab handling would look in webkit, without the top navigation
>>> bars.
>> Yeah, some sugar specific bits will be necessary to launch the activity.
>> It seems like it would be good to keep those bits as minimal as possible.
> When the network view's are merged, launching an activity should be
> handled without javascript. Actually the only thing that would be needed in
> apisocket.py would be to let sugar know when the sharing has started and
> when it has ended. Can't think of anything else, other than letting sugar
> 'force' a web activity into sharing itself.

Could the shell know directly from the server when an activity has
started/ended rather than going through apisocket?

> The questions don't seem to have simple answers...
>>> When I'm writing the code, I'm not sure which way to go. I don't believe
>>> that I can decide what is best for sugar. It would be nice to know what the
>>> community is thinking and what is their vision of how web collaboration
>>> should be handled.
>> Yes. I think we are all a bit unsure about the way we should go. The
>> research you are doing is extremely valuable because it's bringing us
>> closer to figure that out... Lionel and Suraj has been experimenting with
>> collaboration too, so it would be very interesting to hear their feedback.
> I'm glad that I can help sugar with it's evolution. At the same time I'm
> able to learn a lot about the many technologies out there in the world. I
> just hope I'm not doing things too slow.

Hehehe, I've been pretty shocked by the speed  you GCI guys has been doing
things, I had an hard time to keep up, so definitely don't worry about that
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sugarlabs.org/archive/sugar-devel/attachments/20140122/710daa91/attachment-0001.html>

More information about the Sugar-devel mailing list