Skip to content

Instantly share code, notes, and snippets.

@aryanshridhar
Last active August 23, 2021 14:26
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 aryanshridhar/1faf7a4f3b1be307ca9940fd30298ac4 to your computer and use it in GitHub Desktop.
Save aryanshridhar/1faf7a4f3b1be307ca9940fd30298ac4 to your computer and use it in GitHub Desktop.
Work product description@GSoC-2021

GSoC 2021 Final Submission Report

Project Overview -

My project was basically centered towards improving the Recent topic view by adding a Multiselect Dropdown List Widget within Zulip frontend.
Multiselect Dropdown List Widget (MDLW) is a widget created by extending the existing Dropdown List Widget having a extra functionality of letting user select multiple dropdown items. The selected item would then be displayed as a pill beside the dropdown with each having a "x" on the right to get rid of it at any point.
Since the Recent topic view was the main highlight of our Version 3.0, with the idea of implementing MDLW, this project aims to improve it's UI by replacing the elliptical filters with pills.

However, revamping Recent Topic view wasn't my only goal throughout the summer period. I was involved in other side projects as - Server code refactoring, Migrating away from using the Django templates and a few others which are described in the below section.

Contributions -

Here's the entire list of my pull requests during the summer period.
Here's the entire list of my commits.

Merged PRs

MDLW

These are the pull request dedicated towards the completion of my summer project.

  • #18954: Add support for Multiselect Dropdown List Widget.

Frontend code refactoring:

As the name suggests, these pr deal with refactoring frontend code, by either removing dead code, implementing a better approach, restructuring code for better readability etc.

  • #18629: Refactor certain modals to confirm_dialog module.
  • #18780: Move confirm_dialogs modals to a separate folder.
  • #18701: popovers: Migrate user status indicator tooltip to tippy.
  • #18721: info_overlay: Remove dead code.
  • #19187: user_popover: Replace custom email tooltip with tippy tooltip.

Migrating Django templates to handlebars:

The main issues arises from #18792 as we still have a few Django template that should have been migrated to handlebars. Basically, these existed before the introduction of handlebars and should have been cleaned up later.

  • #19048: Migrate left_sidebar and right_sidebar to handlebars.
  • #19071: navbar: Migrate to handlebars.
  • #18761: info_overlay: Render search operators using info_overlay.

Server code refactoring:

These pr deal with refactoring code in server side.

  • #19176: users: Remove redundant compute_show_invites function.

Miscellaneous frontend improvements:

These bunch of pr are basically centered towards improving overall Zulip frontend. They include - Adding a new feature, improving the user interactions of few widget, minor bug fixes and so.

  • #18885: Improve error handling for uploading custom emojis and other minor modifications.
  • #18908: popovers: Close user popover when clicked on stream name.
  • #18975: topic_sidebar: Add support to copy topic link to clipboard.
  • #19087: table-sticky-headers: Add z-index CSS property to table headers.
  • #19277: message_edit: Fix the height of stream_header_colorblock.
  • #19338: message_edit: Replace checkboxes with settings_checkbox partial.
  • #19343: move_topic/message_edit: Toggle checkbox by clicking it's label as well.
  • #19263: stream_create: Avoid re-initialization of event handlers.
  • #19222: about_zulip: Indicate the copy icon to be clickable.

Fixing/Binding Focus events:

As zulip supports a wide range of keyboard shortcut functionality. These pr either enhance these functionalities by either binding keyboard shortcuts to other widgets as well or improve the exisiting one by fixing bugs reported by the users.

  • #19431: user_status: Trigger input focus once the modal is shown.
  • #18425: settings_panel: Bind vim keys to SettingsPanelMenu.
  • #18408: drafts: Allow vim up and down key to scroll between drafts.

Open PRs/Drafts:

MDLW:

  • #19591: MDLW: Modify multiselect dropdown widget to display selected pills.
  • #19445: recent_topic: Implement MDLW in Recent-topic view.

Tiny side project

I took this as one of the side projects to account the leisure time available during weekends. The purpose of this project is to add the common widget similar to our - confirm_dialog, which is responsible to display the "Copy link" tippy tooltip when the user hovers upon a button. Once the button is pressed, the tooltip text is changed to - "Copied!" as an user confirmation.

  • #19219: Add copy_button_widget module for rendering ClipboardJS buttons.

Miscellaneous frontend improvements:

  • #18952: move_topic: Remove unnecessary click handler for stream_header_colorblock.

What's left ?

There a lot of issues filed associated with the areas I was particularly dealing with throughout the summer, the complete list of such issues can be found here.
However, regarding the issues I was dealing with, here are a few left over work to be completed POST-GSoC -

  • Completing the pull request - #19591. As mentioned in the review, a better method is yet to be implemented to display the selected dropdown items.
  • Once the above pull request is successfully merged, the primary pull request #19445 which adds the MDLW in Recent-Topic view is yet to be rebased and reviewed.
  • With the introduction of MDLW in our frontend codebase, the widget can then be implemented in the Users organisation settings UI with the intention to filter list of users in organisation settings menu by their role.
  • The "tiny" side project turned out to be as challenging as the major ones. The pull request #19219 is left to be updated to fix the failing node tests.

Closing remarks:

Firstly, I would like to thank my mentor and many other folks at Zulip as well for their kind advices, reviewing code, resolving my queries regarding few parts of codebase, the design approach to continue with and many more.

The last couple of months were really amazing, gaining a massive experience as developer. I saw firsthand how an open source community builds an project by keeping everyone's suggestions in mind when building an project. Over these past few months I have improved myself in programming skills, espically the art of writing clean code with proper commit messages/comments, communication skills and other.

POST GSoC:

I would love to continue contributing to Zulip and explore other areas as well. (Specifically, Oauth and Message retention systems along with zulip/zulip-mobile). I intend to be a part of this amazing community parallelly with my university work, by frequently reviewing code and helping the new members to get familiar with the large codebase.

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