Skip to content

Instantly share code, notes, and snippets.

@Riken-Shah
Last active September 16, 2021 02:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Riken-Shah/a8253e95265a22fadb55cbe62be32deb to your computer and use it in GitHub Desktop.
Save Riken-Shah/a8253e95265a22fadb55cbe62be32deb to your computer and use it in GitHub Desktop.
Google Summer of Code 2021: Final Report

Google Summer of Code 2021 - Zulip

This document contains my major contributions to Zulip as part of GSoC work which is a combination of several projects. My weekly checkins at chat.zulip.org are also great to view my work. Here is the list of all my merged PRs and commits.

Adding Support To Use Emoji For User Status

This work was started out by YashRE42 in #17652 and #16711.

The initial work of Yash helped me a lot to get started on the project. I learned a lot about the backend codebase of zulip while working on it. We discussed a lot about the feel and look of the feature on chat.zulip.org. My PR #18955 had grown larger and had more than 1000+ lines of changes. Though if you see now it only shows 400+ lines changed because most of the commits were merged separately as Tim reviewed.

Currently, it is merged with few follow-ups PRs fixing styling and puppeteer test issues #19457, #19439 and some more. One of its significant follow-ups of allowing animated emoji to display as still images #19563 is still up for review.

Upgrading Puppeteer to 9.1.1

It took almost a week to do this, as it requires to pass the test after running 100 times on CI with three different OS: Debian, Ubuntu 16, and Ubuntu 20 and solving several non-deterministic flakes.

The PR for this is #18590 and was merged happily.

Adding a Stream Member List

This work was started out by YashRE42 in #12846.

After a bit of discussion in CZO regarding the design and feel of the features, the PR #19541 is almost ready for review.

Improving Compose Box Errors

This was a small and fun project to work on, #19213 and merged quickly.

Improving Drafts Behaviour

The related issue regarding this is #18555 which comprises other small issues.

In this project,

  • Updated the behavior to restore the last draft when we open compose box (#18613). It's still awaiting a review.
  • Allow rotating of drafts through compose box (#18718). It is blocked by #18757.
  • Delete the draft if compose box is cleared and closed. (#18656) (Partially merged).

Load Older Messages When Scrolling is Completed

This project was quite interesting to work on, The idea was simple to load older messages as scrolling is completed but when implemented, the scrolling was not smooth because of some existing bugs and new bugs introduced by my changes. It took me the whole day of continuously staring at code to figure out the issue.

Currently, it is waiting for a review.

Link to PR: #19151.

Improving the UI for Long Messages

This was also quite a fun project to work on, adding a fade and collapse/expanding animation for long messages.

Currently, it is waiting for a review.

Link to PR: #19308.

Improving Codebase

I have opened several PRs which refactors the code to reduce the complexity of files and help developers to understand the code faster.

  • #18717 navbar_alerts: Replace HTML template with handlebars architecture merged.
  • #18739 navbar_alerts: Move bankruptcy loader msg as step-2 of bankruptcy alert merged.
  • #18775 custom_check: Avoid use of assert to avoid confusion with assert.equal merged.
  • #18829 gear_menu: Extract the gear menu as a handlebars template merged.
  • #18800 provision: Better architecture to remove unused caches merged.
  • #19235 refactor: Move "send button" related code from compose_validate.js to compose.js merged.

and a few more...

Solving Puppeteer Test Flakes

I have solved several puppeteer test flakes during my GSoC period and even before that, #19439, #19420, #19295, #18686, #18816 are just to name a few. You can find a list of all here.

On a final note,

Zulip is best for beginners trying to get into open source. I was a newbie in open source when I joined Zulip and they made me fall in ❤️ with open source. This summer was undoubtedly one of my best thanks to the awesome Zulip Community and my mentors. Overall I have become a much better developer, contributing to a codebase that is used in 1000+ organizations worldwide is a different feeling in all 🐙.

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