From KDE Community Wiki
< GSoC‎ | 2022‎ | StatusReports

Project Details

Title : Adding Spaces Support in NeoChat

Mentors : Carl Schwan, Tobias Fella

Spaces are a feature in Matrix to group related rooms. Spaces can be nested and have their summary page. A room may belong to multiple spaces at the same time. This makes discovery of rooms easier for end-users, and at the same time allows communities to drive more participation.

NeoChat didn't support spaces. Having this support will make it a more viable and feature-rich Matrix client, up to date with the latest Matrix specification.

Spaces were introduced in MSC1772 and there is a related open feature request on the NeoChat bug tracker.

I will add support for Matrix Spaces in NeoChat. After this project, NeoChat should be able to show Spaces, filter rooms based on which room is part of a Space, create / edit Spaces and let users explore and join rooms under a Space.


Initially, during the community bonding period, I tried writing simple program that used LibQuotient to show rooms a user has joined, and list out specifically the Spaces. I also tried adding a dummy UI element on NeoChat to show Space icons, but it didn't go too well.

We were still in slight confusion as to whether we should make all changes in NeoChat itself or add features to LibQuotient. We also decided against having a separate class to represent Spaces.

By mid June, I was able to get the widgets functional even though layout was still not proper.

On 9 July, I made the first pull request, adding the Space bar, which showed Spaces the user has joined as well as being able to filter rooms under a Space by clicking on it.

This merge request went through a lot of reviews and updates and was eventually merged on August 25.

Through this same time, I was also simultaneously working on Space home page. By mid July I had made the skeleton for Space home page and was adding features to it. On August 28, the code for showing Space home, creating Spaces and managing child rooms was submitted for review. It got lots of helpful suggestions. I have implemented most of it.

I have implemented showing Space icons and filtering rooms based on that. The relevant merge request has been accepted. I have an open pull request for Space creation / editing features. The merge request will add support for showing a Space home, creating Spaces, adding/removing child Rooms to a Space.

As of September 4, 2022 (the final day for GSoC coding period) the merge request needs some changes before it is accepted. I have discussed them with my mentor. Specifically, there is a need to set up signal - slots to automatically update the Space home page data when user makes a change to the Space, and I need to write a new list model for child rooms list in Space settings.

Blog Posts

Pull Requests

Beyond GSoC

It has been fun working on NeoChat. I will continue contributing to NeoChat and will also take up more work on other KDE apps. This has been made easy especially by the practical C++ and Qt knowledge I gained during the summer.