GSoC/2022/StatusReports/SnehitSah
Project Details
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.
Progress
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.
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
- Beginning with Google Summer of Code 2022
- Community Bonding GSoC 2022
- Adding Spaces Horizontal Bar to NeoChat
- https://snehit.dev/posts/kde/gsoc-22/adding-spaces-list-pt-2/
- Making Spaces Bar Work
- Improving Space Bar Functionality
- Review and Updates for Merge Request
- Getting Stuck and Unstuck
- Be Careful With Signal Slots
- Space Hierarchy Caching Finally Works
- Separating Space Hierarchy Cache to New Class
- Polishing Spaces Horizontal Bar And Space Home
- Creating Spaces In NeoChat
- Adding Room To Space
- Updates On Space Actions Merge Request
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.