GSoC 2020 Ends - Final Words

With the rise in the usage of the internet, the need for digital communication is increasing day by day, this has only been accelerated by the current COVID-19 pandemic in 2020. More and more people are using chat applications to communicate with each other whether it is their loved ones or for discussing work with colleagues.

This summer I was involved in implementing In-Band Real Time Text (RTT) for Dino. Real Time Text allows transmission of text instantly just as the user is typing. This allows for faster and more engaging textual conversations just as telephonic calls but at the same time keeping the discretion of text-based communication.

To sum it up here’s what I did in order to make RTT work:

  • Message Comparision that generates the difference between two strings, in this case, used to generate a difference between the message being typed in real-time to generate necessary action elements. The algorithm is based on “Gestalt pattern matching” (Details, see here)

  • Sending and receiving real-time texts in both single and multi-user chats. The Real-Time Text has support for all action elements (insert, erase, wait) and events (new, edit, reset, init, cancel) mentioned in XEP-0301. The RTT are displayed on the conversation view along with traditional messages. In MUC at a given time, only 3 RTT are displayed in order to keep the User Interface clutter-free, the priority for which is determined by the affiliation of the member. (Details : here, here, here, here, and here)

  • RTT Setting radio toggle to toggle between Off/Receive only/Send and Receive. This is handled by using events “init” and “cancel”. (Details, see here and here)

  • Handling of stale messages that removes the RTT widget from UI if there is no update in a given time interval. This may be due to peer stopped typing or loss of sync. (Details, see here)

  • Multi-Device Support to sync input between different instances of Dino. With this, a user can start composing a message on one device and finish on another. (Details, see here)

  • Compatibility with Last Message Correction. With this, RTT is also displayed for the messages being corrected. The live correction is displayed in place of the old message received.

The PR for which is available here.

Overall it has been a great 3-month long journey. From working with a completely new language - Vala to fixing a ton of bugs in the process, and from discussions with mentor to the weekly meetings; I enjoyed my time with XSF.

Although GSoC is now officially over, I look forward to contributing more to XSF and Dino in particular in the future. Next I plan on implementing message retraction and message moderation.

Finally, I thank my mentors especially Marvin for guiding me through the summer. They have always been present to solve any problems I faced whether it was regarding discussion on how to implement something or for some bug fix. I also thank the XSF community for having me as a student developer this summer.

Written on September 10, 2020