This work product is a summary of the work I did for the zulip server project under the Zulip organization as part of Google Summer of Code 2022.
- Title: Improve Zulip's Native Integrations
- Organization: Zulip
- Repository: zulip
- Mentor: Dinesh Chidipothu
- My GitHub profile: prah23
- Pull requests opened during GSoC: zulip/zulip
- Issues opened during GSoC: zulip/zulip
- Commit history: zulip/zulip
This pull request extended the existing WildValue system to the server's integrations to enforce strict-type checking for incoming webhook payloads as we received them.
- 7268060: lidarr: Strengthen types using WildValue.
- 3f1c2c3: mention: Strengthen types using WildValue.
- f3c7d41: netlify: Strengthen types using WildValue.
- 2f5a20a: newrewlic: Strengthen types using WildValue.
- 35ec9c3: opencollective: Strengthen types using WildValue.
- c5793d9: opsgenie: Strengthen types using WildValue.
- 6e2c176: pagerduty: Strengthen types using WildValue.
- 736e10d: taiga: Strengthen types using WildValue.
- a528132: trello: Strengthen types using WildValue.
- 6dfcb77: pingdom: Strengthen types using WildValue.
- 7e34484: radarr: Strengthen types using WildValue.
- c8750e5: raygun: Strengthen types using WildValue.
- e68be37: reviewboard: Strengthen types using WildValue.
- d8a467e: semaphore: Strengthen types using WildValue.
- 2dab5cb: solano: Strengthen types using WildValue.
- 31c7f82: sonarqube: Strengthen types using WildValue.
- 146dd68: sonarr: Strengthen types using WildValue.
- 6a22c62: splunk: Strengthen types using WildValue.
- 0052ad5: statuspage: Strengthen types using WildValue.
- 9b7a91b: stripe: Strengthen types using WildValue.
- c5579cf: teamcity: Strengthen types using WildValue.
- b46d96a: thinkst: Strengthen types using WildValue.
- 6ac9b63: updown: Strengthen types using WildValue.
- eca9088: uptimerobot: Strengthen types using WildValue.
- e9e1c1d: zapier: Strengthen types using WildValue.
- 76b4945: zabbix: Strengthen types using WildValue.
This pull request improved the parsing of the incoming webhook payload for the Slack integration. The parity between Zulip's notifications and the corresponding Slack messages was also improved.
- fd0b013: slack_incoming: Handle optional attachment fields aptly.
This pull request adds a new incoming webhook integration for Patreon. The integration parses the Patreon webhook's incoming payload to display notifications in Zulip. The fixtures used for testing are captured directly from Patreon webhooks.
- integrations: Add Patreon webhook integration.
This pull request adds support for Grafana's new alerting system. The proposed integration update wouldn't require explicit configuration and would support both old and new notifications parallelly. Internally, we differentiate between versions based on the structure of the incoming payload.
- grafana: Strengthen types using WildValue.
- grafana: Support notifications from Grafana Alerting.
This pull request rewrites the CircleCI integration to parse the new incoming webhook structure. Parity has been maintained between the old and the new notification formats. The tests are also rewritten for the new format.
- circleci: Rewrite integration to support the new webhook format.
This pull request concludes the migration of the remaining webhook integrations to use the WildValue system for strict-type checking of the incoming webhook payloads.
- wekan: Strengthen types using WildValue.
- jotform: Strengthen types using WildValue.
- insping: Strengthen types using WildValue.
- ifttt: Strengthen types using WildValue.
- homeassistant: Strengthen types using WildVale.
- hellosign: Strengthen types using WildValue.
- harbor: Strengthen types using WildValue.
- groove: Strengthen types using WildValue.
- greenhouse: Strengthen types using WildValue.
- gosquared: Strengthen types using WildValue.
- gocd: Strengthen types using WildValue.
- intercom: Strengthen types using WildValue.
- jira: Strengthen types using WildValue.
- opbeat: Strengthen types using WildValue.
- papertrail: Strengthen types using WildValue.
The server project still has multiple open issues, along with enhancements/follow-ups to the work I have done. I would continue my work to get my open pull requests merged, and help maintain the integrations system of the project.
I would like to sincerely thank my mentor, the organization administrators, the Zulip community, and Google for giving me an enriching experience this summer. I am extremely grateful for the opportunity to participate in this program for the second time and for all the support I have received throughout my project.
The collaborative nature of the Zulip community has been immensely helpful to my work this summer. I am grateful for all the consistent feedback I have received for every discussion I initiated.
Contributing to Zulip continues to be an enriching experience for me. I intend on continuing my contributions to the projects under the Zulip organization and to remain an active member.