[Sugar-devel] Collaboration support for sugar web activities
Emil Dudev
emildudev at gmail.com
Sun Feb 16 14:43:25 EST 2014
Hello,
It's been a long time...
To be honest, I haven't worked much on this.
I've been following the Sugarizer project and I'm not exactly sure how
sugar web collaboration will continue.
Anyway, when I last tested some things 2 weeks ago regarding telepathy and
tried to setup a parallel websocket protocol for collaboration, I stumbled
upon some difficulties. Today I managed to fix some things in my code and
I'm hoping to get a second opinion.
As mentioned above, I've tried to set up a websocket protocol for activity
collaboration (including non-web activities and the mesh box/neighborhood
view). Sadly, I'm having difficulties with sugar's code, as there isn't a
good abstraction layer and telepathy is somewhat everywhere.in the code.
What I've currently managed is to just display the users in the
neighborhood view. I have yet to add support for invites in this new
protocol.
The problems I have are:
1. from sugar's core I can only know which activities are currently
running, while I need a list of only the shared activities (and their share
scope). Telepathy does this by having it's code both in sugar's core and in
sugar's toolkit.
2. In order for the two protocols to run parallel and to not have
duplicates on the meshbox, I'd need some sort of telepathy contact ID and a
buddy key (I have no idea where to get these from). Also, telepathy room
handles and buddy handles seem to be passed around between instances of
different types (this is what I meant by 'telepathy is everywhere in the
code').
I've tried to leave many comments in my code and there I've documented more
problems. Yet the above 2 are somewhat major and I'm not sure how to handle
them.
Here is my code:
Changes to gwebsockets, so it can have client functionality:
https://github.com/edudev/gwebsockets/
A web client that mirror's TogetherJS's server (it just replies the
messages): https://github.com/edudev/web-reply
Sugar (only neighborhood.py is important):
https://github.com/edudev/sugar/tree/webcollaborationframework
Cheers,
Emil Dudev
On Wed, Jan 22, 2014 at 1:07 AM, Daniel Narvaez <dwnarvaez at gmail.com> wrote:
> 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 XOicons. 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/20140216/dc099f2f/attachment-0001.html>
More information about the Sugar-devel
mailing list