It’s been really a long time since I wrote my last blog. Now let’s see what has been done in these last 7 days.
So, when JSXC was finalized, I and Ranvir started figuring out what should be done and how it should be done. So, the first thing we come up with is to solve this issue : https://github.com/jsxc/jsxc/issues/150 . According to this issue, the chat application doesn’t save the history in the server but saves it as a cache in the browser and thus causes loss of the chat history on trying to access the application from different system or different browser.
But here comes the real problems, the project in whole is a collection of complex and big files and adding this feature will affect the core of this chat application. So, we started to converse with the real developer of JSXC and he guided us to make a new pull request by making some changes in the files which would make the project ready for using the mam plugin and new policy for it will be discussed in there. Here is the link to pull request -> https://github.com/jsxc/jsxc/pull/432 . Currently, we are discussing on how it should be used in the app and when we have to use it.
We have also changed our default remote directory for SunehaG web client. Here is the link -> https://github.com/singh1114/jsxc/tree/sunehaG . All the work regarding the SunehaG web client will be done in the sunehaG branch and work regarding the mam feature will be done in the feature-mam branch.
As in my last blog, I told about discussing the final client from JSXC, Candy, Converse and Kaiwa. So, on last Saturday, we discussed on some matters like simplicity in program, developer’s help, programming language need and how much work to be done on the client. And by comparing all the clients, we came to conclusion that we should use JSXC and move on with it.
Here are some links that are related to JSXC:
Currently, our main objective is to add message archive management (XEP 313) feature to JSXC. After attaining it, further features will be added like user images (XEP 84) and last message editing (XEP 308).
Today, I started with the aim that I will finish every client work and will create a clear picture of the lacking features in clients. So, I started with Kaiwa and found some problems:
- No bookmarks: It literally doesn’t support XEP-48 which is the basic in most clients.
- No Support for file transfer.
- Most of all, the developers are not responding to any issue since 2015. So, no one has a clear idea of the issues it generates.
So, after finding the bugs in Kaiwa, I went on to Converse and Candy on which Ranvir has worked previously to explore more about them. I found following problems in Converse:
- It shows all the rooms to the users for joining, even the ones which the user is not supposed to.
- No support for adding avatar.
- No support for file attachments.
and for candy:
- No avatar.
- No file transfer.
- No carbon copy.
- Doesn’t support MAM ( Message Archive Management )
I have to say that the android client conversations which our SunehaG app is using is really a great app as it is using all the latest features of XMPP and is constantly being updated.
Now, our aim is to choose a web client which will be most compatible with our android app. So, I have listed down the main features of conversations and compared the major web clients according to it.
|XEP-48 : Bookmarks
|XEP-84 : Avatar
|XEP-234 : Jingle File Transfer
|XEP-280 : Carbon Copy
|XEP-313 : Message Archive Management
✔*: It shows that the feature has not been implemented fully.
Now, I think that we should schedule a meeting to discuss the final web client.
Today, I installed Kaiwa on my system and came to know some facts about it:
- It was made specially for prosody server but now it can be used with many other XMPP server which uses websocket or bosh server.
- It is written in node.js ( which I don’t know – need to learn )
- Looks like it shows problem in Chrome browser for some users. ( need to explore )
- It has to be run manually every time using node. ( Ranvir told me that there are some tools which could automate this task )
- There are some new variables which I need to learn like muc, wss and startup.
- It has no wiki. ( That’s the most disturbing part )
I figured out some values for the muc and wss variables and made it to work. But there is one problem that it is showing all the rooms in the bookmarks tab. I need to check it on the server which the SunehaG app is using.
Today, while reading all about XMPP extensions. I found out that the JSXC client uses XEP-0136 for message archiving which was added to XMPP in 2010. According to which, every client saves its history on the local system and no message archive is saved on the centralised server. This extension generated problems for the systems which doesn’t allow the web apps to save their data on local storage. Also, this was the main reason for showing different history on different browsers on same system.
To solve the above problem, XMPP added new extension, XEP-0313 (Message Archiving Management) in 2016. It allows the users to store their messages in a central archive on their server. It allows them to record conversations that take place on clients that do not support local history storage, to synchronise conversation history seamlessly between multiple clients, to read the history of a MUC room, or to view old items in a pubsub node.
Today, I first of all updated my jsxc repository as it was 16 commits behind from the original repository and to my surprise it solved one of my problems. Problem was that when you bookmark a group and logout and then login from other browser, the group shown in the bookmark needed to be joined again.
I also tried some new clients:
- SparkWeb : It doesn’t support ejabberd (really hard to find this information).
- Trillion : It’s not open source.
- XMPPwebchat : It’s no longer maintained.
- Tigase web client : It only supports tigase web server.
So, no luck today 😦 . May be next time.
Today, I restarted Sunehag web client project on which I was working since mid-october and had to put it on hold due to exams. Now, exams are over, so I can again start my work on it.
I recollected all the works that has been done by me, Ranvir and Tamandeep. Following are the up to now result: