zulipbot: Solving GitHub workflow limitations and more

Accepted Session
Short Form
Scheduled: Thursday, June 22, 2017 from 10:00 – 10:45am in B301


On a large open source project like Zulip, we were starting to see major productivity problems for the project, caused by longstanding limitations in GitHub’s permissions and notifications systems. Learn how we created zulipbot, an open source GitHub workflow bot written in Node.js, that patches these limitations in GitHub’s model and how you can use it to manage your own GitHub projects and organizations.


zulipbot creates a significantly more democratic workflow for our contributors, allowing them to claim issues, manage labels, and transition from new contributors to being the maintainer of their portion of the busy Zulip server project, even if they’re a volunteer with only a bit of free time.

zulipbot is authored and maintained by a team of high school students who originally got involved with Zulip as part of Google Code-in, an excellent program from the same office that runs Google Summer of Code, but are now key members of the project.

Ever since it was first deployed on Zulip repositories on February 12, 2017 after a month in development, zulipbot has become a beloved member of the Zulip development community. The code is open source, actively developed, and designed to be fully configurable (zulip’s own configuration is here) so that other projects can benefit from it.

Anyone who has used GitHub for a large open source project is likely familiar with these key limitations in GitHub’s permissions and notifications systems:

  • GitHub’s notification system has no direct support for subscribing to a subset of the issues/PRs in a repository.
  • GitHub’s issue tracker only allows users with full write access to a repository to assign issues (even to themselves, aka claiming an issue to work on).
  • GitHub doesn’t even let a contributor without full write access abandon an issue they’ve been assigned.
  • GitHub’s issue tracker only allows users with full write access to a repository to label issues.

Moreover, inactivity of contributors slowed the project down as a whole. People post on an issue that they were going to work on an issue, but are never seen again thereafter. Others open pull requests, but never reply to comments from reviewers nor update their code. Sometimes, maintainers themselves forget that a pull request needed to be reviewed and that pull request goes inactive.

Given the above issues we faced with GitHub’s limitations, we developed zulipbot to work around these problems, relying on GitHub’s API.

While in part, zulipbot is a workaround for GitHub limitations (that GitHub should probably just fix for everyone), it also is a tool that gives us control over how our project works. We are currently working on automated testing for our code and adding new features, like checking inactivity on reviewed and not reviewed pull requests.

This talk will show in depth how zulipbot works and how you can configure it for your GitHub projects and organizations.


Zulip, github, workflow, bots, node.js, GitHub API, zulipbot, api, community management, Code Review, bug triage, high school

Speaking experience

Joshua has given talks on his original research in the environmental sciences field on using remote sensing techniques to predict strawberry yield. Presentation slides: http://tinyurl.com/remotesensingpresentation.

He has also given talks in literature on antimorphosis and representability of the Holocaust. Presentation slides: http://tinyurl.com/antimorphosispresentation. Presentation notes: http://tinyurl.com/antimorphosisnotes.

Joshua has never spoken at a conference before and has never given this talk before.


  • Joshuapan 1bf0450e be65 4d8a a6e2 f4b4d2642d48

    Joshua Pan



    Joshua Pan is a student attending Proof School (San Francisco, CA). His background in programming came from his competitive programming experience. He got introduced to open source programming through Google Code-in, which he was awarded Grand Winner in 2016 for his contributions to Copyleft Games.

    Joshua is an active contributor to Zulip, a powerful, open source group chat application, and is a lead developer of zulipbot, a GitHub workflow bot for Zulip. In his free-time, Joshua enjoys playing basketball, solving math and physics problems, and playing drums and ukulele. He also enjoys writing on Quora.