My First Open Source Contribution (!!!)

May 12, 2021

I’m officially a contributor for Zulip Terminal! I’m helping to build things that other people actually use! At the start of my second batch at Recurse Center, I decided to contribute to an open source tool that I use. The idea of writing code for an ‘official’ project scared me, but I knew I was ready for the challenge. Let me tell you why and how I became a contributor for the Zulip Terminal project...hopefully, my story will inspire you to join as well!

The Why:

Why Contribute to Open Source?

  1. To give a little love to my favorite tools.
  2. To write code that people will actually use!!!
  3. To meet cool people.
  4. To get better at using git.
  5. To get comfortable coding collaboratively in a semi-professional environment.

Why the Zulip Terminal Project?

1. Zulip is awesome.

I might be a bit biased but ever since I joined the Recurse Center (which uses Zulip for communication) I’ve been telling everyone I know that they should quit using Slack and switch to Zulip.

2. The developers are awesome.

The Zulip community has been so supportive throughout my process of contributing - from welcoming me when I first joined, to pointing me to some good first issues, to answering my questions to giving me timely and detailed feedback on my pull requests I couldn’t have asked for better people to work with.

Plus Zulip Terminal is a newer project with a less mature codebase so it was easier to dive in and find things to work on. Not to mention that it’s written completely in Python, my language of choice.

The How

1. Get Involved in the Zulip Community Server

Many projects have a place where all the contributors and the maintainers hang out - for Zulip this is the community server! I joined and posted in the # New Members stream, where I got lots of wonderful advice. Then I moved to the # Zulip Terminal stream and started to read through all of the topics and get a feel for what was going on.

2. Learn How to Use Git

When I decided to contribute to Open Source I still didn’t understand git. I knew how to create a repository on GitHub and push commits to it, but I didn’t know anything about fetching, pulling, rebasing, amending, patching, etc. I didn’t know anything about the art of structuring your commit history or working collaboratively with other people. Hence, the first step to contributing involved reading through Zulip’s git guide and working through this great interactive tutorial. Plus many many google searches (and probably many more still to come).

If you're also new to git, I highly recommend installing the Git Graph plugin for VSCode. It's helped me visualize what's happening in the git tree as I perform various commands; however while I like to use the plugin to look at the tree, I stick to the command line for actually running commands.

3. Learn How to Use Zulip Terminal

While I knew how Zulip worked, I had only ever used the Mac desktop app before so I had to learn how to use the Terminal app. This in itself was a process, given that the user tutorial had never been completed...which led me to my next step.

4. My First Contribution- Creating a User Tutorial

Many Recursers suggested taking on a documentation issue as a first contribution to:

The thought of familiarizing myself with Zulip Terminal’s codebase was a bit overwhelming when I hardly knew how the app itself worked from a user’s perspective. Plus, I was slightly afraid that I’d push my git commits and somehow delete the whole thing. I’m a confident writer who enjoys distilling complex topics down into bite-sized pieces; therefore, when I realized Zulip Terminal needed a tutorial, I knew I was the (wo)man for the job.

Check out the tutorial here.

If you’re looking to contribute to an open source project, I highly recommend getting started by taking on a documentation issue.

5. My Second Contribution- Writing Actual Code !!!

The desktop version of Zulip gives you the option to have the number of messages you have starred displayed in the upper left-hand corner of the Zulip app. The Zulip Terminal app didn’t have this option, but now that my pull request is merged, the number of messages you have starred will be displayed in the upper left-hand corner of the app just like in the desktop app!



A bit underwhelming no? The beauty lies in the code...Adding this feature touched more parts of the codebase than I expected and I ended up with a fairly good idea of how the project worked as a whole. Plus having other people review it was so much fun. I learned a lot and thoroughly enjoyed our team debugging sessions.

Three bits of advice for contributing code:

  1. Don’t worry if it takes a week or more for your pull request to be reviewed. If you think your PR has gotten lost, don’t be afraid to reach out and give someone a friendly tap on the shoulder, but realize that for most, this is a side hobby and not their full-time job. Go in with an open mind of how long the process of getting a PR merged will be.
  2. Be open to advice from reviewers. I believe everyone has something to teach. Don’t be afraid to defend your own opinions, but don’t hold too tightly to how you think things should be done.
  3. Don’t be afraid to ask questions if you don’t understand something. Like I mentioned before, everyone is extremely friendly.

6. Spreading the Word with Workshops and More

Not all contributions require you to make a pull request - you can also help spread the word and get other people involved. I love Zulip and I love telling people about it. This week I gave a workshop during the Recurse Center’s Never Graduate Week Hackathon on “Building a Zulip Bot!!” I had a lot of fun putting together the workshop and sharing my newfound knowledge of the Zulip API with others. I even managed to hunt down a bug with the latest server update while I was putting the workshop together, which was a rewarding experience. Here’s a pre-recording of the workshop I shared for people who missed the live version and for anyone who wants to build a Zulip bot.

I also convinced Argo Navigation, the startup I’ve been with for the past year, to start using Zulip. When you love something don’t be shy 😉.

What’s Next?

Originally my plan was to iterate and improve upon my initial contribution with the starred count display. Unfortunately I won’t have time before I head on my next adventure (which involves a lack of internet for 4+ months); however, when I come back I want to try my hand at reviewing and see what new issues have popped up.

Stay tuned and be sure to `pip install zulip-term`!