Skip to content

Instantly share code, notes, and snippets.

@rheaparekh
Last active February 9, 2019 20:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rheaparekh/6ffd73cf2a2dcd816a6a5058c18edc06 to your computer and use it in GitHub Desktop.
Save rheaparekh/6ffd73cf2a2dcd816a6a5058c18edc06 to your computer and use it in GitHub Desktop.

Google summer of Code 2018: Zulip

Rhea Parekh | Github | Email

Summary

Google summer of Code has been a great learning experience for me and has helped me in developing my programming skills. While exploring and learning the different areas of Zulip, I also learned how to maintain the quality of the code and how to structure it properly. I would like to thank my mentor Neil Pilgrim for his constant guidance and code reviews, and the entire zulip community for timely feedback and help. I would want to continue contributing to Zulip in future and give back to the community that has taught me so much.

Project

For task management, I used Trello which helped me to be efficient. Here is the link to my trello board. I have broadly covered the following areas during the course of this project:

1. Widgets, slash commands and zgrams:

I worked on updating the styling and added new features in poll and tictactoe widget. I also worked on adding a new widget - todo widget. I added /settings slash command, and I have open PRs on the slash commands /mute_topic and /subscribe. I have an open PR on the zgram_box prototype, where the zgrams are moved above the compose box.

2. Import / Export infrastructure:

I worked on increasing the test coverage of the this tool and added import/export support for all the necessary tables which hadn't yet been covered like RealmAuditLog, Huddles etc. Additionally I worked adding batchwise processing of messages in slack import. I also create a new module import_util which contains the common import functions.

3. Gitter import:

I created the gitter import script which supports the export of channels, users, messages and avatars from gitter along with tests, documentation of the script. I also added a management command and batchwise processing of messages in this script.

4. Zulip - IRC bridge via Matrix integration:

I initially worked on testing the current Zulip - IRC bridge in python-zulip-api and also tested the Zulip - IRC bridge via Matrix integration. With that, I worked on this bridge script by adding error handling and proper methods of matrix integration after looking at the Matrix documentation. Along with this, I also updated the documentation.

5. Trivia bot:

I worked on adding tests and new features to the trivia bot and tested it.

6. Miscellaneous.

With the above, I also worked on minor issues in outgoing webhooks and upgraded mypy to the version 0.620. I also did a few code reviews.

Merged PRs

Total number of commits merged: 26 + 104 = 130

Application Review Period (March 27, 2018 - April 23, 2018) and Community Bonding Period (April 23, 2018 - May 14, 2018)

number of commits: 26

zulip/zulip

  • #8816: slack importer: support reactions.
  • #8956: docs: Update import data from slack doc.
  • #8943: [WIP] Import script: Fixes.
  • #9035: slack import: Support Custom profile fields.
  • #9053: scripts: Remove the depreciated script 'postgres-reset-sequences'.
  • #8992: Import: Add subdomain in the import script.
  • #9110: Slack import: update docs and add a comment.
  • #9097: Slack importer threading.
  • #9016: Import script: Fix bugs.
  • #9282: Slack import: Fixes.

Coding Period (May 14, 2018 - August 10, 2018) Total number of commits: 104

zulip/zulip

Number of commits: 91

  • #9462: docs: Add documentation for outgoing webhooks.
  • #9507: export: Support export of Reactions and Custom emojis.
  • #9564: import: Clean the management command.
  • #9582: tests: Increase test coverage for export.py.
  • #9491: Matrix: Add integration documentation.
  • #9583: Matrix: update the integration documentation.
  • #9603: Import docs: Add macro for import-login section.
  • #9639: slack import: Message formatting.
  • #9758: zcommands: Add zcommand module and separate test module.
  • #9788: zcommand: Strip the slash in the server side.
  • #9722: slack import: Import skype and phone data of users.
  • #9852: widgets: Add basic styling for tictactoe widget.
  • #9723: import: Process messages batchwise in slack import.
  • #9833: widgets: Polish poll widget.
  • #9874: widgets: Add todo widget.
  • #9884: import: Create subscription_created events in RealmAuditLog.
  • #9929: tests: Refactor test_import_realm for clarity.
  • #9547: Import: Support import of huddles.
  • #9943: tests: Refactor tests for import of huddles and fix mypy bug.
  • #9963: import: Map user IDs for custom profile field of type 'USER'.
  • #9569: import: Import from gitter.
  • #9933: export/import: Cover all Zulip tables that should be exported/imported.
  • #10025: import: Fix BotStorageData and BotConfigData import.
  • #9994: outgoing webhooks: Fix sample timestamp, service_id and token for slack outgoing webhooks.
  • #10073: import: Add get_db_table function.
  • #10074: tools: Upgrade mypy to 0.620.
  • #10096: docs: Update import-from-gitter doc.
  • #10122: import: Create /import_data directory.
  • #10147: [WIP] import: Create import_util for common functions.
  • #10258: import: Fix rendered_content in imported messages.
  • #9814: outgoing webhooks: Warn user that PMs are not supported in Slack-format webhook.
  • #10272: slack import: Add files keyword support for uploads and add last_modified value in emoji records.

zulip/python-zulip-api

Number of commits: 13

  • #383: Matrix-Zulip bridge.
  • #396: Matrix: Naming convention changes.
  • #419: bots: Add tests for trivia_quiz bot.
  • #421: bots: Add proper error handling for trivia bot.
  • #422: bots: Improve response at 3 wrong answers in trivia bot.
  • #419: bots: Add tests for trivia_quiz bot.
  • #436: Trivia bot: cleanup.

Currently Open PRs

zulip/zulip

  • #9283: slack import: Improve support of Slack threads and improve file comments.
  • #9754: slash commands: Create /mute_topic.
  • #9775: slash commands: Add /subscribe command (via zcommand).
  • #9545: Import: system bots should not be imported again if they already exist.
  • #10203: [do not merge] zgram_box: Proof of concept.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment