Google Summer of Code 2022 - Zulip
This document contains my major contributions to Zulip as part of GSoC work which is a combination of several projects.
Just like last year, this has been a fantastic summer working on Zulip. This year I worked on larger projects where I had to do something from scratch or continue work which has already been started, which has been a great learning curve for me, reading someone's code and answering the question "Why did they do it this way?", "Is there a better way to do this?" has helped me improve my debugging and coding skills. Other than that I also spent a good amount of time reviewing code—something I've never done before but which is a great way to learn from other people's code and improve my skills alongside them.
Besides technical knowledge, I also learned how to better manage my time when I have a full-time job and college. One important lesson I learned is that doing one thing at a time with full dedication helps me accomplish more in less time. Also, planning ahead and setting realistic deadlines, as well as prioritizing tasks, helped me stay on track with my goals and responsibilities.
Add two section layout in the right sidebar
This work was started by YashRE42 in #20072. I carried on his work because he got busy with other stuff. He helped to get acquainted with PR as it is quite huge (more than 2000+ line changes). Most of the work was done by him, I majorly worked on polishing his code, adding some tests to reach 100% test coverage, and minor UI improvements. As the PR is quite huge to review, Tim suggested adding non-functional commits in other PR #22426 so we can start merging it. Currently, both the PR is awaiting a review and one of the biggest hiccups merging it is the hack: Add ListCursorWithScrollOverride hack commit. After the reviewers get time to review the PR I am more than excited to work on it.
Hide scroll to the bottom button when using the keypress
This was a fun project to work on major things I did here were to switch the bottom button animation from jQuery to CSS to avoid a queue if someone continuously presses up and down keys and also avoid showing the button when using keypress. zulip/zulip#22393
Stream privacy icon in other typeahead
In zulip, every stream has an icon and a color assigned to it. My goal in this project was to add the icon at multiple places where we are mentioning streams. As I continued working and reiterating from the reviews the PR grew larger and larger. Currently, design review is done and It is now ready for code review. zulip/zulip#22864. Very excited to see this getting merged.
Disable showing read receipts for Notification Bot messages.
This was a quick project to work on, as it would require a good amount of refactoring if we want to avoid showing read receipts of bots messages in the backend, I worked on hiding the read receipts list on the front end. zulip/zulip#22908
The initial work was started by YashRE42, but as he got busy with other stuff, I took over. I worked on matching the design provided by terpimost in zulip/zulip#22635 and adding tests. And then iterating as per the reviews provided by Alya to perfect the implementation. The PR is in the later stages of design reviews but it looks like it will be soon ready for code review.
Solving Puppeteer Test Flakes
I have spent a good amount of time debugging the puppeteer test failure and fixing them,
- puppeteer: Fix test_narrow_public_streams test in message-basics.ts #22692
- puppeteer: Fix subscribe_toogle.ts long pending flake. #22728
- puppeteer: Fix flake innavigation.ts. #22735
- puppeteer: Fix flake in user-deactivation.ts.#22736
- puppeteer: Fix dropdown click flake in admin.ts. #22901 and
- puppeteer: Wait for drafts of slide-up animation to finish. #23192
You can find a list of all of my PRs related to puppeteer here.
I also worked on some other quick PRs and fixes
- Presence status and emoji for PMs in recent topics. (zulip/zulip#23305)
- Fix hours and minutes input getting squeezed in safari. (zulip/zulip#22867)
Apart from writing code and I also reviewed a bunch of PRs which was fun,
- Update characters allowed before @ and stream mentions. zulip/zulip#21786
- message-editing: Immediately show a menu. zulip/zulip#22289
- polls: Add option for modal to create polls. zulip/zulip#22370
- compose: Add format hinting for spoilers. zulip/zulip#22428
- documentation (user): Document /poll in ? help widget. zulip/zulip#22409
- todo_widget: Improve its functionality and customizability zulip/zulip#22551
- Make it easier to work with numbered and bulleted lists zulip/zulip#22445
- puppeteer: add test "mute_topic" for recent topics zulip/zulip#22916
- typeahead: 2 highlighting bugs fixed zulip/zulip#22739
I am grateful to my mentors, Tim and Alya, who reviewed my work and gave me invaluable feedback. Their input has made me a more competent coder. Also, I wouldn't have been able to contribute to zulip if they hadn't been flexible with time duration. I am also thankful to Yash for helping me get familiar with the PRs.
On a final note,
Zulip is one the most awesome open source organization, they have done everything right from product to documentation to the community. I've already done GSoC with Zulip twice, and if given the chance again, I'd do it again. I'll continue contributing to the project regardless.
I'd love to continue contributing to Zulip and am very excited to get my pending PRs merged.