Skip to content

Instantly share code, notes, and snippets.

@YJDave
Last active August 25, 2019 13:54
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 YJDave/4e59f250cf7027dd80eca10a272e07c3 to your computer and use it in GitHub Desktop.
Save YJDave/4e59f250cf7027dd80eca10a272e07c3 to your computer and use it in GitHub Desktop.
Google Summer of Code 2019 with Zulip Final Report

Google Summer Of Code 2019 with Zulip


Google Summer of Code 2019 Final Report

This is a report of the work I did during my summer as being a participant of Google Summer of Code program with Zulip organization. Following is the short report summary of the work, which is followed by depth description of each project and issue.

Report Summary

During the GSoC period 99 commits merged to the project. Here is the list of all merged commits to upstream project.

What's merged:

  1. External account custom profile field
  2. Stream notification setting refactor
  3. Stream settings UI refactor
  4. Organization profile preview feature
  5. Visual style improvements in settings
  6. Miscelleneous

What's didn't merged:

  • Default external account setting feature as followup of external account custom profile field #12913

What's left to do:

  • Further refactor and cleanup in Stream settings code base
  • Model design for Stream Admin feature and its followups

Project Description

External account custom profile field

Zulip supports number of awesome features, which allows organization or individuals to set zulip instance/application according their requirement and preferences. Custom Profile Field is one of them. With the use of Custom Profile Fields organization admin can add custom user fields for their organization member apart from default field like name, email etc. For example, if Academic organization can add fields for enrolled University, Program, university student profile in their zulip instance.

During GSoC, I worked on External Account Custom Profile Fields. This field works like linkifiers. When organization admin add this field in organization, users can only add their username and it will automatically links to their social media profiles. This also suppport some predefined fields like GitHub and Twitter.

To add custom external account field on organization admin:

For organization users, to add their values in fields

Related issue and PRs: #12302, #12442, #12288, #12913

Stream notification setting refactor

In order to facilitate every zulip user to receive different types of notifications for different channels according their preferences, Zulip supports various notification settings for individual stream or group of streams. This project refactors and deduplicates codebase around this feature.

Related issues and PRs: #12304, #12559

Stream settings UI refactor

There are multiple elements in subscription page(sub button, subscriber list, privacy button, delete button), and whether the user is authorized to click or even see the element, depends on various different conditions. Currently templates also includes this complex conditions when rendering these elements. After elements are rendered, when subscription data(sub.subscribed, sub.invite_only etc.) is changed, we need to again hide/show/disable these elements. This project refactors the functions which updates/rerenders the subscriptions/stream templates on different events(subscribe/unsubscribe/changes stream privacy) etc. New file stream_ui_updates.js includes different update-stream-settings-ui-elements functions.

Related issues and PRs: #12252, #12025, #12296

Organization profile preview feature

This project adds "Preview" button for organization profile in organization settings, which opens organization /login page.

Related issues and PRs: #12115, #12105

Visual style improvements in settings

This project improves style for user settings and organization settings views.

User settings

Organization settings

Related PRs: #12756, #12753, #12911, #12913

Miscelleneous

Stream Subscription Bugs
  1. streams: Update description for stream-privacy-type. #12301
  2. subscriptions: Fix error when guest user is subscribed to public stream. #12027
  3. stream settings: Fix bug in deactivate stream modal appearance. #12567
  4. subscriptions: Disable sub-check-btn if user is not allowed to subscribe. #12021
  5. Disable "All streams" for guest user #12300
  6. subscriptions: Update existing sub-row in sub settings on sub-events. #12032
Code Refactor
  1. css: Remove display-none class css entirely. #12295
  2. Refactor handlebars logic. #12884
  3. subs: Replace all in_home_view uses with is_muted property. #12370
Organization Settings
  1. org settings: Display deactivated-user section to all. #12314
Markdown Docs
  1. markdown help: Document message formatting keyboard shortcuts. #12287
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment