Skip to content

Instantly share code, notes, and snippets.

@sm-sayedi
Last active February 22, 2026 18:46
Show Gist options
  • Select an option

  • Save sm-sayedi/ccd216b7f8973cf00c7db79cfaae2c83 to your computer and use it in GitHub Desktop.

Select an option

Save sm-sayedi/ccd216b7f8973cf00c7db79cfaae2c83 to your computer and use it in GitHub Desktop.
GSoC'25 at Zulip - Work Product

gsoc logo zulip logo

Google Summear of Code 2025 at Zulip - Work Product

Hey ๐Ÿ‘‹, Sayed Mahmood Sayedi here. This is the summary of all the work I did while contributing to the new Zulip mobile client, zulip-flutter, as part of the Google Summer of Code 2025. My work primarily involved adding new features and addressing high-priority issues, related to launch and early post-launch milestones.

What is Zulip?

Zulip is an open-source chat application that combines the immediacy of real-time chat with an email threading model. With Zulip, you can always focus more on important conversations than finding an important message in a mountain of messages.


๐Ÿ“– Project information

Title: New Zulip client using Flutter
Size: Large (350+ hrs)
Organization: Zulip
Repository: zulip-flutter
Mentor: Chris Bobbe
Contributor: Sayed Mahmood Sayedi

๐Ÿ—๏ธ Contributions

๐Ÿ”— Quick links

๐ŸŽ‰ PRs merged

  1. #1530 โ€” Muted users prep

    • Adds preparation work to support muted users in the app. It includes API bindings such as getting the list of all muted users and receiving events about muted users.
  2. #1629 โ€” Track user status

    • Adds support for tracking user statuses of all users in a realm, including API bindings such as retrieving the list of user statuses and receiving events.
    • This also adds the UI elements for displaying user status, which is used in #1702 (Show user status in UI).
  3. #1643 โ€” Android keyboard image support

    • Supports adding static images and GIFs straight from the keyboard into the compose box, on Android.
    • This also supports pasting images from the keyboard, on Android.
  4. #1701 โ€” Set user status

    • Provides support for setting/changing own user status. This adds a button to the profile page, tapping which opens a new page where one can set/change both status emoji and text by editing any of them individually or by choosing from a list of pre-defined statuses.
  5. #1702 โ€” Show user status in UI

    • A continuation to #1629 (Track user status), supporting displaying user status in different parts of the app.
    • This shows the status emoji besides the user avatar and display name in several places, such as in the message list, recent-DMs page, new-DM page, and user-mention autocomplete results.
    • This also shows both status emoji and status text in the profile page.
  6. #1706 โ€” Show read receipts

    • Adds a new option button to the message action sheet, tapping which opens a new bottom sheet, displaying read receipts of the message (users who have read the message).
  7. #1762 โ€” "Copy link to topic" in topic action sheet

    • Adds a new option button to the topic action sheet, tapping which copies the topic permalink to the system clipboard.
  8. #1766 โ€” "Copy link to channel" in channel action sheet

    • Adds a new option button to the channel action sheet, tapping which copies the channel link to the system clipboard.
  9. #1778 โ€” lightbox: Make image zoom 10x instead of the default (2.5x)

    • To provide a better view of the little details in images, this adds support for zooming in images up to 10x (compared to 2.5x before), which could specifically be helpful in high-res images.
  10. #1795 โ€” internal_link: Generate new narrow links with "channel", not "stream"

    • Supports generating new narrow links with "channel" keyword instead of the legacy "stream".
    • This replaces the "stream" keyword with "channel" in other APIs too, where applicable.
  11. #1800 โ€” Set status page adjustments

    • Adds some UI-design-wise tweaks to "Set status page", such as changing some margins, removing status-suggestion touch feedback, and fixing content rendering in landscape mode.

โŒ PRs closed (unmerged)

  1. #1429 โ€” Distinguish muted users in UI (closed in favor of #1560 and #1561)
  2. #1755 โ€” deps: Upgrade Flutter to 3.33.0-1.0.pre.1149 (closed in favor of #1763)

๐Ÿ•ต๏ธโ€โ™‚๏ธ PRs under review

  1. #1784 โ€” On launch, go to the last visited account
    • Supports going to the last visited account from the list of accounts on the device, instead of always going to the first one.
    • This also adds support for sharing content from other apps to the last-visited account on Zulip, instead of always sharing to the first one.

๐Ÿ”œ Immediate future work

As there is still one PR open (under review), I intend to continue working on that to get it merged.

๐Ÿ’ก Personal experience

Participating in GSoC with Zulip for the second year has been one of the most rewarding parts of my professional journey so far. The guidance I received gave me both technical growth and the confidence to take ownership of my contributions. Zulipโ€™s clear documentation and welcoming communication style made it easy to collaborate and feel part of something meaningful. These two years have left me with valuable skills and fond memories, and I look forward to continuing my journey by giving back to the community that has supported me so much.

๐ŸŒŸ Acknowledgements

I want to thank Google and Zulip from the bottom of my heart, for believing in me the second time and giving me this golden opportunity to be part of this program and work on such an interesting project. I want to give special thanks to Greg Price and my amazing mentor Chris Bobbe, for their mentorship and guidance. I greatly appreciate their patience and support throughout. It was a blessing to learn from them and gain insightful knowledge of programming and software engineering in general.

๐Ÿ”ฎ Post GSoC

I had a lot of fun during my summer at Zulip and I hope to stay involved in the project after the program too. There is a lot of work left to do to make the Zulip Flutter client more feature-rich. Apart from this, a large portion of issues that I initially planned to work on during GSoC got pushed back due to other issues getting top priority. I will try to pick up those issues and help in getting the app shipped with new features. I will also help newbie contributors in getting started with the project and make them feel at home, the way I felt in my early days with the help of the amazing maintainers of the project.


Check out my GSoC 2024 work with Zulip here.

@jeeva-004

Copy link
Copy Markdown

can you give me the your selected proposal link.

@sm-sayedi

Copy link
Copy Markdown
Author

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