XWiki chat

classic Classic list List threaded Threaded
17 messages Options
Reply | Threaded
Open this post in threaded view
|

XWiki chat

Fabio Mancinelli-4
Hi everybody,

one of the research projects we are involved in is about realtime
collaboration. One of the aspects we wanted to investigate was the
integration of a chat system within XWiki.
I've been working on this lately and I've built a prototype that uses
an embedded XMPP server for handling all the communication.

I still have to cleanup a bit the code before committing it, but I
took a video of how things work.
You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so
make sure to change the video quality and to switch to fullscreen)

There are several things we need to address (authentication is one of
them), but I think we could have a functional extension pretty soon.

It's 1:30am right now, so I will give you more details in a next mail :)

Enjoy.

Thanks,
Fabio
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

Ecaterina Moraru (Valica)
Hi Fabio,

Looks nice. I don't know much about this subject but I know Anca played a
bit with this idea at 2010's hackaton if I remember correctly.

Thanks,
Caty


On Sat, Mar 31, 2012 at 02:46, Fabio Mancinelli
<[hidden email]>wrote:

> Hi everybody,
>
> one of the research projects we are involved in is about realtime
> collaboration. One of the aspects we wanted to investigate was the
> integration of a chat system within XWiki.
> I've been working on this lately and I've built a prototype that uses
> an embedded XMPP server for handling all the communication.
>
> I still have to cleanup a bit the code before committing it, but I
> took a video of how things work.
> You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so
> make sure to change the video quality and to switch to fullscreen)
>
> There are several things we need to address (authentication is one of
> them), but I think we could have a functional extension pretty soon.
>
> It's 1:30am right now, so I will give you more details in a next mail :)
>
> Enjoy.
>
> Thanks,
> Fabio
> _______________________________________________
> devs mailing list
> [hidden email]
> http://lists.xwiki.org/mailman/listinfo/devs
>
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

Guillaume Lerouge
Hi Fabio,

it looks very cool, good job!

Guillaume

On Mon, Apr 2, 2012 at 15:06, Ecaterina Moraru (Valica)
<[hidden email]>wrote:

> Hi Fabio,
>
> Looks nice. I don't know much about this subject but I know Anca played a
> bit with this idea at 2010's hackaton if I remember correctly.
>
> Thanks,
> Caty
>
>
> On Sat, Mar 31, 2012 at 02:46, Fabio Mancinelli
> <[hidden email]>wrote:
>
> > Hi everybody,
> >
> > one of the research projects we are involved in is about realtime
> > collaboration. One of the aspects we wanted to investigate was the
> > integration of a chat system within XWiki.
> > I've been working on this lately and I've built a prototype that uses
> > an embedded XMPP server for handling all the communication.
> >
> > I still have to cleanup a bit the code before committing it, but I
> > took a video of how things work.
> > You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so
> > make sure to change the video quality and to switch to fullscreen)
> >
> > There are several things we need to address (authentication is one of
> > them), but I think we could have a functional extension pretty soon.
> >
> > It's 1:30am right now, so I will give you more details in a next mail :)
> >
> > Enjoy.
> >
> > Thanks,
> > Fabio
> > _______________________________________________
> > devs mailing list
> > [hidden email]
> > http://lists.xwiki.org/mailman/listinfo/devs
> >
> _______________________________________________
> devs mailing list
> [hidden email]
> http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

Fabio Mancinelli-4
In reply to this post by Ecaterina Moraru (Valica)
Yes, I looked at Anca and Marta's code to get started, though I
rewrote the whole thing using more recent technologies.
The idea here is to integrate the chat server with XWiki so that it
can take into account data on the server. In particular automatic
authentication and data from your social network.

I am cleaning up the code of the prototype and I will commit it soon
so that you can see what I did, and also try it by yourself :)

-Fabio


On Mon, Apr 2, 2012 at 3:06 PM, Ecaterina Moraru (Valica)
<[hidden email]> wrote:

> Hi Fabio,
>
> Looks nice. I don't know much about this subject but I know Anca played a
> bit with this idea at 2010's hackaton if I remember correctly.
>
> Thanks,
> Caty
>
>
> On Sat, Mar 31, 2012 at 02:46, Fabio Mancinelli
> <[hidden email]>wrote:
>
>> Hi everybody,
>>
>> one of the research projects we are involved in is about realtime
>> collaboration. One of the aspects we wanted to investigate was the
>> integration of a chat system within XWiki.
>> I've been working on this lately and I've built a prototype that uses
>> an embedded XMPP server for handling all the communication.
>>
>> I still have to cleanup a bit the code before committing it, but I
>> took a video of how things work.
>> You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so
>> make sure to change the video quality and to switch to fullscreen)
>>
>> There are several things we need to address (authentication is one of
>> them), but I think we could have a functional extension pretty soon.
>>
>> It's 1:30am right now, so I will give you more details in a next mail :)
>>
>> Enjoy.
>>
>> Thanks,
>> Fabio
>> _______________________________________________
>> devs mailing list
>> [hidden email]
>> http://lists.xwiki.org/mailman/listinfo/devs
>>
> _______________________________________________
> devs mailing list
> [hidden email]
> http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

Roman Muntyanu
In reply to this post by Fabio Mancinelli-4
Hello Fabio,

  That is a great feature.
  Interesting to know: will the embedded XMPP server that you have used be capable of hosting conversations (audio, video, desktop sharing) using this tool http://jitsi.org/index.php/Main/HomePage ?  

Regards,
  Roman

-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of Fabio Mancinelli
Sent: Saturday, March 31, 2012 02:46 AM
To: XWiki Developers
Cc: wiki30
Subject: [xwiki-devs] XWiki chat

Hi everybody,

one of the research projects we are involved in is about realtime collaboration. One of the aspects we wanted to investigate was the integration of a chat system within XWiki.
I've been working on this lately and I've built a prototype that uses an embedded XMPP server for handling all the communication.

I still have to cleanup a bit the code before committing it, but I took a video of how things work.
You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so make sure to change the video quality and to switch to fullscreen)

There are several things we need to address (authentication is one of them), but I think we could have a functional extension pretty soon.

It's 1:30am right now, so I will give you more details in a next mail :)

Enjoy.

Thanks,
Fabio
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

Fabio Mancinelli-4
In reply to this post by Fabio Mancinelli-4
Hi Everybody,

as promised here it is a more detailed mail about the work I did on XWiki chat.

First of all I committed the code of the current prototype here:
https://github.com/xwiki-contrib/xwiki-platform-chat

Now some technical details:

1) The system uses an embedded Vysper XMPP server
(http://mina.apache.org/vysper/) with the Multi User Chat extension.

2) The communication is done using the BOSH protocol
(http://en.wikipedia.org/wiki/BOSH). The BOSH endpoint is in the
application context path, which means that the BOSH servlet will
receive all the cookies as the other servlets (important for
authentication, see after)

3) The whole UI of the chat system is contained in the
XWiki.XWikiChatSkin. I've setup some tricky XSL transformations for
bundling all the needed resources into this skin (see
https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-ui/src/main/build/transformations/xwiki-chat-skin.xsl)
The result is that all javascript files, VM overrides, and CSS files
are added to the skin as properties.

4) The Javascript, VM overrides and templates are available as
separate file in
https://github.com/xwiki-contrib/xwiki-platform-chat/tree/master/xwiki-platform-chat-ui/src/main.
In order to hack it I use https://github.com/xwiki/xwiki-debug-eclipse
and make symbolic links through the Eclipse interface so that those
resources are available as if they were on the file system.

5) The current authentication is dummy (see
https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-server/src/main/java/org/xwiki/chat/server/NullUserAuthorization.java)
What is needed to do is to process the data coming from the cookies
and use the XWiki authentication subsystem to check the credentials
coming at the beginning of an XMPP session. This could be quite tricky
and will need some work for modifying the BoshServlet in order to make
these credentials available to the code that will need them.

