Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
The work product details for GSoC'21 by Gaurav Pandey

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 . 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 /events and /register endpoints. Some of the important works include:

  • Defaulting the client_gravatar parameter to true which will help reduce the use of bandwidth for clients which can evaluate the gravatar urls on their own.
  • Return zulip_merge_base alongside zulip_version.
  • Remove default_language_name and language_list_dbl_col from page_params and instead compute them on the frontend.
  • Remove sender_id and recipient_id from delete_message event.
  • Added server_needs_upgrade and event_queue_longpoll_timeout_seconds field to the response dict when fetching realm data.
  • Rename max_file_upload_size and realm_upload_quota.
  • Fix weird encoding of strings in the form of json_validator=check_string which required us to pass string parameter as json.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.

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-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.

Post GSoC

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 :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment