User:QEDK/GSoC 2020/Progress report

The last blog did not come with a progress report, so this blog post is meant to be a quick roundup of the work product before the project summary is published in the next week. It's a short list of all the functions achieved and how that matches our timeline:

  • goodbot - A chatbot for Wikimedia Zulipchat
    1. Built-in config file parsing
    2. Real-time replying (always-on) with Python Zulip API
    3. Template-based replying with configurable JSON files
    4. Automatic self-subscription to all streams
    5. Subscription of other users based on triggers
    6. Replying via PM or streams
    7. Randomized greetings with pings
    8. Fuzzy-matching FAQs
    9. Search Wikipedia and StackOverflow
    10. Quick-start/GSoC/GSoD instructions
    11. Project information available via bot
    12. Updating configuration via Zulip - botadmins, orgadmins, links to edition-based pages.
    13. Provide contact details of org-admins and methods to notify them.
  • ircbot - Bridging #technical-support on Zulip to #wikimedia-tech on IRC
    1. Built-in config file parsing
    2. Reconnection until connection
    3. Reconnection on disconnect
    4. freenode authentication
    5. Keep-alive connection
    6. CTCP and DCC support
    7. Private and public messaging support
    8. Reply formatting
  • parsebot - Dynamically update project lists
    1. Automatically parse pages in configuration
    2. Push changes upstream when changes are made
    3. Pull request creation
    4. Self-cleanup after process complete
  • Web app - Light-weight Flask app to provide a landing page and webhook for goodbot
    1. Process incoming webhook and trigger deployment
    2. Verification of incoming webhooks with pre-defined secret
  • Linting and testing - using flake8 and nose respectively
    1. CodeQL and Code scanning with GitHub Actions
    2. Travis-CI for lint check and integration testing in a staged environment (CI)
    3. Outgoing webhooks after Travis-CI checks (CD)

That meets all of the items in our agenda and 2 points from our stretch goals (and another is eliminated due to other circumstances).

Unfortunately, that also indicates that most of my work with Wikimedia is completed and while I will remain as a volunteer contributor, I hope to contribute to Wikimedia again in an official capacity some day. I'd like to thank my mentors and Srishti for having stellar patience with my application questions and their feedback during the whole process.


  • Want to be a new developer? See New Developers
  • Want to interact with people of the Wikimedia Outreach community? Come visit us at Zulipchat.
  • Want to begin learning Rust? Read The Book.

Do let me know in the comments if you have any suggestions! Next time, a project conclusion. 🎉