credija/opa

Consider using ConverseJS headless as the client backbone

Opened this issue · 4 comments

So apparently ConverseJS has a "headless mode" where you just get a full-featured client without a UI attached. That way, you get automatic access to features like OMEMO, MAM, MUC, ... And you can just stick a UI on top.

I think there is really a need for a simple XMPP web client with the looks of Opa. It would be sad if this projects slows down because you are redoing the work other have done before you. So I would like to suggest considering building on top of Converse.

I discussed this as well with @jcbrand (ConverseJS maintainer) and he'd be happy to guide you through the process of using ConverseJS headless!
Please get in touch with him if you have questions what this would require.

This seems to be a great idea!
I did not imagine Converse had a 'headless' mode.
I will look into Converse source code and usage... It will probably need a rewrite of Opa current app structure, but in return would be very rewarding from the point of view that would greatly facilitate the addition of various specifications of the XMPP.

Hi @kevinfaguiar

It's great to hear your considering basing Opa on @converse/headless. Please don't hesitate to ask me if you have any questions or need help.

@cmrd-senya did quite a bit of work on @converse/headless and he has also used it for a work project AFAIK. You might want to take a look at converse.js-vue-example.

There are currently two tickets related specifically to @converse/headless which you probably need to be aware of. See here: https://github.com/conversejs/converse.js/labels/headless

Now that I know you're looking into this, I'll prioritize those two tickets. ;)

@kevinfaguiar did you have any time to look into this? I was getting quite excited with the prospect of having a nice clean and intuitive Jabber web client.

I'm currently having some setbacks, personal issues, and have not had any time to focus on this project since... But I'm looking at how is the best way to incorporate Converse Headless into the project...

What will take some time will be to assemble the logic, since at first, I wish the Converse and the frontend to be separated, using the Converse more as a plug-n-play client (which, I'm thinking, is somewhat hampered by the encapsulation that ConverseJS currently uses)... I do not see it as a Converse problem, @jcbrand has his approach, which I even think is cool. But I'm thinking of other approaches to integrating with Opa.

It will take some time before this, and I can not give any release date of that supposed version using Converse as an XMPP client.