Skip to content

Instantly share code, notes, and snippets.

@adnan-td
Last active June 26, 2025 13:03
Show Gist options
  • Select an option

  • Save adnan-td/f727cbe9e4d9b8746b81d5bf635b8518 to your computer and use it in GitHub Desktop.

Select an option

Save adnan-td/f727cbe9e4d9b8746b81d5bf635b8518 to your computer and use it in GitHub Desktop.
Google Summer of Code 2021: Final Report

Google Summer of Code 2024 with Zulip Open Source Project

This report contains my contributions to Zulip as part of GSoC work. 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.

An overview of the project can be found here.

My Experience

Between now and 6 months ago, I can feel the change. Looking back, I took a huge step, beyond my expectations and experienced my most memorable summer yet. I started my GSoC contributions a bit late but found the Zulip community incredibly welcoming and supportive. The well-maintained documentation made getting started easy, and the project setup was seamless.

Over the summer, I contributed to multiple projects, including fixing bugs, adding new features to Zulip Web, and updating integration docs. Learned many new technologies by simply working with them. In just a few months, I feel a LOT more confident coding and have improved as an engineer.

Collaborating with my mentors Ujjawal Modi and Shubham Padia, as well as project admins Tim Abbot and Alya Abbot, was a great experience. Their feedback helped me refine my coding practices and taught me the importance of clear communication in discussions and problem-solving.

I’m grateful to the Zulip community, my peers, and Google for this opportunity, which has helped me grow both as a software developer and a passionate open-source contributor.

Contribution to Zulip this summer

The PRs are divided into the following categories here:

Composebox:

  • #30141, #30843 - Place compose box typeahead near the cursor. [merged]

    Fixed the issue where the typeahead was not placed near the cursor when typing in the compose box. Added the textarea-caret package to calculate the cursor position and place the typeahead near it.

  • #30287 - Fix long text overflow in DM recipient box. [merged]

  • #30655 - Align multi-line text in compose box dropdown. [merged]

  • #30222 - Add setting to notify user of guest recipient in DM. [almost merged]

    Added a compose warning that appears when attempting to DM a guest reminding clients that they may not be part of the organization. This setting can be toggled in Settings / Organization Permissions. With this project, I explored the backend APIs and learned about the underlying architechture behind the realtime service. This PR is almost merged and is pending a final review.

Input Pills:

  • #30161 - Fix background color of input field. [merged]
  • #30716 - Add channel privacy icons in input_pill. [merged]
  • #30751 - Fix typeahead position not updating on pill remove. [merged]

Update integration-docs to the new format:

This was a fun side project where I collaborated with fellow GSoC contributers to update the integration docs to the new format. The new format is more readable and easy to follow. Updated the docs for the following integrations:

  • #30731 - HelloSign, Hello World, Heroku, Insping, IFTTT. [merged]
  • #31038 - Sentry and Semaphore. [merged]
  • #31233 - PagerDuty, Papertrail, Patreon, Pingdom. [merged]

Deleted users:

  • #31323 - Clean up web UI for deleted users. [open]

    Fixed UI issues in the web for deleted users which is a blocker for adding the ability to delete users via the settings UI. Added a flag in UserProfile called is_deleted which replaces the previously used is_mirror_dummy for deleted users. The PR is still open and pending a final review.

  • #31351 - Delete user via settings UI. [work in progress]

    Added the ability to delete users via the settings UI. Added a view for calling the do_delete_user function, a confirmation modal, updated the web after deleting a user in realtime by sending a new signal for deleting user. The PR is still a work in progress.

Deactivated users:

While working on the deleted users project, I discovered issues related to deactivated users, since they are quite related.

  • #31313 - Fix message view banner for dm with deactivated user. [merged]
  • #31320 - Remove deactivated users from right sidebar. [almost merged]

Miscellaneous

  • #30161 - Fix background color of input field in invite modal. [merged]
  • #30520 - Fix compressing of display topic names in web. [merged]

Open PRs

  • #30695 - Fix navbar heading alignment when using full width. [open]
  • #30845 - Fix channel subscription jitter. [open]

PRs Reviewed

This year, Zulip followed a buddy review system where each contributor was assigned a buddy to review their PRs. My buddy was Sujal who helped me a lot in my journey.

These are the PRs that I reviewed and provided feedback on:

  1. Add Pills in Organization Settings #30371.
  2. Implement stream navigation behavior #29191.
  3. Fix jitter behavior of plus/checkmark #30557.
  4. Follow up restructure stream creation panel PR #30479.
  5. Convert name to pills in custom emoji section #31030.
  6. Usergroup detail section #30296.
  7. Show disabled create stream button and text #29416.
  8. Document Share someone's profile #31121.
  9. Add members to usergroup invitation #30299.
  10. Consolidate Bot section #31164.
Integration Docs PRs:

While working on the integration docs, we reviewed the following PRs together in multiple live sessions:

  1. integration-docs: #30790, #30792, #30793, #30794, #30798, #30799 by Niloth.
  2. integration-docs: Update for new format (Harbor, Greenhouse, JSON, Jotform) #30752 by Pieter K.
  3. Update for new format (Mention, Netlify, Opbeat, Open Collective) #31231 by Pieter K.

Post GSoC

For now, I hope to complete the issues that I took at the end of GSoC soon. While I focused mainly on frontend work this summer, I aim to contribute more to the backend in the future. Working with Zulip was an invaluable learning experience, and I look forward to continuing as an active member of the community - offering suggestions, reviewing PRs, and helping newcomers. I hope to use my experience to support the growth of both the project and the community.

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