Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
GSoC 22 Work Product

Google Summer of Code 2022 with Zulip - Work Product

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.

Project Description

Contributions

Merged Pull Requests

Integrations' Wildvalue migration (from the end)

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.

slack_incoming: Handle optional attachment fields aptly.

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.

Open Pull Requests

integrations: Add Patreon webhook integration.

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.

grafana: Support notifications from Grafana Alerting.

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.

circleci: Rewrite integration to support the new webhook format.

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.

Migrate remaining webhooks to use WildValue.

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.

Future Work

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.

Acknowledgements

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.

Post GSoC

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment