This is a summary of the work I did for the zulip server and web application as a part of Google Summer of Code 2024.
Zulip: Open-source team chat with topic-based threading
Zulip combines the immediacy of real-time chat with an email threading model. With Zulip, you can catch up on important conversations while ignoring irrelevant ones.
Why Zulip? - Efficient communication with organized team chat.
- Title: Cluster of priority features focused around settings system and API documentation.
- Repository: zulip/zulip
- Mentor: Suyash Vardhan Mathur and Rohitt Vashishtha
- Project Size: Large
- Commits during GSoC
- Pull requests merged during GSoC
- All commits in zulip/zulip
- All merged pull requests
Zulip's API documentation is a comprehensive guide designed for developers who want to integrate their applications with Zulip.
The API allows developers to interact with Zulip's features programmatically, enabling actions such as sending messages, managing users, and interacting with streams and topics.
Zulip's API documentation is very well-structured and developer-friendly and is designed to be intuitive and easy to understand. Most of the important API endpoints are covered in the documentation.
I worked on the further improvement of this API documentation by
- Adding API documentation for priority undocumented endpoints
- Adding tests and improving the existing ones
- Fixing bugs and improving UI
- api-docs: Handle multiple examples in
responses. - api_docs: Document "/export/realm" endpoints.
- api_docs: Add test to check links of pages in the sidebar.
- api_docs: Reorder and rename endpoint titles in left sidebar and documentation page.
- python_examples: Validate error responses.
- api_docs: Improve events table and fix font style of events title.
- api_docs: Fix missing content from API documentation.
- api_docs: Document "/users/me/presence" endpoint.
- api_docs: Document "/invites/{invite_id}/resend" endpoint.
- Improve tests in
python_examples.py. - api_docs: Add table of links for easy navigation in events api docs.
- openapi: Document apns_device_token and android_gcm_reg_id endpoints.
- api_documentation: Document "/invites/multiuse/{invite_id}" endpoint
Zulip offers a highly flexible settings system that allows both administrators and users to customize their experience to meet the specific needs of their organization or personal preferences.
The new settings I worked on during the GSoC period are:
Direct message permission settings: Provides more flexiblity in restricting direct messages in the organization
- Preparatory commit for #28470.
- settings: Add two realm settings to restrict direct messages
- exceptions: Update DM permission error string.
- user_groups: Add
is_empty_groupfunction to check for nobody group.
Delete any message permission setting: Provides more flexibility in configuring who can delete any message in the organization accessible to them
Also, some follow-ups are needed to be done here:
These are some bug fixes, UI changes and refactors unrelated to any major feature.
- dropdown: Fix partial highlight of list-item on hover.
- events: Send
delete_messageevent to user who deleted the message. - group_settings: Change tooltip on add members input box.
- tooltips: Make size of tooltips consistent.
- compose_typeahead: Show emojis in stream description typeahead.
- Replace occurrences of URI with URL.
- realm: Replace occurrences of uri with url in templates.
- realm: Replace occurrences of URI with URL.
- compose: Disable reply button if posting in stream not allowed.
- realm: Change default value of realm's
descriptionattribute.
- I am currently working on the new saved replies feature and have drafted a PR for now.
- I am also planning to work on the migration of the settings to the new group-permission framework.
GSoC was an amazing learning experience. It was an exciting experience to work with such a great community at Zulip. I already liked the concept of open-source, where people come together as a community to work on a real-world product, even before I started contributing and have grown to love it even more now.
I have significantly improved in writing quality code, addressing feedbacks from the reviewers and review my own code efficiently and effectively before pushing the changes. I have gained confidence in working with Git and GitHub which I used to find difficult previously. I have learned how to work in a community, effectively express my ideas and collaborate with others to achieve goals.
I want to thank Tim Abbott who helped me prioritize the work, providing helpful and insightful guidance and comprehensive code reviews during the GSoC period. I also want to express my gratitude towards my mentors - Suyash Vardhan Mathur and Rohitt Vashishtha - who helped me with Git issues, provided explanatory code reviews on my PRs and their invaluable assistance when needed.
Thanks to the entire Zulip community for an exceptional summer filled with valuable learning and growth.
