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.
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 /events
and /register
endpoints. Some of the important works include:
- Defaulting the
client_gravatar
parameter totrue
which will help reduce the use of bandwidth for clients which can evaluate the gravatar urls on their own. - Return
zulip_merge_base
alongsidezulip_version
. - Remove
default_language_name
andlanguage_list_dbl_col
frompage_params
and instead compute them on the frontend. - Remove
sender_id
andrecipient_id
fromdelete_message
event. - Added
server_needs_upgrade
andevent_queue_longpoll_timeout_seconds
field to the response dict when fetching realm data. - Rename
max_file_upload_size
andrealm_upload_quota
. - Fix weird encoding of strings in the form of
json_validator=check_string
which required us to pass string parameter asjson.dumps(input_string)
.
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_commands
that 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.
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-settings
endpoint 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_message
in 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 :)