Skip to content

Instantly share code, notes, and snippets.

@juliaBichler01
Last active October 24, 2022 09:07
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 juliaBichler01/75c7e2a0bfc117ad19755cb4dd74733d to your computer and use it in GitHub Desktop.
Save juliaBichler01/75c7e2a0bfc117ad19755cb4dd74733d to your computer and use it in GitHub Desktop.
My Google Summer of Code with Zulip

My Google Summer of Code with Zulip

This document is a summary of the work i did during the last 18 weeks as part of Google Summer of Code 2022.

Quick Links

Overview

During GSoC, i mainly worked on the drafts modal, the stream settings and the message editing functionalities. In the drafts modal, i continued working on a bulk-delete functionality, continued the transition from the native scrollbar to Simplebar, started implementing a second tab for scheduled messages and implemented a bug fix. In the stream settings, i transitioned the buttons from titles to tooltips, implemented a bug fix concerning the header of the modal, started the transition from the native scrollbar to Simplebar, refactored the general stream settings and the way those settings can be edited, implemented live-updating of the privacy icons and continued implementing a modal to copy and edit the stream email address. In the message-editing modal i changed it so that it immediately shows the menu which messages will be moved, reworded this menu and changed the default option and added notifications for when a message is moved from one topic to another one. I also finished implementing the option to send a email to an user after deactivating them and continued implementing some formatting buttons for the compose box.

Challenges and Learning

During GSoC i learned and improved my skills in a lot of areas, like git and version control, testing and documenting changes, implementing backend and database changes, dynamically adapting the frontend to changes, working with flex boxes, finding bugs, reviewing other pull requests and much more. My biggest challenges were probably implementing backend calls and database interactions, since i did this for the first time during GSoC. I also had to work with puppeteer test more during the last few month, which is still quite a challenge for me, since i do not have a lot of experience with those tests, only with unit tests. I also got to work more with new areas of zulip, which i always find exiting, because i get a larger understanding of the inner workings of Zulip this way. While i definitely improved my programming skills, i definitely also learned the importance of things like code reviews, regular checkins, commuication and asking for feedback and generally how to develop a software in a large community.

Work Product

Pull Requests opened and merged during Coding Period

This PR changes the message-edititng window so that it immediately shows the menu for which messages to move. This also changes the visibility of the menu, so that it stays visible once it was shown, so that there is less visual clutter.

Area: message-editing | Size: S | Lines added: +17/-2

This PR rewords the move message dropdown menu so that it is easier to understand. It also updates the width of the menu, the order of the options and the content of the corresponding help pages.

Area: message-editing | Size: S | Lines added: +6/-18

This PR changes the default move option in the move message dropdown menu from Move only this message to Move this and all following messages in this topic.

Area: message-editing | Size: XS | Lines added: +2/-2

This PR changes the stream settings UI so that the buttons use tooltips instead of titles.

Area: stream settings | Size: S | Lines added: +5/-5

This PR fixes a bug where the user was not able to delete drafts in mobile or narrow view. The problem was that the message-content box overlapped with the draft controls.

Area: drafts | Size: S | Lines added: +7/-7

This PR changes the stream settings overlay so that the header with the stream name or with Create stream is also visible in a narrow window.

Area: stream settings | Size: XS | Lines added: +3/-1

This PR adds notifications when a message is moved from one topic to another topic in the same stream. Previously this only worked for moves between two streams.

Area: message-editing | Size: XL | Lines added: +394/-31

This PR changes the stream create form so that it uses simplebar instead of the native scrollbar.

Area: stream settings | Size: M | Lines added: +20/-7

Pull Requests opened during Coding Period

This changes the stream settings overlay so that it looks and works like the normal settings. This means that all settings are always shown and can be edited in place, if the user has permission to do so. Otherwise the settings are shown, but editing is disabled. Also the settings can now be saved with the same save/discard-widget that is used in the other settings.

Commits:

  • 9161938 - stream settings: Always show stream settings.
  • a767a90 - stream settings: Show save/discard widget when settings change.
  • 05e1a61 - stream settings: Discard changed settings.
  • 3013399 - stream settings: Save changed settings.

Area: stream settings | Size: XL | Lines added: +410/-27

This PR adds a second tab to the drafts module where the user can view and edit scheduled messages. This also adds server-side syncing for those scheduled messages.

Area: drafts | Size: XL | Lines added: +707/-24

Pull Requests opened before but merged during Coding Period

This PR changes the stream settings UI so that the privacy icon in the general stream settings is updated after changing the privacy without needing to reload the page.

Area: stream settings | Size: S | Lines added: +18/-0

This PR adds the functionality that an admin can choose to send an email notification to a user after after deactivating them. Here the admin can enter some custom text that will be sent to the user, additionally to a generic information that the user was deactivated.

Area: settings (admin/org) | Size: XL | Lines added: +238/-6

Pull Requests opened before but worked on during Coding Periodd

This PR adds more buttons to the message compose box. These buttons allow the user to quickly format the message they are currently writing with the following options:

  • Inline code
  • Quotes
  • Spoilers
  • Code blocks
  • Strikethrough
  • Latex

Commits:

  • 431c5cd - compose: Extract functions for formatting.
  • 24ea804 - compose: Format button for strikethrough.
  • 280ea3a - compose: Allow un-toggle for links.
  • 52beb2e - compose: Format button for latex.
  • 8c26fb2 - compose: Format button for quotes.
  • 04aa07d - compose: Format button for code.
  • b690b0a - compose: Format button for spoilers.

Area: compose | Size: XL | Lines added: +844/-83

This PR changes the drafts modal so that it uses simplebar instead of the native scroll bar.

Area: drafts | Size: S | Lines added: +13/-12

This PR adds a button in the general stream settings, which opens a modal where the user can copy the streams emails address. They can also modify the tags that are included in the address before copying it.

Commits:

  • af91788 - stream settings: Add copy email address modal.
  • f1bc9c4 - stream settings: Allow modifying of email address.
  • c25a0a9 - stream settings: Hide email portion if unsubscribed.

Area: stream settings | Size: XL | Lines added: +168/-13

This PR adds the possibility to bulk-delete-drafts instead of having to delete each one individually.

Commits:

  • b09ed77 - drafts: Move header to the left.
  • 1307de0 - drafts: Add functionality to bulk delete drafts.
  • 7275601 - drafts: Update UI after window resize.
  • 3284ec1 - drafts: Use flexbox for drafts header.

Area: drafts | Size: XL | Lines added: +188/-7

Post GSoC

Since i had a lot of fun and learned a lot during the last months, i definitely plan to continue contributing to Zulip by finishing my open pull requests and implementing new features for Zulip.

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