Google Summer of Code 2021 Project Details
I have been contributing to Zulip since March'21 and has been working upon different parts of the codebase. The proposal for my GSoC project was composed of a number of projects of varying difficulty and duration. However, the shift focussed on more high priority issues over the course of time. During the period of 10 weeks, I have been able to extend my knowledge of the codebase to write more complex and efficient features and also resolve major bugs.
It has been an amazing journey so far with a lot of ups and downs in dealing with things and learning at an unexpectedly fast pace. It has all been possible with the guidance from the amazing community at chat.zulip.org . I am extremely thankful to Tim Abbott for the constant support with every bit of work and my mentor Arpit Sharma for guiding me through the coding period.
These are the pull requests and commits authored by me:
I have done very limited work in production which includes adding support for the latest debian release i.e bullseye. The upgrade scripts have also been updated to handle the failure more efficiently which is essestial to guide the user in times of failure to upgrade.
CI and automated testing
I have spend a large time of my coding period in extending our github CI for automated production install test and the upgrade test. While the install test has already been present in Zulip for ubuntu bionic & ubuntu focal, I have extended it to perform the test on debian buster & debian bullseye. The production and development support for bullseye was added by me in the month of April prior to GSoC.
One of the key features of the production suite is that, now it performs an upgrade test which upgrades an already installed Zulip instance on a linux container to the latest commit which helps us catch bugs related to production upgrade process for the next release.
The changes related to API has been mostly related to the
/register endpoints. Some of the important works include:
- Defaulting the
truewhich will help reduce the use of bandwidth for clients which can evaluate the gravatar urls on their own.
page_paramsand instead compute them on the frontend.
event_queue_longpoll_timeout_secondsfield to the response dict when fetching realm data.
- Fix weird encoding of strings in the form of
json_validator=check_stringwhich required us to pass string parameter as
I have written the
jotform integration which was integrated into master prior to GSoC. During the period, I helped integrate the
open collective integration originally written by @LefterisKyriazanos.
The backend work primarily consists of work independent from the API's such as:
- Create a local version of
get_commandsthat help us to edit the help text for the django management command to prevent the users from getting confused.
- Notify user on failure to send message through email-gateway.
Most of the work on frontend has been bug fixing or code cleanups. This includes:
- Fix overlaping expand-compose icon in the compose box.
- Add support for showing resolve-topic-prefix in the left sidebar.
- Add OnSuccess listeners to copy-to-clipboard buttons so that they show feedback only upon successful event.
- Fix the design issues related to left and right sidebars.
- Add the Show password feature for password fields across the app.
Some pending works
There is still some work pending for post GSoC period which are essential for the next major release:
- #19446 - Extend the upgrade test in the CI's production suite to test the upgrade process from 4.5 version to the latest commit.
- #19357 - Raise realm deactivated error upon requesting server details through the
/server-settingsendpoint if the requested realm is deactivated.
- #19327 - Improve the deativation system of a realm user according to the plans suggested in #18941.
- #19248 - Catch jsonable error in
fail_with_messagein the outgoing webhook codepath.
- #19228 - Run production-verify step in the upgrade test of CI's production-suite.
- #19199 - Add resolve topic undo grace period.
I intend to stay connected with Zulip post GSoC as well to continue with some of the work and also get involved with new areas in the project where I could not give time during the coding period. It has been an amazing learning experience and I wish to continue this great advent for the future :)