6) When the page is loaded a connection is established and several
chat rooms are automatically joined: wiki, space and page. This of
course is temporary. The idea is that on page load the user will joing
the chatroom for the current wiki, the current space and the current
page, depending on what she is looking at. This means that there will
potentially be a chat room for every page in the wiki, for every space
and, in a multi-wiki environment, for every wiki. The number of users
in these chatroom will depend on what the users are actually working
on.

7) Chatrooms are left on page unload. This means that looking at the
chatrooms population we might be able to understand how many users are
currently connected and where.

8) Since XWiki has a feature for defining a social network (i.e.,
following/followers) this data can be used to show in the chat the
users that I am following that are online, so that I might be able to
send them private messages.

9) Currently no the XMPP server is not backed by any storage, but it
is possible to write a storage system that stores all the discussions
in some wiki object (e.g., a page) so that a trace is kept.

10) The XMPP server also supports a Publish/Subscribe module. This
could be used to implement a live notification system. But even
without using pubsub, a special chatroom can be used to send these
messages that will be displayed, for example, using a special UI à la
growl (http://growl.info/screenshots) or equivalent.

There is currently a limitation with the Vysper BOSH servlet... It
seems that it doesn't like too much Tomcat which can be a problem. The
thread where the problem is explained is here:
http://mail-archives.apache.org/mod_mbox/tomcat-users/201201.mbox/%3C4F1031F3.8060304@...%3E

I haven't yet investigated the problem, but a possible solution (or a
roadmap towards a solution) should be found as soon as possible
because if we start to integrate the authorization system and the
storage system, it would be difficult to port it to another system [1]

I think that's all for the moment.

Of course comments are welcome.

-Fabio

[1] I've looked at other XMPP servers, but I chose Vysper because it
is part of a well established Apache project, it's very simple to use,
supports all that we need (embeddable server, multi user chat, etc.)
and has a quite active community. Other solutions were either GPLv3,
or not showing a clear situation wrt the community and the features.

On Sat, Mar 31, 2012 at 1:46 AM, Fabio Mancinelli
<[hidden email]> wrote:

> Hi everybody,
>
> one of the research projects we are involved in is about realtime
> collaboration. One of the aspects we wanted to investigate was the
> integration of a chat system within XWiki.
> I've been working on this lately and I've built a prototype that uses
> an embedded XMPP server for handling all the communication.
>
> I still have to cleanup a bit the code before committing it, but I
> took a video of how things work.
> You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so
> make sure to change the video quality and to switch to fullscreen)
>
> There are several things we need to address (authentication is one of
> them), but I think we could have a functional extension pretty soon.
>
> It's 1:30am right now, so I will give you more details in a next mail :)
>
> Enjoy.
>
> Thanks,
> Fabio
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

Fabio Mancinelli-4
In reply to this post by Roman Muntyanu
Hi Roman,

I don't know yet.
As I wrote in a previous email, I used the Vysper server which is a
standard XMPP server.
If Jitsi is able to do what it does using a standard XMPP server then
it would be possible to use Jitsi with the system I showed.

-Fabio

On Mon, Apr 2, 2012 at 7:26 PM, Roman Muntyanu
<[hidden email]> wrote:

> Hello Fabio,
>
>  That is a great feature.
>  Interesting to know: will the embedded XMPP server that you have used be capable of hosting conversations (audio, video, desktop sharing) using this tool http://jitsi.org/index.php/Main/HomePage ?
>
> Regards,
>  Roman
>
> -----Original Message-----
> From: [hidden email] [mailto:[hidden email]] On Behalf Of Fabio Mancinelli
> Sent: Saturday, March 31, 2012 02:46 AM
> To: XWiki Developers
> Cc: wiki30
> Subject: [xwiki-devs] XWiki chat
>
> Hi everybody,
>
> one of the research projects we are involved in is about realtime collaboration. One of the aspects we wanted to investigate was the integration of a chat system within XWiki.
> I've been working on this lately and I've built a prototype that uses an embedded XMPP server for handling all the communication.
>
> I still have to cleanup a bit the code before committing it, but I took a video of how things work.
> You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so make sure to change the video quality and to switch to fullscreen)
>
> There are several things we need to address (authentication is one of them), but I think we could have a functional extension pretty soon.
>
> It's 1:30am right now, so I will give you more details in a next mail :)
>
> Enjoy.
>
> Thanks,
> Fabio
> _______________________________________________
> devs mailing list
> [hidden email]
> http://lists.xwiki.org/mailman/listinfo/devs
> _______________________________________________
> devs mailing list
> [hidden email]
> http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

Guillaume Lerouge
Hi Fabio,

this looks very sleek. I would love the ability to chat with someone else
while working on a wiki page. I've also seen it requested by users a number
of times.

Question: is the chat also displayed in edit / inline modes? That would be
very useful when working with someone else on the content of a page.

Guillaume

On Tue, Apr 3, 2012 at 00:53, Fabio Mancinelli
<[hidden email]>wrote:

> Hi Roman,
>
> I don't know yet.
> As I wrote in a previous email, I used the Vysper server which is a
> standard XMPP server.
> If Jitsi is able to do what it does using a standard XMPP server then
> it would be possible to use Jitsi with the system I showed.
>
> -Fabio
>
> On Mon, Apr 2, 2012 at 7:26 PM, Roman Muntyanu
> <[hidden email]> wrote:
> > Hello Fabio,
> >
> >  That is a great feature.
> >  Interesting to know: will the embedded XMPP server that you have used
> be capable of hosting conversations (audio, video, desktop sharing) using
> this tool http://jitsi.org/index.php/Main/HomePage ?
> >
> > Regards,
> >  Roman
> >
> > -----Original Message-----
> > From: [hidden email] [mailto:[hidden email]] On Behalf
> Of Fabio Mancinelli
> > Sent: Saturday, March 31, 2012 02:46 AM
> > To: XWiki Developers
> > Cc: wiki30
> > Subject: [xwiki-devs] XWiki chat
> >
> > Hi everybody,
> >
> > one of the research projects we are involved in is about realtime
> collaboration. One of the aspects we wanted to investigate was the
> integration of a chat system within XWiki.
> > I've been working on this lately and I've built a prototype that uses an
> embedded XMPP server for handling all the communication.
> >
> > I still have to cleanup a bit the code before committing it, but I took
> a video of how things work.
> > You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so make
> sure to change the video quality and to switch to fullscreen)
> >
> > There are several things we need to address (authentication is one of
> them), but I think we could have a functional extension pretty soon.
> >
> > It's 1:30am right now, so I will give you more details in a next mail :)
> >
> > Enjoy.
> >
> > Thanks,
> > Fabio
> > _______________________________________________
> > devs mailing list
> > [hidden email]
> > http://lists.xwiki.org/mailman/listinfo/devs
> > _______________________________________________
> > devs mailing list
> > [hidden email]
> > http://lists.xwiki.org/mailman/listinfo/devs
> _______________________________________________
> devs mailing list
> [hidden email]
> http://lists.xwiki.org/mailman/listinfo/devs
>
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

Fabio Mancinelli-4
On Tue, Apr 3, 2012 at 10:42 AM, Guillaume Lerouge <[hidden email]> wrote:
> Hi Fabio,
>
> this looks very sleek. I would love the ability to chat with someone else
> while working on a wiki page. I've also seen it requested by users a number
> of times.
>
> Question: is the chat also displayed in edit / inline modes? That would be
> very useful when working with someone else on the content of a page.
>
Yep. The idea is that the chat is *always* displayed whatever you do.
Currently the <div> containing the chat toolbar is in the footer.vm,
so if you see the copyright notice you also see the chat :)

-Fabio

> Guillaume
>
> On Tue, Apr 3, 2012 at 00:53, Fabio Mancinelli
> <[hidden email]>wrote:
>
>> Hi Roman,
>>
>> I don't know yet.
>> As I wrote in a previous email, I used the Vysper server which is a
>> standard XMPP server.
>> If Jitsi is able to do what it does using a standard XMPP server then
>> it would be possible to use Jitsi with the system I showed.
>>
>> -Fabio
>>
>> On Mon, Apr 2, 2012 at 7:26 PM, Roman Muntyanu
>> <[hidden email]> wrote:
>> > Hello Fabio,
>> >
>> >  That is a great feature.
>> >  Interesting to know: will the embedded XMPP server that you have used
>> be capable of hosting conversations (audio, video, desktop sharing) using
>> this tool http://jitsi.org/index.php/Main/HomePage ?
>> >
>> > Regards,
>> >  Roman
>> >
>> > -----Original Message-----
>> > From: [hidden email] [mailto:[hidden email]] On Behalf
>> Of Fabio Mancinelli
>> > Sent: Saturday, March 31, 2012 02:46 AM
>> > To: XWiki Developers
>> > Cc: wiki30
>> > Subject: [xwiki-devs] XWiki chat
>> >
>> > Hi everybody,
>> >
>> > one of the research projects we are involved in is about realtime
>> collaboration. One of the aspects we wanted to investigate was the
>> integration of a chat system within XWiki.
>> > I've been working on this lately and I've built a prototype that uses an
>> embedded XMPP server for handling all the communication.
>> >
>> > I still have to cleanup a bit the code before committing it, but I took
>> a video of how things work.
>> > You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so make
>> sure to change the video quality and to switch to fullscreen)
>> >
>> > There are several things we need to address (authentication is one of
>> them), but I think we could have a functional extension pretty soon.
>> >
>> > It's 1:30am right now, so I will give you more details in a next mail :)
>> >
>> > Enjoy.
>> >
>> > Thanks,
>> > Fabio
>> > _______________________________________________
>> > devs mailing list
>> > [hidden email]
>> > http://lists.xwiki.org/mailman/listinfo/devs
>> > _______________________________________________
>> > devs mailing list
>> > [hidden email]
>> > http://lists.xwiki.org/mailman/listinfo/devs
>> _______________________________________________
>> devs mailing list
>> [hidden email]
>> http://lists.xwiki.org/mailman/listinfo/devs
>>
> _______________________________________________
> devs mailing list
> [hidden email]
> http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

vmassol
Administrator
In reply to this post by Fabio Mancinelli-4
Hi Fabio,

I've just looked at the video and it's just great! :)

This would be very useful for xwiki.org. I really look forward to seeing this chat app packaged as an extension on extensions.xwiki.org :)

Thanks
-Vincent

On Mar 31, 2012, at 1:46 AM, Fabio Mancinelli wrote:

> Hi everybody,
>
> one of the research projects we are involved in is about realtimeg
> collaboration. One of the aspects we wanted to investigate was the
> integration of a chat system within XWiki.
> I've been working on this lately and I've built a prototype that uses
> an embedded XMPP server for handling all the communication.
>
> I still have to cleanup a bit the code before committing it, but I
> took a video of how things work.
> You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so
> make sure to change the video quality and to switch to fullscreen)
>
> There are several things we need to address (authentication is one of
> them), but I think we could have a functional extension pretty soon.
>
> It's 1:30am right now, so I will give you more details in a next mail :)
>
> Enjoy.
>
> Thanks,
> Fabio
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

Jerome Velociter-4
In reply to this post by Fabio Mancinelli-4
Hi Fabio,

This is cool. Couple remarks below

On Tue, Apr 3, 2012 at 12:50 AM, Fabio Mancinelli
<[hidden email]> wrote:

> Hi Everybody,
>
> as promised here it is a more detailed mail about the work I did on XWiki chat.
>
> First of all I committed the code of the current prototype here:
> https://github.com/xwiki-contrib/xwiki-platform-chat
>
> Now some technical details:
>
> 1) The system uses an embedded Vysper XMPP server
> (http://mina.apache.org/vysper/) with the Multi User Chat extension.
>
> 2) The communication is done using the BOSH protocol
> (http://en.wikipedia.org/wiki/BOSH). The BOSH endpoint is in the
> application context path, which means that the BOSH servlet will
> receive all the cookies as the other servlets (important for
> authentication, see after)

Why not directly go for WebSocket ?

BOSH looks like a "patch" for something that wasn't supported by the
browsers up until recently, but support is here or close to here for
WebSocket now (see http://caniuse.com/websockets).
If you are interested you can look for example into Atmosphere for
cross-container websocket support :
https://github.com/jfarcand/atmosphere

>
> 3) The whole UI of the chat system is contained in the
> XWiki.XWikiChatSkin. I've setup some tricky XSL transformations for
> bundling all the needed resources into this skin (see
> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-ui/src/main/build/transformations/xwiki-chat-skin.xsl)
> The result is that all javascript files, VM overrides, and CSS files
> are added to the skin as properties.
>
> 4) The Javascript, VM overrides and templates are available as
> separate file in
> https://github.com/xwiki-contrib/xwiki-platform-chat/tree/master/xwiki-platform-chat-ui/src/main.
> In order to hack it I use https://github.com/xwiki/xwiki-debug-eclipse
> and make symbolic links through the Eclipse interface so that those
> resources are available as if they were on the file system.
>
> 5) The current authentication is dummy (see
> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-server/src/main/java/org/xwiki/chat/server/NullUserAuthorization.java)
> What is needed to do is to process the data coming from the cookies
> and use the XWiki authentication subsystem to check the credentials
> coming at the beginning of an XMPP session. This could be quite tricky
> and will need some work for modifying the BoshServlet in order to make
> these credentials available to the code that will need them.
>
> 6) When the page is loaded a connection is established and several
> chat rooms are automatically joined: wiki, space and page. This of
> course is temporary. The idea is that on page load the user will joing
> the chatroom for the current wiki, the current space and the current
> page, depending on what she is looking at. This means that there will
> potentially be a chat room for every page in the wiki, for every space
> and, in a multi-wiki environment, for every wiki. The number of users
> in these chatroom will depend on what the users are actually working
> on.
>
> 7) Chatrooms are left on page unload. This means that looking at the
> chatrooms population we might be able to understand how many users are
> currently connected and where.
>
> 8) Since XWiki has a feature for defining a social network (i.e.,
> following/followers) this data can be used to show in the chat the
> users that I am following that are online, so that I might be able to
> send them private messages.
>
> 9) Currently no the XMPP server is not backed by any storage, but it
> is possible to write a storage system that stores all the discussions
> in some wiki object (e.g., a page) so that a trace is kept.
>
> 10) The XMPP server also supports a Publish/Subscribe module. This
> could be used to implement a live notification system. But even
> without using pubsub, a special chatroom can be used to send these
> messages that will be displayed, for example, using a special UI à la
> growl (http://growl.info/screenshots) or equivalent.

Could "Server-sent events" standards be of use for this feature ?

See http://en.wikipedia.org/wiki/Server-sent_events

That's all
Jerome

>
> There is currently a limitation with the Vysper BOSH servlet... It
> seems that it doesn't like too much Tomcat which can be a problem. The
> thread where the problem is explained is here:
> http://mail-archives.apache.org/mod_mbox/tomcat-users/201201.mbox/%3C4F1031F3.8060304@...%3E
>
> I haven't yet investigated the problem, but a possible solution (or a
> roadmap towards a solution) should be found as soon as possible
> because if we start to integrate the authorization system and the
> storage system, it would be difficult to port it to another system [1]
>
> I think that's all for the moment.
>
> Of course comments are welcome.
>
> -Fabio
>
> [1] I've looked at other XMPP servers, but I chose Vysper because it
> is part of a well established Apache project, it's very simple to use,
> supports all that we need (embeddable server, multi user chat, etc.)
> and has a quite active community. Other solutions were either GPLv3,
> or not showing a clear situation wrt the community and the features.
>
> On Sat, Mar 31, 2012 at 1:46 AM, Fabio Mancinelli
> <[hidden email]> wrote:
>> Hi everybody,
>>
>> one of the research projects we are involved in is about realtime
>> collaboration. One of the aspects we wanted to investigate was the
>> integration of a chat system within XWiki.
>> I've been working on this lately and I've built a prototype that uses
>> an embedded XMPP server for handling all the communication.
>>
>> I still have to cleanup a bit the code before committing it, but I
>> took a video of how things work.
>> You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so
>> make sure to change the video quality and to switch to fullscreen)
>>
>> There are several things we need to address (authentication is one of
>> them), but I think we could have a functional extension pretty soon.
>>
>> It's 1:30am right now, so I will give you more details in a next mail :)
>>
>> Enjoy.
>>
>> Thanks,
>> Fabio
> _______________________________________________
> devs mailing list
> [hidden email]
> http://lists.xwiki.org/mailman/listinfo/devs


--
Jérôme Velociter
Winesquare
http://www.winesquare.net/
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

Fabio Mancinelli-4
On Wed, Apr 4, 2012 at 3:02 PM, Jerome Velociter <[hidden email]> wrote:

> Hi Fabio,
>
> This is cool. Couple remarks below
>
> On Tue, Apr 3, 2012 at 12:50 AM, Fabio Mancinelli
> <[hidden email]> wrote:
>> Hi Everybody,
>>
>> as promised here it is a more detailed mail about the work I did on XWiki chat.
>>
>> First of all I committed the code of the current prototype here:
>> https://github.com/xwiki-contrib/xwiki-platform-chat
>>
>> Now some technical details:
>>
>> 1) The system uses an embedded Vysper XMPP server
>> (http://mina.apache.org/vysper/) with the Multi User Chat extension.
>>
>> 2) The communication is done using the BOSH protocol
>> (http://en.wikipedia.org/wiki/BOSH). The BOSH endpoint is in the
>> application context path, which means that the BOSH servlet will
>> receive all the cookies as the other servlets (important for
>> authentication, see after)
>
> Why not directly go for WebSocket ?
>
> BOSH looks like a "patch" for something that wasn't supported by the
> browsers up until recently, but support is here or close to here for
> WebSocket now (see http://caniuse.com/websockets).
> If you are interested you can look for example into Atmosphere for
> cross-container websocket support :
> https://github.com/jfarcand/atmosphere
>
The main problem is on the client side.
Vysper has a module for supporting WebSockets.
Strophe.js, which is the library that I am using right now, only supports BOSH.
They've been discussing for WebSockets support since some years but
apparently they're not yet there.

If you know of a Javascript XMPP library that supports websockets, we
might switch to it.

-Fabio


>>
>> 3) The whole UI of the chat system is contained in the
>> XWiki.XWikiChatSkin. I've setup some tricky XSL transformations for
>> bundling all the needed resources into this skin (see
>> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-ui/src/main/build/transformations/xwiki-chat-skin.xsl)
>> The result is that all javascript files, VM overrides, and CSS files
>> are added to the skin as properties.
>>
>> 4) The Javascript, VM overrides and templates are available as
>> separate file in
>> https://github.com/xwiki-contrib/xwiki-platform-chat/tree/master/xwiki-platform-chat-ui/src/main.
>> In order to hack it I use https://github.com/xwiki/xwiki-debug-eclipse
>> and make symbolic links through the Eclipse interface so that those
>> resources are available as if they were on the file system.
>>
>> 5) The current authentication is dummy (see
>> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-server/src/main/java/org/xwiki/chat/server/NullUserAuthorization.java)
>> What is needed to do is to process the data coming from the cookies
>> and use the XWiki authentication subsystem to check the credentials
>> coming at the beginning of an XMPP session. This could be quite tricky
>> and will need some work for modifying the BoshServlet in order to make
>> these credentials available to the code that will need them.
>>
>> 6) When the page is loaded a connection is established and several
>> chat rooms are automatically joined: wiki, space and page. This of
>> course is temporary. The idea is that on page load the user will joing
>> the chatroom for the current wiki, the current space and the current
>> page, depending on what she is looking at. This means that there will
>> potentially be a chat room for every page in the wiki, for every space
>> and, in a multi-wiki environment, for every wiki. The number of users
>> in these chatroom will depend on what the users are actually working
>> on.
>>
>> 7) Chatrooms are left on page unload. This means that looking at the
>> chatrooms population we might be able to understand how many users are
>> currently connected and where.
>>
>> 8) Since XWiki has a feature for defining a social network (i.e.,
>> following/followers) this data can be used to show in the chat the
>> users that I am following that are online, so that I might be able to
>> send them private messages.
>>
>> 9) Currently no the XMPP server is not backed by any storage, but it
>> is possible to write a storage system that stores all the discussions
>> in some wiki object (e.g., a page) so that a trace is kept.
>>
>> 10) The XMPP server also supports a Publish/Subscribe module. This
>> could be used to implement a live notification system. But even
>> without using pubsub, a special chatroom can be used to send these
>> messages that will be displayed, for example, using a special UI à la
>> growl (http://growl.info/screenshots) or equivalent.
>
> Could "Server-sent events" standards be of use for this feature ?
>
> See http://en.wikipedia.org/wiki/Server-sent_events
>
> That's all
> Jerome
>
>>
>> There is currently a limitation with the Vysper BOSH servlet... It
>> seems that it doesn't like too much Tomcat which can be a problem. The
>> thread where the problem is explained is here:
>> http://mail-archives.apache.org/mod_mbox/tomcat-users/201201.mbox/%3C4F1031F3.8060304@...%3E
>>
>> I haven't yet investigated the problem, but a possible solution (or a
>> roadmap towards a solution) should be found as soon as possible
>> because if we start to integrate the authorization system and the
>> storage system, it would be difficult to port it to another system [1]
>>
>> I think that's all for the moment.
>>
>> Of course comments are welcome.
>>
>> -Fabio
>>
>> [1] I've looked at other XMPP servers, but I chose Vysper because it
>> is part of a well established Apache project, it's very simple to use,
>> supports all that we need (embeddable server, multi user chat, etc.)
>> and has a quite active community. Other solutions were either GPLv3,
>> or not showing a clear situation wrt the community and the features.
>>
>> On Sat, Mar 31, 2012 at 1:46 AM, Fabio Mancinelli
>> <[hidden email]> wrote:
>>> Hi everybody,
>>>
>>> one of the research projects we are involved in is about realtime
>>> collaboration. One of the aspects we wanted to investigate was the
>>> integration of a chat system within XWiki.
>>> I've been working on this lately and I've built a prototype that uses
>>> an embedded XMPP server for handling all the communication.
>>>
>>> I still have to cleanup a bit the code before committing it, but I
>>> took a video of how things work.
>>> You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so
>>> make sure to change the video quality and to switch to fullscreen)
>>>
>>> There are several things we need to address (authentication is one of
>>> them), but I think we could have a functional extension pretty soon.
>>>
>>> It's 1:30am right now, so I will give you more details in a next mail :)
>>>
>>> Enjoy.
>>>
>>> Thanks,
>>> Fabio
>> _______________________________________________
>> devs mailing list
>> [hidden email]
>> http://lists.xwiki.org/mailman/listinfo/devs
>
>
> --
> Jérôme Velociter
> Winesquare
> http://www.winesquare.net/
> _______________________________________________
> devs mailing list
> [hidden email]
> http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

Jerome Velociter-4
On Wed, Apr 4, 2012 at 4:05 PM, Fabio Mancinelli
<[hidden email]> wrote:

