Zulip Terminal and Zulip

Niloth


1

Vote

Description:

Zulip is an open-source chat platform designed for team collaboration. With a strong commitment to improving communication through a unique threading model that lets you catch up on important conversations while ignoring irrelevant ones, Zulip offers diverse opportunities for both new and experienced developers.

Fun Fact: PyCon India uses Zulip too, as the primary medium of communication - https://pyconindia.zulipchat.com/.

Why Contribute to Zulip?

Zulip is developer-centric, with comprehensive documentation tailored for new contributors to help them onboard smoothly. Zulip has well over 150,000 words of documentation, and is still exponentially growing. You'll have access to step-by-step guides on everything from setting up the development environment to making your first PR.

Zulip is fully committed to helping bring up the next generation of open-source contributors. As a thriving open-source community, Zulip receives dozens of GSoC applicants every year, 2024 is the ninth consecutive year that Zulip is participating in Google Summer of Code. This dev sprint can be a great starting point for students and beginner contributors interested in Zulip's Outreach programs.

For advanced contributors, Zulip presents a wide range of complex challenges, from performance optimization to architecture refactoring, allowing you to make high-impact contributions.

Repositories

  • Zulip Terminal is the official terminal-based client for Zulip, providing a text-based user interface (TUI), built using Urwid.
  • The main Zulip codebase - contains the Zulip backend (Django), the web-app (JavaScript/TypeScript) and a library of incoming webhook integrations.

I'm very familiar with the various aspects of the Zulip Terminal codebase, and can assist people with any code contributions, but my familiarity with the main Zulip codebase is limited. I just have enough of an overview to help guide participants to the right resources (of which there is plenty to get started on) - whether for setting up the development environment, picking issues to work on, or for assistance when getting stuck on a PR.

While Zulip has other official clients Zulip Mobile (React Native), Zulip Desktop (Electron), the future Zulip mobile client Zulip Flutter that is in beta, the Python library for the Zulip API and several separate repositories for integrations and other glue code, support for those Zulip repos during the dev sprint would strongly depend on the availability of other volunteers from the community.

Available Tasks

Whether your interests lie in

  • working on the backend,
  • enhancing the frontend,
  • improving the terminal client,
  • adding features to the Zulip Integrations,
  • advancing developer tooling,
  • increasing code coverage,
  • contributing to technical documentation,
  • or assisting in migration efforts,

Zulip offers a rich set of tasks to dive into.

For more on Zulip’s architecture and tech stack, refer to this architectural overview.
For more on subsystem implementations, refer to the Subsystem Documentation

Zulip’s community-oriented workflow offers many opportunities for collaboration. You can assist in pushing forward partially completed PRs from contributors who may have become unavailable, or participate in code reviews of opened PRs, or brainstorm complex problems.

Community Support

Zulip’s thriving developer community ensures you will always have access to meaningful discussions around ongoing projects.

You will also have access to a vast amount of previous conversations, giving you a head start into the aspects of Zulip you are interested in, and making it easy to get help on running into any blockers with provisioning or development.

How to Get Started

Follow the Zulip Terminal developer setup instructions if you want to work on the Terminal client.

Follow the Zulip development environment setup instructions if you want to work on the Zulip server, the web-app or the incoming webhook integrations.

If you run into any trouble with the setup, please search for threads from folks who have come across the same errors previously, in the Provision Help channel.

Please refer to the Contributing Guidelines before starting contributions.

Standards and Expectations

Contributions to Zulip must meet rigorous quality standards. It’s not just about functionality; your code needs to be clean and well-structured. For more details, refer to the Commit Guidelines and the Code Standards.

Zulip values contributors who are proactive and able to navigate the extensive documentation on their own. We strongly encourage developers to read the documentation when provided links, rather than relying on verbal explanations of the same, to get the most out of this sprint and contribute effectively.

Conclusion

With an active developer community and diverse project scope, Zulip is the ideal platform for you to level up your open-source contributions. This sprint offers plenty of engaging and meaningful work for developers of all skill levels. If all you want to do is explore the development environment, the codebase and the Zulip community, you're still welcome to actively engage and participate in this dev sprint.

Prerequisites:

A willingness to read through documentation and discussions

Speaker Info:

Niloth from Birla Institute of Technology and Science, Pilani, has been working on Zulip’s Terminal client, as part of his Google Summer of Code project.
He is a strong proponent for open source, and believes whole-heartedly in Zulip's principles. He is enthusiastic to share his experiences and spread the word about the Zulip community, so that others can experience the joy of working with and being part of one of the healthiest open source communities ever.

Section: DevSprint 2024
Type: DevSprint
Target Audience: Intermediate
Last Updated: