This summer, the Zulip developer community welcomed 18 student participants through the Google Summer of Code (GSoC) program. This was the 6th consecutive year that Zulip participated in GSoC; more than 85 students have now completed one of our formal internship programs, primarily through Google Summer of Code and Outreachy. Our experienced contributors, including many alumni of these programs, have dedicated thousands of hours to mentorship. As a result, many of the participants have told us that they learned more contributing to Zulip than in their 4-year formal computer science education.
“It has been the best summer I've ever had! I'm thankful to my mentors, my peers, Zulip, and Google for providing me an opportunity of getting involved in the community! You have helped and supported me to become a better software developer and a passionate open-source contributor.” – Sarthak Garg
Our welcoming community is fully committed to helping bring up the next generation of open-source contributors from a wide range of backgrounds. We have invested into making Zulip’s code uniquely readable, well tested, and easy to modify. Beyond that, we have written an extraordinary 150K words of documentation on how to contribute to Zulip, with topics ranging from practical Git tips to essays on important architectural decisions. This is why the students in our 2021 cohort were able to contribute major improvements to the Zulip product.
“The Zulip community is very friendly and whenever you get stuck at something, the community is there to help. The documentation and examples are really well maintained, which helps make working on any part of Zulip easier. Working with Zulip was a great learning experience. I hope to use all the experience I have gained to help the project and the community grow.” – Priyam Seth
Together, this year’s students wrote over 1500 commits that have already been merged into Zulip’s main branch! It’s impossible to describe here all the great work that’s been done, but some highlights include:
Zulip web app
- Adding support for muting other users, which has long been one of Zulip’s most requested features. (Abhijeet Bodas)
- Enabling users to set their status with emoji. (Riken Shah)
- An option to expand the compose box to full-screen, making composing long messages an especially pleasant experience. (Priyam Seth)
- A major redesign of the Stream Settings interface, which makes the settings much easier to navigate. (Purushottam Tiwari)
- A redesign of the full user profile, which reorganizes the information into tabs and adds support for common administrative actions directly from the profile. (Purushottam Tiwari)
- Implementations of read receipts and typing notifications to provide additional insight on other users’ availability. (Dinesh Chidipothu)
- Fixes for dozens of issues in Zulip’s Markdown processor. (Akshat)
- Refactoring Zulip’s modals to remove a great deal of code duplication, fix subtle bugs, and migrate to the modern Micromodal library. (Ganesh Pawar)
- Migrating sections of the web application codebase to TypeScript. (Priyank Patel)
- A redesign of the Recent Topics filtering widget to be more compact, so that we can readily add filtering features. (Aryan Shridhar)
“The last couple of months were really amazing; I gained massive experience as developer. I saw firsthand how an open source community builds a project by keeping everyone's suggestions in mind.” – Aryan Shridhar
“The Zulip community is really helpful for anyone stuck at any phase of development. I learned how to write clean and maintainable code, the art of breaking huge changes into commits that are easy updates based on reviews, and also about tackling big issues.” – Purushottam Tiwari
I would like to recommend to my friends in college that if they want to get started with open source, then Zulip is the perfect place. One is always welcome to contribute in many different areas — web-app, mobile, terminal, desktop. Constant support by the community is what makes Zulip so special! – Akshat
Zulip server and API
- Implementing a configurable grace period for email notifications, allowing users to decide how frequently they would like to receive email notifications from Zulip messages. (Abhijeet Bodas)
- Major refactoring work to make the Zulip server codebase more strictly typed with Django type stubs, fixing ~1400/2000 type-checker (mypy) errors. (Zixuan James Li)
- Extending Zulip’s test suites to verify upgrades from previous Zulip major releases, in addition to improvements to existing installer tests. (Gaurav Pandey)
- Major improvements to the completeness, correctness, and complexity of Zulip’s API documentation. (Suyash Vardhan Mathur)
“It has been an amazing journey so far with a lot of ups and downs in dealing with things and learning at an unexpectedly fast pace. It has all been possible with the guidance from the amazing community at chat.zulip.org .” – Gaurav Pandey
“GSoC was a great learning experience, as I worked with various kinds of technologies throughout the summer. The most satisfying bit was seeing my work getting merged, knowing that the code that I wrote would be useful to the numerous users and developers of Zulip. I am elated to have 86 merged commits in zulip/zulip!” – Suyash Vardhan Mathur
Google Summer of Code with Zulip has been an enriching experience for me, massively helping me improve as a developer. – Abhijeet Bodas
Zulip mobile app
- Completing the project to enable sharing files to Zulip from another app. (Akash Dhiman)
- Making it possible to attach multiple files to a message, and include text with attachments. (Akash Dhiman)
I learned a lot of things about the day to day life of a software engineer, and what goes into building and maintaining a software product. – Akash Dhiman
Zulip terminal app
- Implementing an emoji picker for emoji reactions. (Zeeshan Equbal)
- Implementing a user profile view. (Sarthak Garg)
- Improving and extending the autocomplete system. (Hari Prashant Bhimaraju, Sarthak Garg)
- Adding type annotations to the terminal project's tests, and fixing mypy type-checking errors. (Hari Prashant Bhimaraju)
- Improving theme management. (Sai Rohitth Chiluka)
“The Zulip community has always been welcoming and helpful. Their efforts towards improving the developer experience have provided a very conducive environment to contribute. I am grateful and elated to be a part of it.” – Hari Prashant Bhimaraju
In these past few months, I have learned a lot: from writing maintainable code and proper unit-tests, to the need for extensive code-reviews and putting up comprehensible pull requests. – Zeeshan Equbal
- Data import tool for migrating from Rocket.Chat to Zulip. (Priyansh Garg)
- A redesign of the Zulipbot, a GitHub bot that helps Zulip maintainers in managing and monitoring the issues and pull requests from hundreds of contributors across Zulip repositories. (Priyansh Garg)
“I'm looking forward to staying engaged with the amazing Zulip community and helping out as much as I can.” – Priyansh Garg
We’re truly proud of everything our GSoC 2021 students have been able to accomplish, and are looking forward to their continuing contributions in the coming months and years!
If you are eligible, please join us next summer for GSoC 2022, or intern with Zulip through Outreachy this fall!
“The experience of working with Zulip for the summer was really phenomenal and taught me a lot about software development and working with a community. Zulip has one of the best open source communities out there who are super friendly and welcoming. You learn a lot just by watching others work and talk.” – Sai Rohitth Chiluka
P.S. We are also incredibly grateful to all the community members who stepped up to mentor students this summer: Adam Birds, Aditya Verma, Aditya Bansal, Aman Agrawal, Arpit Sharma, Eeshan Garg, Greg Price, Kartik Srivastava, Neil Pilgrim, Pragati Agrawal, Preet Mishra, Puneeth Chaganti, Rohitt Vashishtha, Ryan Rehman, Shubham Dhama, Sumanth Rao, Tim Abbott, Vaibhav Rabber, Vinit Singh, Vishnu K S, and Wyatt Hoodes.
P.P.S. We are also incredibly grateful to Google for organizing and funding this unique mentoring program, which helps bring up the next generation of open-source contributors. It is an invaluable contribution to Zulip and hundreds of other participating open source projects, as well as the open source community at large.