> On Wed, Apr 4, 2012 at 3:02 PM, Jerome Velociter <[hidden email]> wrote:
>> Hi Fabio,
>>
>> This is cool. Couple remarks below
>>
>> On Tue, Apr 3, 2012 at 12:50 AM, Fabio Mancinelli
>> <[hidden email]> wrote:
>>> Hi Everybody,
>>>
>>> as promised here it is a more detailed mail about the work I did on XWiki chat.
>>>
>>> First of all I committed the code of the current prototype here:
>>> https://github.com/xwiki-contrib/xwiki-platform-chat
>>>
>>> Now some technical details:
>>>
>>> 1) The system uses an embedded Vysper XMPP server
>>> (http://mina.apache.org/vysper/) with the Multi User Chat extension.
>>>
>>> 2) The communication is done using the BOSH protocol
>>> (http://en.wikipedia.org/wiki/BOSH). The BOSH endpoint is in the
>>> application context path, which means that the BOSH servlet will
>>> receive all the cookies as the other servlets (important for
>>> authentication, see after)
>>
>> Why not directly go for WebSocket ?
>>
>> BOSH looks like a "patch" for something that wasn't supported by the
>> browsers up until recently, but support is here or close to here for
>> WebSocket now (see http://caniuse.com/websockets).
>> If you are interested you can look for example into Atmosphere for
>> cross-container websocket support :
>> https://github.com/jfarcand/atmosphere
>>
> The main problem is on the client side.
> Vysper has a module for supporting WebSockets.
> Strophe.js, which is the library that I am using right now, only supports BOSH.
> They've been discussing for WebSockets support since some years but
> apparently they're not yet there.
>
> If you know of a Javascript XMPP library that supports websockets, we
> might switch to it.

OK I've found this: https://gist.github.com/739147 ; but indeed it's
probably better to wait or get pull'd official support.

Thanks for the details.

Jerome.

>
> -Fabio
>
>
>>>
>>> 3) The whole UI of the chat system is contained in the
>>> XWiki.XWikiChatSkin. I've setup some tricky XSL transformations for
>>> bundling all the needed resources into this skin (see
>>> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-ui/src/main/build/transformations/xwiki-chat-skin.xsl)
>>> The result is that all javascript files, VM overrides, and CSS files
>>> are added to the skin as properties.
>>>
>>> 4) The Javascript, VM overrides and templates are available as
>>> separate file in
>>> https://github.com/xwiki-contrib/xwiki-platform-chat/tree/master/xwiki-platform-chat-ui/src/main.
>>> In order to hack it I use https://github.com/xwiki/xwiki-debug-eclipse
>>> and make symbolic links through the Eclipse interface so that those
>>> resources are available as if they were on the file system.
>>>
>>> 5) The current authentication is dummy (see
>>> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-server/src/main/java/org/xwiki/chat/server/NullUserAuthorization.java)
>>> What is needed to do is to process the data coming from the cookies
>>> and use the XWiki authentication subsystem to check the credentials
>>> coming at the beginning of an XMPP session. This could be quite tricky
>>> and will need some work for modifying the BoshServlet in order to make
>>> these credentials available to the code that will need them.
>>>
>>> 6) When the page is loaded a connection is established and several
>>> chat rooms are automatically joined: wiki, space and page. This of
>>> course is temporary. The idea is that on page load the user will joing
>>> the chatroom for the current wiki, the current space and the current
>>> page, depending on what she is looking at. This means that there will
>>> potentially be a chat room for every page in the wiki, for every space
>>> and, in a multi-wiki environment, for every wiki. The number of users
>>> in these chatroom will depend on what the users are actually working
>>> on.
>>>
>>> 7) Chatrooms are left on page unload. This means that looking at the
>>> chatrooms population we might be able to understand how many users are
>>> currently connected and where.
>>>
>>> 8) Since XWiki has a feature for defining a social network (i.e.,
>>> following/followers) this data can be used to show in the chat the
>>> users that I am following that are online, so that I might be able to
>>> send them private messages.
>>>
>>> 9) Currently no the XMPP server is not backed by any storage, but it
>>> is possible to write a storage system that stores all the discussions
>>> in some wiki object (e.g., a page) so that a trace is kept.
>>>
>>> 10) The XMPP server also supports a Publish/Subscribe module. This
>>> could be used to implement a live notification system. But even
>>> without using pubsub, a special chatroom can be used to send these
>>> messages that will be displayed, for example, using a special UI à la
>>> growl (http://growl.info/screenshots) or equivalent.
>>
>> Could "Server-sent events" standards be of use for this feature ?
>>
>> See http://en.wikipedia.org/wiki/Server-sent_events
>>
>> That's all
>> Jerome
>>
>>>
>>> There is currently a limitation with the Vysper BOSH servlet... It
>>> seems that it doesn't like too much Tomcat which can be a problem. The
>>> thread where the problem is explained is here:
>>> http://mail-archives.apache.org/mod_mbox/tomcat-users/201201.mbox/%3C4F1031F3.8060304@...%3E
>>>
>>> I haven't yet investigated the problem, but a possible solution (or a
>>> roadmap towards a solution) should be found as soon as possible
>>> because if we start to integrate the authorization system and the
>>> storage system, it would be difficult to port it to another system [1]
>>>
>>> I think that's all for the moment.
>>>
>>> Of course comments are welcome.
>>>
>>> -Fabio
>>>
>>> [1] I've looked at other XMPP servers, but I chose Vysper because it
>>> is part of a well established Apache project, it's very simple to use,
>>> supports all that we need (embeddable server, multi user chat, etc.)
>>> and has a quite active community. Other solutions were either GPLv3,
>>> or not showing a clear situation wrt the community and the features.
>>>
>>> On Sat, Mar 31, 2012 at 1:46 AM, Fabio Mancinelli
>>> <[hidden email]> wrote:
>>>> Hi everybody,
>>>>
>>>> one of the research projects we are involved in is about realtime
>>>> collaboration. One of the aspects we wanted to investigate was the
>>>> integration of a chat system within XWiki.
>>>> I've been working on this lately and I've built a prototype that uses
>>>> an embedded XMPP server for handling all the communication.
>>>>
>>>> I still have to cleanup a bit the code before committing it, but I
>>>> took a video of how things work.
>>>> You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so
>>>> make sure to change the video quality and to switch to fullscreen)
>>>>
>>>> There are several things we need to address (authentication is one of
>>>> them), but I think we could have a functional extension pretty soon.
>>>>
>>>> It's 1:30am right now, so I will give you more details in a next mail :)
>>>>
>>>> Enjoy.
>>>>
>>>> Thanks,
>>>> Fabio
>>> _______________________________________________
>>> devs mailing list
>>> [hidden email]
>>> http://lists.xwiki.org/mailman/listinfo/devs
>>
>>
>> --
>> Jérôme Velociter
>> Winesquare
>> http://www.winesquare.net/
>> _______________________________________________
>> devs mailing list
>> [hidden email]
>> http://lists.xwiki.org/mailman/listinfo/devs
> _______________________________________________
> devs mailing list
> [hidden email]
> http://lists.xwiki.org/mailman/listinfo/devs



--
Jérôme Velociter
Winesquare
http://www.winesquare.net/
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

Jerome Velociter-4
In reply to this post by Fabio Mancinelli-4
I forgot to ask : is having a custom skin really necessary ?

Isn't there a way to achieve the same results just with just
"always-use" JSX/SSX ?

Jerome

On Tue, Apr 3, 2012 at 12:50 AM, Fabio Mancinelli
<[hidden email]> wrote:

> Hi Everybody,
>
> as promised here it is a more detailed mail about the work I did on XWiki chat.
>
> First of all I committed the code of the current prototype here:
> https://github.com/xwiki-contrib/xwiki-platform-chat
>
> Now some technical details:
>
> 1) The system uses an embedded Vysper XMPP server
> (http://mina.apache.org/vysper/) with the Multi User Chat extension.
>
> 2) The communication is done using the BOSH protocol
> (http://en.wikipedia.org/wiki/BOSH). The BOSH endpoint is in the
> application context path, which means that the BOSH servlet will
> receive all the cookies as the other servlets (important for
> authentication, see after)
>
> 3) The whole UI of the chat system is contained in the
> XWiki.XWikiChatSkin. I've setup some tricky XSL transformations for
> bundling all the needed resources into this skin (see
> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-ui/src/main/build/transformations/xwiki-chat-skin.xsl)
> The result is that all javascript files, VM overrides, and CSS files
> are added to the skin as properties.
>
> 4) The Javascript, VM overrides and templates are available as
> separate file in
> https://github.com/xwiki-contrib/xwiki-platform-chat/tree/master/xwiki-platform-chat-ui/src/main.
> In order to hack it I use https://github.com/xwiki/xwiki-debug-eclipse
> and make symbolic links through the Eclipse interface so that those
> resources are available as if they were on the file system.
>
> 5) The current authentication is dummy (see
> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-server/src/main/java/org/xwiki/chat/server/NullUserAuthorization.java)
> What is needed to do is to process the data coming from the cookies
> and use the XWiki authentication subsystem to check the credentials
> coming at the beginning of an XMPP session. This could be quite tricky
> and will need some work for modifying the BoshServlet in order to make
> these credentials available to the code that will need them.
>
> 6) When the page is loaded a connection is established and several
> chat rooms are automatically joined: wiki, space and page. This of
> course is temporary. The idea is that on page load the user will joing
> the chatroom for the current wiki, the current space and the current
> page, depending on what she is looking at. This means that there will
> potentially be a chat room for every page in the wiki, for every space
> and, in a multi-wiki environment, for every wiki. The number of users
> in these chatroom will depend on what the users are actually working
> on.
>
> 7) Chatrooms are left on page unload. This means that looking at the
> chatrooms population we might be able to understand how many users are
> currently connected and where.
>
> 8) Since XWiki has a feature for defining a social network (i.e.,
> following/followers) this data can be used to show in the chat the
> users that I am following that are online, so that I might be able to
> send them private messages.
>
> 9) Currently no the XMPP server is not backed by any storage, but it
> is possible to write a storage system that stores all the discussions
> in some wiki object (e.g., a page) so that a trace is kept.
>
> 10) The XMPP server also supports a Publish/Subscribe module. This
> could be used to implement a live notification system. But even
> without using pubsub, a special chatroom can be used to send these
> messages that will be displayed, for example, using a special UI à la
> growl (http://growl.info/screenshots) or equivalent.
>
> There is currently a limitation with the Vysper BOSH servlet... It
> seems that it doesn't like too much Tomcat which can be a problem. The
> thread where the problem is explained is here:
> http://mail-archives.apache.org/mod_mbox/tomcat-users/201201.mbox/%3C4F1031F3.8060304@...%3E
>
> I haven't yet investigated the problem, but a possible solution (or a
> roadmap towards a solution) should be found as soon as possible
> because if we start to integrate the authorization system and the
> storage system, it would be difficult to port it to another system [1]
>
> I think that's all for the moment.
>
> Of course comments are welcome.
>
> -Fabio
>
> [1] I've looked at other XMPP servers, but I chose Vysper because it
> is part of a well established Apache project, it's very simple to use,
> supports all that we need (embeddable server, multi user chat, etc.)
> and has a quite active community. Other solutions were either GPLv3,
> or not showing a clear situation wrt the community and the features.
>
> On Sat, Mar 31, 2012 at 1:46 AM, Fabio Mancinelli
> <[hidden email]> wrote:
>> Hi everybody,
>>
>> one of the research projects we are involved in is about realtime
>> collaboration. One of the aspects we wanted to investigate was the
>> integration of a chat system within XWiki.
>> I've been working on this lately and I've built a prototype that uses
>> an embedded XMPP server for handling all the communication.
>>
>> I still have to cleanup a bit the code before committing it, but I
>> took a video of how things work.
>> You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so
>> make sure to change the video quality and to switch to fullscreen)
>>
>> There are several things we need to address (authentication is one of
>> them), but I think we could have a functional extension pretty soon.
>>
>> It's 1:30am right now, so I will give you more details in a next mail :)
>>
>> Enjoy.
>>
>> Thanks,
>> Fabio
> _______________________________________________
> devs mailing list
> [hidden email]
> http://lists.xwiki.org/mailman/listinfo/devs


--
Jérôme Velociter
Winesquare
http://www.winesquare.net/
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

Fabio Mancinelli-4
On Wed, Apr 4, 2012 at 7:46 PM, Jerome Velociter <[hidden email]> wrote:
> I forgot to ask : is having a custom skin really necessary ?
>
> Isn't there a way to achieve the same results just with just
> "always-use" JSX/SSX ?
>
Yep for the JSX/SSX part.
But I need a

<div id="chat_toolbar"></div>

at the end of the page, where to hook chat tabs.
So i need to override (at least) footer.vm

I don't know if there are other possibilities for achieving that
without using a custom skin (I am relatively a noob wrt all things
javascript+webdev :))

-Fabio

> Jerome
>
> On Tue, Apr 3, 2012 at 12:50 AM, Fabio Mancinelli
> <[hidden email]> wrote:
>> Hi Everybody,
>>
>> as promised here it is a more detailed mail about the work I did on XWiki chat.
>>
>> First of all I committed the code of the current prototype here:
>> https://github.com/xwiki-contrib/xwiki-platform-chat
>>
>> Now some technical details:
>>
>> 1) The system uses an embedded Vysper XMPP server
>> (http://mina.apache.org/vysper/) with the Multi User Chat extension.
>>
>> 2) The communication is done using the BOSH protocol
>> (http://en.wikipedia.org/wiki/BOSH). The BOSH endpoint is in the
>> application context path, which means that the BOSH servlet will
>> receive all the cookies as the other servlets (important for
>> authentication, see after)
>>
>> 3) The whole UI of the chat system is contained in the
>> XWiki.XWikiChatSkin. I've setup some tricky XSL transformations for
>> bundling all the needed resources into this skin (see
>> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-ui/src/main/build/transformations/xwiki-chat-skin.xsl)
>> The result is that all javascript files, VM overrides, and CSS files
>> are added to the skin as properties.
>>
>> 4) The Javascript, VM overrides and templates are available as
>> separate file in
>> https://github.com/xwiki-contrib/xwiki-platform-chat/tree/master/xwiki-platform-chat-ui/src/main.
>> In order to hack it I use https://github.com/xwiki/xwiki-debug-eclipse
>> and make symbolic links through the Eclipse interface so that those
>> resources are available as if they were on the file system.
>>
>> 5) The current authentication is dummy (see
>> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-server/src/main/java/org/xwiki/chat/server/NullUserAuthorization.java)
>> What is needed to do is to process the data coming from the cookies
>> and use the XWiki authentication subsystem to check the credentials
>> coming at the beginning of an XMPP session. This could be quite tricky
>> and will need some work for modifying the BoshServlet in order to make
>> these credentials available to the code that will need them.
>>
>> 6) When the page is loaded a connection is established and several
>> chat rooms are automatically joined: wiki, space and page. This of
>> course is temporary. The idea is that on page load the user will joing
>> the chatroom for the current wiki, the current space and the current
>> page, depending on what she is looking at. This means that there will
>> potentially be a chat room for every page in the wiki, for every space
>> and, in a multi-wiki environment, for every wiki. The number of users
>> in these chatroom will depend on what the users are actually working
>> on.
>>
>> 7) Chatrooms are left on page unload. This means that looking at the
>> chatrooms population we might be able to understand how many users are
>> currently connected and where.
>>
>> 8) Since XWiki has a feature for defining a social network (i.e.,
>> following/followers) this data can be used to show in the chat the
>> users that I am following that are online, so that I might be able to
>> send them private messages.
>>
>> 9) Currently no the XMPP server is not backed by any storage, but it
>> is possible to write a storage system that stores all the discussions
>> in some wiki object (e.g., a page) so that a trace is kept.
>>
>> 10) The XMPP server also supports a Publish/Subscribe module. This
>> could be used to implement a live notification system. But even
>> without using pubsub, a special chatroom can be used to send these
>> messages that will be displayed, for example, using a special UI à la
>> growl (http://growl.info/screenshots) or equivalent.
>>
>> There is currently a limitation with the Vysper BOSH servlet... It
>> seems that it doesn't like too much Tomcat which can be a problem. The
>> thread where the problem is explained is here:
>> http://mail-archives.apache.org/mod_mbox/tomcat-users/201201.mbox/%3C4F1031F3.8060304@...%3E
>>
>> I haven't yet investigated the problem, but a possible solution (or a
>> roadmap towards a solution) should be found as soon as possible
>> because if we start to integrate the authorization system and the
>> storage system, it would be difficult to port it to another system [1]
>>
>> I think that's all for the moment.
>>
>> Of course comments are welcome.
>>
>> -Fabio
>>
>> [1] I've looked at other XMPP servers, but I chose Vysper because it
>> is part of a well established Apache project, it's very simple to use,
>> supports all that we need (embeddable server, multi user chat, etc.)
>> and has a quite active community. Other solutions were either GPLv3,
>> or not showing a clear situation wrt the community and the features.
>>
>> On Sat, Mar 31, 2012 at 1:46 AM, Fabio Mancinelli
>> <[hidden email]> wrote:
>>> Hi everybody,
>>>
>>> one of the research projects we are involved in is about realtime
>>> collaboration. One of the aspects we wanted to investigate was the
>>> integration of a chat system within XWiki.
>>> I've been working on this lately and I've built a prototype that uses
>>> an embedded XMPP server for handling all the communication.
>>>
>>> I still have to cleanup a bit the code before committing it, but I
>>> took a video of how things work.
>>> You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so
>>> make sure to change the video quality and to switch to fullscreen)
>>>
>>> There are several things we need to address (authentication is one of
>>> them), but I think we could have a functional extension pretty soon.
>>>
>>> It's 1:30am right now, so I will give you more details in a next mail :)
>>>
>>> Enjoy.
>>>
>>> Thanks,
>>> Fabio
>> _______________________________________________
>> devs mailing list
>> [hidden email]
>> http://lists.xwiki.org/mailman/listinfo/devs
>
>
> --
> Jérôme Velociter
> Winesquare
> http://www.winesquare.net/
> _______________________________________________
> devs mailing list
> [hidden email]
> http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

