Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Work Product for Google Summer of Code'21 with Zulip

Google Summer of Code 2021 with Zulip

This is the report of work I did as a Google Summer of Code participant with Zulip. Most of my work during GSoC is around improving stream settings, user profile view, left sidebar, message view areas along with some minor bug fixes and code refactoring. This report mentions all pull requests and issues that I opened as parts of my contribution during GSoC.

Merged Commits

  • Total commits merged: 39 (Application review Period) + 89 (GSoC including community bonding period) = 128.


  1. Redesign Stream edit section: Stream management modal was very messy and unclear in terms of the importance of the information it contains. I added a tab-based navigation design that separates different sections of stream settings. Stream settings are now separated into three sections (General | Personal | Subscribers) so that it is easy to discover personal, stream-specific and subscribers settings of any particular stream.

    Merged PRs for stream settings area:

    • #18872: Refactors and preparatory works for having tabbed navigation in stream edit modal.
    • #19156: Add tab design for separating stream settings into different categories.
    • #19189: Fix scroll issues in subscriber list in stream settings.
    • #19330: stream settings: Use buddy list logic for filtering users in stream setting subscriber list.
    • #18957: Show ignored deactivated users when they are being added to streams.
    • #19309: Move stream setting templates to stream settings folder.
    • #19301: Set up separate folder for stream settings template.
    • #18911: templates: Remove form-inline class from stream setting forms.
  2. Redesign user profile modal: Reorganized existing information that was displayed in the user profile view. Added a tab-based organization to show different and independent sections of user-specific information. This work included adding separate tabs as (General | Streams | User groups), adding support for different admin actions to make user profile modal more usable.

    Merged PRs for profile modal redesign and popovers area:

    • #18671: Show stream subscriptions and user groups in profile modal.
    • #18886: Fix stream list bug in user info modal.
    • #18697: Refactor User profile modal module.
    • #18972: popovers: Extract user_profile_modal functions in separate module.
    • #19002: Add unsubscribe button in stream list in user profile modal.
    • #19039: Add filter widget in profile modal stream list.
    • #19100: Stream name alignment fixes and minor refactors for ids in profile modal tabs.
  3. Left sidebar and message view: Added functionalities for topic search, improved message action buttons. Some of the work related to adding keyboard shortcuts and un-mute actions in the left sidebar is still not merged and linked at the end.

    Merged PRs for left-sidebar and message view area:

    • #18724: left-sidebar: Add topic filter input in zoomed topic view.
    • #18788: left-sidebar: Hide clear filter text button if topic filter is empty.
    • #18497: message view: Allow muted user's message to be re-hidden.
    • #18515: message view: Fix tooltips in message action icons.
    • #18593: message view: Show re-hide option in revealed muted user's message only.
    • #19297: message view: Refactor HTML in failed message action buttons.
  4. Miscellaneous code refactors and bug fixes: Refactored various js and css files to improve code readability and added test coverage for some missing modules.

    Merged PRs for this:

    • #18627: Add node tests for pill_typeahead.js module.
    • #18592: Refactor pill_typeahead.js and extend it for user groups.
    • #18502: recent topics: Display other sender names in tooltip.
    • #19061: stream settings: Rename stream_subscription_info to `stream_subscription_request_result`` for readability.
    • #19193: subs: Rename subs.js to stream_settings_ui.js.
    • #18817: Migrate Localecompare to custom helper util.strcmp.

Open PRs

Following PRs are in completed state but under review.

  • #19533: left-sidebar: Add separate section for muted streams in left sidebar.
  • #18823: left-sidebar: Add Q hotkey for zoomed topic view.
  • #18888: Adding @usergroup syntax for bulk adding usergroups to stream.
  • #19109: Add help center documentation user profile modal features.
  • #19364: Deduplicate templates for stream privacy icon.
  • #19484: Change alignment of items in general tab of profile modal.

Open issues

  • #19110: Add live update for stream list in full profile modal.
  • #18949: Ignore deactivated users while adding users to stream.

Experience and future plans

Working with the Zulip community was a great learning experience. Zulip community is really helpful for anyone stuck at any phase of development. Working with my mentors and administrators I learned how to write clean and maintainable code. I also learned the art of breaking huge changes into commits that are easy updates based on reviews, and also about tackling big issues. I would like to thanks the Zulip community as well as my mentors for their highly supportive nature. I would like to contribute to Zulip even after GSoC as I've learned a lot of things while working with the Zulip community and wish to contribute and continue this journey even further.

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