Jean-Vincent Drean
You could #insert a new element in the body from the JSX.

http://prototypejs.org/api/element/insert
http://prototypejs.org/api/element

On Thu, Apr 5, 2012 at 10:58 AM, Fabio Mancinelli
<[hidden email]> wrote:

> On Wed, Apr 4, 2012 at 7:46 PM, Jerome Velociter <[hidden email]> wrote:
>> I forgot to ask : is having a custom skin really necessary ?
>>
>> Isn't there a way to achieve the same results just with just
>> "always-use" JSX/SSX ?
>>
> Yep for the JSX/SSX part.
> But I need a
>
> <div id="chat_toolbar"></div>
>
> at the end of the page, where to hook chat tabs.
> So i need to override (at least) footer.vm
>
> I don't know if there are other possibilities for achieving that
> without using a custom skin (I am relatively a noob wrt all things
> javascript+webdev :))
>
> -Fabio
>
>> Jerome
>>
>> On Tue, Apr 3, 2012 at 12:50 AM, Fabio Mancinelli
>> <[hidden email]> wrote:
>>> Hi Everybody,
>>>
>>> as promised here it is a more detailed mail about the work I did on XWiki chat.
>>>
>>> First of all I committed the code of the current prototype here:
>>> https://github.com/xwiki-contrib/xwiki-platform-chat
>>>
>>> Now some technical details:
>>>
>>> 1) The system uses an embedded Vysper XMPP server
>>> (http://mina.apache.org/vysper/) with the Multi User Chat extension.
>>>
>>> 2) The communication is done using the BOSH protocol
>>> (http://en.wikipedia.org/wiki/BOSH). The BOSH endpoint is in the
>>> application context path, which means that the BOSH servlet will
>>> receive all the cookies as the other servlets (important for
>>> authentication, see after)
>>>
>>> 3) The whole UI of the chat system is contained in the
>>> XWiki.XWikiChatSkin. I've setup some tricky XSL transformations for
>>> bundling all the needed resources into this skin (see
>>> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-ui/src/main/build/transformations/xwiki-chat-skin.xsl)
>>> The result is that all javascript files, VM overrides, and CSS files
>>> are added to the skin as properties.
>>>
>>> 4) The Javascript, VM overrides and templates are available as
>>> separate file in
>>> https://github.com/xwiki-contrib/xwiki-platform-chat/tree/master/xwiki-platform-chat-ui/src/main.
>>> In order to hack it I use https://github.com/xwiki/xwiki-debug-eclipse
>>> and make symbolic links through the Eclipse interface so that those
>>> resources are available as if they were on the file system.
>>>
>>> 5) The current authentication is dummy (see
>>> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-server/src/main/java/org/xwiki/chat/server/NullUserAuthorization.java)
>>> What is needed to do is to process the data coming from the cookies
>>> and use the XWiki authentication subsystem to check the credentials
>>> coming at the beginning of an XMPP session. This could be quite tricky
>>> and will need some work for modifying the BoshServlet in order to make
>>> these credentials available to the code that will need them.
>>>
>>> 6) When the page is loaded a connection is established and several
>>> chat rooms are automatically joined: wiki, space and page. This of
>>> course is temporary. The idea is that on page load the user will joing
>>> the chatroom for the current wiki, the current space and the current
>>> page, depending on what she is looking at. This means that there will
>>> potentially be a chat room for every page in the wiki, for every space
>>> and, in a multi-wiki environment, for every wiki. The number of users
>>> in these chatroom will depend on what the users are actually working
>>> on.
>>>
>>> 7) Chatrooms are left on page unload. This means that looking at the
>>> chatrooms population we might be able to understand how many users are
>>> currently connected and where.
>>>
>>> 8) Since XWiki has a feature for defining a social network (i.e.,
>>> following/followers) this data can be used to show in the chat the
>>> users that I am following that are online, so that I might be able to
>>> send them private messages.
>>>
>>> 9) Currently no the XMPP server is not backed by any storage, but it
>>> is possible to write a storage system that stores all the discussions
>>> in some wiki object (e.g., a page) so that a trace is kept.
>>>
>>> 10) The XMPP server also supports a Publish/Subscribe module. This
>>> could be used to implement a live notification system. But even
>>> without using pubsub, a special chatroom can be used to send these
>>> messages that will be displayed, for example, using a special UI à la
>>> growl (http://growl.info/screenshots) or equivalent.
>>>
>>> There is currently a limitation with the Vysper BOSH servlet... It
>>> seems that it doesn't like too much Tomcat which can be a problem. The
>>> thread where the problem is explained is here:
>>> http://mail-archives.apache.org/mod_mbox/tomcat-users/201201.mbox/%3C4F1031F3.8060304@...%3E
>>>
>>> I haven't yet investigated the problem, but a possible solution (or a
>>> roadmap towards a solution) should be found as soon as possible
>>> because if we start to integrate the authorization system and the
>>> storage system, it would be difficult to port it to another system [1]
>>>
>>> I think that's all for the moment.
>>>
>>> Of course comments are welcome.
>>>
>>> -Fabio
>>>
>>> [1] I've looked at other XMPP servers, but I chose Vysper because it
>>> is part of a well established Apache project, it's very simple to use,
>>> supports all that we need (embeddable server, multi user chat, etc.)
>>> and has a quite active community. Other solutions were either GPLv3,
>>> or not showing a clear situation wrt the community and the features.
>>>
>>> On Sat, Mar 31, 2012 at 1:46 AM, Fabio Mancinelli
>>> <[hidden email]> wrote:
>>>> Hi everybody,
>>>>
>>>> one of the research projects we are involved in is about realtime
>>>> collaboration. One of the aspects we wanted to investigate was the
>>>> integration of a chat system within XWiki.
>>>> I've been working on this lately and I've built a prototype that uses
>>>> an embedded XMPP server for handling all the communication.
>>>>
>>>> I still have to cleanup a bit the code before committing it, but I
>>>> took a video of how things work.
>>>> You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so
>>>> make sure to change the video quality and to switch to fullscreen)
>>>>
>>>> There are several things we need to address (authentication is one of
>>>> them), but I think we could have a functional extension pretty soon.
>>>>
>>>> It's 1:30am right now, so I will give you more details in a next mail :)
>>>>
>>>> Enjoy.
>>>>
>>>> Thanks,
>>>> Fabio
>>> _______________________________________________
>>> devs mailing list
>>> [hidden email]
>>> http://lists.xwiki.org/mailman/listinfo/devs
>>
>>
>> --
>> Jérôme Velociter
>> Winesquare
>> http://www.winesquare.net/
>> _______________________________________________
>> devs mailing list
>> [hidden email]
>> http://lists.xwiki.org/mailman/listinfo/devs
> _______________________________________________
> devs mailing list
> [hidden email]
> http://lists.xwiki.org/mailman/listinfo/devs



--
Jean-Vincent Drean,
XWiki.
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs
Reply | Threaded
Open this post in threaded view
|

Re: XWiki chat

Fabio Mancinelli-4
On Thu, Apr 5, 2012 at 12:19 PM, Jean-Vincent Drean <[hidden email]> wrote:
> You could #insert a new element in the body from the JSX.
>
> http://prototypejs.org/api/element/insert
> http://prototypejs.org/api/element
>
Right.

Will do.

Thanks,
Fabio

> On Thu, Apr 5, 2012 at 10:58 AM, Fabio Mancinelli
> <[hidden email]> wrote:
>> On Wed, Apr 4, 2012 at 7:46 PM, Jerome Velociter <[hidden email]> wrote:
>>> I forgot to ask : is having a custom skin really necessary ?
>>>
>>> Isn't there a way to achieve the same results just with just
>>> "always-use" JSX/SSX ?
>>>
>> Yep for the JSX/SSX part.
>> But I need a
>>
>> <div id="chat_toolbar"></div>
>>
>> at the end of the page, where to hook chat tabs.
>> So i need to override (at least) footer.vm
>>
>> I don't know if there are other possibilities for achieving that
>> without using a custom skin (I am relatively a noob wrt all things
>> javascript+webdev :))
>>
>> -Fabio
>>
>>> Jerome
>>>
>>> On Tue, Apr 3, 2012 at 12:50 AM, Fabio Mancinelli
>>> <[hidden email]> wrote:
>>>> Hi Everybody,
>>>>
>>>> as promised here it is a more detailed mail about the work I did on XWiki chat.
>>>>
>>>> First of all I committed the code of the current prototype here:
>>>> https://github.com/xwiki-contrib/xwiki-platform-chat
>>>>
>>>> Now some technical details:
>>>>
>>>> 1) The system uses an embedded Vysper XMPP server
>>>> (http://mina.apache.org/vysper/) with the Multi User Chat extension.
>>>>
>>>> 2) The communication is done using the BOSH protocol
>>>> (http://en.wikipedia.org/wiki/BOSH). The BOSH endpoint is in the
>>>> application context path, which means that the BOSH servlet will
>>>> receive all the cookies as the other servlets (important for
>>>> authentication, see after)
>>>>
>>>> 3) The whole UI of the chat system is contained in the
>>>> XWiki.XWikiChatSkin. I've setup some tricky XSL transformations for
>>>> bundling all the needed resources into this skin (see
>>>> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-ui/src/main/build/transformations/xwiki-chat-skin.xsl)
>>>> The result is that all javascript files, VM overrides, and CSS files
>>>> are added to the skin as properties.
>>>>
>>>> 4) The Javascript, VM overrides and templates are available as
>>>> separate file in
>>>> https://github.com/xwiki-contrib/xwiki-platform-chat/tree/master/xwiki-platform-chat-ui/src/main.
>>>> In order to hack it I use https://github.com/xwiki/xwiki-debug-eclipse
>>>> and make symbolic links through the Eclipse interface so that those
>>>> resources are available as if they were on the file system.
>>>>
>>>> 5) The current authentication is dummy (see
>>>> https://github.com/xwiki-contrib/xwiki-platform-chat/blob/master/xwiki-platform-chat-server/src/main/java/org/xwiki/chat/server/NullUserAuthorization.java)
>>>> What is needed to do is to process the data coming from the cookies
>>>> and use the XWiki authentication subsystem to check the credentials
>>>> coming at the beginning of an XMPP session. This could be quite tricky
>>>> and will need some work for modifying the BoshServlet in order to make
>>>> these credentials available to the code that will need them.
>>>>
>>>> 6) When the page is loaded a connection is established and several
>>>> chat rooms are automatically joined: wiki, space and page. This of
>>>> course is temporary. The idea is that on page load the user will joing
>>>> the chatroom for the current wiki, the current space and the current
>>>> page, depending on what she is looking at. This means that there will
>>>> potentially be a chat room for every page in the wiki, for every space
>>>> and, in a multi-wiki environment, for every wiki. The number of users
>>>> in these chatroom will depend on what the users are actually working
>>>> on.
>>>>
>>>> 7) Chatrooms are left on page unload. This means that looking at the
>>>> chatrooms population we might be able to understand how many users are
>>>> currently connected and where.
>>>>
>>>> 8) Since XWiki has a feature for defining a social network (i.e.,
>>>> following/followers) this data can be used to show in the chat the
>>>> users that I am following that are online, so that I might be able to
>>>> send them private messages.
>>>>
>>>> 9) Currently no the XMPP server is not backed by any storage, but it
>>>> is possible to write a storage system that stores all the discussions
>>>> in some wiki object (e.g., a page) so that a trace is kept.
>>>>
>>>> 10) The XMPP server also supports a Publish/Subscribe module. This
>>>> could be used to implement a live notification system. But even
>>>> without using pubsub, a special chatroom can be used to send these
>>>> messages that will be displayed, for example, using a special UI à la
>>>> growl (http://growl.info/screenshots) or equivalent.
>>>>
>>>> There is currently a limitation with the Vysper BOSH servlet... It
>>>> seems that it doesn't like too much Tomcat which can be a problem. The
>>>> thread where the problem is explained is here:
>>>> http://mail-archives.apache.org/mod_mbox/tomcat-users/201201.mbox/%3C4F1031F3.8060304@...%3E
>>>>
>>>> I haven't yet investigated the problem, but a possible solution (or a
>>>> roadmap towards a solution) should be found as soon as possible
>>>> because if we start to integrate the authorization system and the
>>>> storage system, it would be difficult to port it to another system [1]
>>>>
>>>> I think that's all for the moment.
>>>>
>>>> Of course comments are welcome.
>>>>
>>>> -Fabio
>>>>
>>>> [1] I've looked at other XMPP servers, but I chose Vysper because it
>>>> is part of a well established Apache project, it's very simple to use,
>>>> supports all that we need (embeddable server, multi user chat, etc.)
>>>> and has a quite active community. Other solutions were either GPLv3,
>>>> or not showing a clear situation wrt the community and the features.
>>>>
>>>> On Sat, Mar 31, 2012 at 1:46 AM, Fabio Mancinelli
>>>> <[hidden email]> wrote:
>>>>> Hi everybody,
>>>>>
>>>>> one of the research projects we are involved in is about realtime
>>>>> collaboration. One of the aspects we wanted to investigate was the
>>>>> integration of a chat system within XWiki.
>>>>> I've been working on this lately and I've built a prototype that uses
>>>>> an embedded XMPP server for handling all the communication.
>>>>>
>>>>> I still have to cleanup a bit the code before committing it, but I
>>>>> took a video of how things work.
>>>>> You can find it here: http://youtu.be/0Gwtpu3iVwo (it's FullHD, so
>>>>> make sure to change the video quality and to switch to fullscreen)
>>>>>
>>>>> There are several things we need to address (authentication is one of
>>>>> them), but I think we could have a functional extension pretty soon.
>>>>>
>>>>> It's 1:30am right now, so I will give you more details in a next mail :)
>>>>>
>>>>> Enjoy.
>>>>>
>>>>> Thanks,
>>>>> Fabio
>>>> _______________________________________________
>>>> devs mailing list
>>>> [hidden email]
>>>> http://lists.xwiki.org/mailman/listinfo/devs
>>>
>>>
>>> --
>>> Jérôme Velociter
>>> Winesquare
>>> http://www.winesquare.net/
>>> _______________________________________________
>>> devs mailing list
>>> [hidden email]
>>> http://lists.xwiki.org/mailman/listinfo/devs
>> _______________________________________________
>> devs mailing list
>> [hidden email]
>> http://lists.xwiki.org/mailman/listinfo/devs
>
>
>
> --
> Jean-Vincent Drean,
> XWiki.
> _______________________________________________
> devs mailing list
> [hidden email]
> http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
[hidden email]
http://lists.xwiki.org/mailman/listinfo/devs