Page MenuHomePhabricator

Proposal : GSoC 2020 | Develop a Wikimedia Zulipchat bot to assist contributors
Closed, DeclinedPublic

Description

Profile

Name : Sanyam Jain
IRC nickname : hesoyam
Email : sanyam.inbox@gmail.com
Github : https://github.com/sanyam-git
Meta Wiki : https://meta.wikimedia.org/wiki/User:Sanyam.wikime
Hackerrank : https://www.hackerrank.com/profile/sanyam_hack
Location : India
Typical working hours : 1000 - 2200 hrs. (UTC +5:30)

Synopsis

Wikimedia’s zulip group chat was the first place where I interacted with the community and got all the resources and help I needed to start contributing. New developers join the chat almost everyday and seek answers to the most basic questions to kickstart the journey. These questions cost space and time on the group chat to answer. The bot can solve the problem by immediately replying to these queries in an extensive manner, saving time for both the seeker and responder. The bot can also provide various factual details (project lists, contacts, resource URLs, streams etc.). This will provide the other participants ample time to answer other specific queries and reduce repetitive messaging on group chat. The administrator can always add/update more faqs and responses to the bot, and can manually answer a redirected query.

Mentors
@Pavithraes, @Medhabansal, @D3r1ck01

Have you contacted your mentors already ?
Yes, I have contacted the mentors.

Proposed Structure :

  1. Bot : Zulip provides a direct option to set up the bot frontend on the platform, we would use the bot with outgoing webhooks and provide the endpoint URL.
  1. Bot Server : The server would be a flask backend which would process the JSON POST requests from zulip and return the response in JSON format. (Note : Zulip also provides zulip botserver framework with some basic functionality and limited data storage,but I would prefer to build one from scratch, as this doesn’t seem to be flexible and sufficient enough to fulfill our requirements.)
  1. Dashboard : The dashboard would be an interactive frontend to the backend where the admins can add/update questions (keywords and faqs) / user messages and respective responses. It would also provide an analysis of the bot’s conversation with users, to aid further improvement.

Deliverables

  • All the messages can be updated by admins through the dashboard. I feel the need for a dashboard as it will make managing the bot simpler and interactive (no need to hardcode the messages).
  • Every new contributor joining the group will be greeted with a welcome message accompanied with a how-to-use the bot guide. (zulip’s real time events API)
  • A default message to reply when the bot doesn’t have a predefined response to a user message. (can be turned off to no reply)
  • Users can provide feedback through the bot. The feedback will be stored and can be seen by administrators.
  • Users would be subscribed automatically to streams based on the responses provided by them.
  • Keywords/Phrases/Queries and Responses : Administrators can define keywords and their respective response through the dashboard. The bot will parse the message for keywords and respond accordingly (mockup attached below). It would use a nlp service/library to ensure that the users get the most precise response to the query from available options.
  • Statistics Page : There will be representation of various conversation parameters, such as most used keywords, messages which were not replied by bot and feedback.
  • Bridging IRC channel and Zulip Stream : Zulip provides an integration service to mirror an IRC channel in Zulip stream. The code is available on github. I would integrate it with the bot to provide the service.

I would collect feedback from developers on zulipchat about the features they would like to have in the bot. This would help to plan and implement the features more effectively, and a better UX.

Timeline ( May 4 2020 - September 8 2020)

May 4

  • Celebrations - I

May 5 to May 31

  • Community Bonding Period
  • Taking feedback from developers in group chat and analysing previous messages.
  • Discussing and finalising structure and functionalities with mentors to get an early head start.

June 1 to June 10

  • Setting up the repository and phabricator workboard.
  • Adding functionality for welcome messages, default replies, automatic stream subscription, feedback system and other basic communication.
  • Plan to set up the tool on toolforge after completion of this stage.

June 11 to June 24

  • Adding keyword and response functionality (in backend).

June 25 to June 28

  • Writing tests for added functionalities of bot server.

June 29 to July 3

  • Updating documentation for added functionalities.
  • Phase - I Evaluation

July 4 to July 16

  • Setting up the dashboard.
  • Authentication functionality for admins to access the dashboard.
  • Adding editing message functionality for welcome, default and other standard messages.
  • Adding keyword and response functionality.

July 17 to July 21

  • Statistics Phase - I

July 22 to July 26

  • Writing tests for added functionalities.

July 27 to July 31

  • Updating documentation for dashboard functionalities.
  • Phase - II Evaluation

August 1 to August 11

August 12 to August 14

  • Writing Tests for added functionalities..
  • Updating Documentation.

August 15 to August 23

  • Buffer for any other remaining/extra tasks and bug fixes.

August 24 to August 31

  • Final feedback.
  • Final bug fixes, documentation amends and testing.
  • Phase - III Evaluation
  • Project submission

September 8

  • Celebrations - II

As the programme timeline is shifted and community bonding period extended, I would try to utilise this to get an early start during the community bonding period after discussion with my mentors. This would provide me with ample time to work on adding any unplanned features.

Participation

  • I would be available on email and IRC during the working hours, and on email at all times.
  • I would set up the project repository on github and maintain a master and a development branch.
  • I would use phabricator to track issues and progress of the project.
  • I would discuss and plan the structure and major functionalities of the tool with my mentor beforehand during the community bonding period.
  • I plan to write my experience as a blog (tracking the progress) on metaWiki.

About Me

Your education (completed or in progress)

I am currently pursuing B.E.(Hons.) in Electrical and Electronics Engineering from Birla Institute of Technology and Science, Pilani.

How did you hear about this program?

I came to know about this programme from my college seniors and explored the details through numerous participant’s blogs on the internet.

Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?

My university will observe summer break from May 15 - August 2, so I will be able to devote ample time for the project development. Even after the vacation, I will be able to devote 5-6 hours daily in early August due to absence of any evaluative components.

What does making this project happen mean to you?

When I first discovered the anyone can contribute anywhere principle of Wikipedia, I was awe-struck. I started contributing to English Wikipedia as a hobby and learnt a lot about the technicalities of contribution. So, when I came to know about GSoC, I searched for the Wikimedia Foundation and started researching the previous projects. I came across various projects and contributed to few of them also. One of the reasons I want to pursue this project is that this would be a part of an organization and community which provides free knowledge to billions of people around the world for free.
The reason for my interest in this specific task is the satisfaction I get in automating tasks. The end product of this project would assist contributors in upcoming years. This project would enhance my technical and communication skills and provide great experience through working in an open-source environment.

Past Experience

I have been working on web development and problem solving for over a year and half. I work mostly with Python (Django and Flask)(selenium for web scraping), Javascript , SQL, HTML/CSS and C (for problem solving).

I have worked on some bug fixes and features on Wikimedia Hashtags Tool :

I have worked on some bug fixes on ISA tool :

I am an active contributor on English Wikipedia. I am an extended confirmed user, pending changes reviewer and rollbacker on English Wikipedia. My contributions are mainly related to updating/checking factual details, counter vandalism and new page reviewing. I am well aware of the policies and working of Wikimedia Foundation.

Prototype

I have built a simple prototype of the bot, at @wikibot on zulipchat.

I have shared the link of the working dashboard prototype with my mentors.

dashboard_prototype.png (897×1 px, 122 KB)

Additional Info

Detailed plan : github
Screenshots : github

main_chart.jpg (2×3 px, 318 KB)

language-algo .jpg (1×2 px, 371 KB)

Event Timeline

Sanyam.wikime renamed this task from (WIP)(Proposal) GSoC 2020 | wikimedia-zulip bot to Proposal : GSoC 2020 | Develop a Wikimedia Zulipchat bot to assist contributors.Mar 31 2020, 1:39 PM
Sanyam.wikime updated the task description. (Show Details)

@Pavithraes @Medhabansal @D3r1ck01
I have made significant improvements in the prototype over the time.
I have outlined all the main points in the summary. The bot is live on zulip as @wikibot and bot dashboard can also be accessed at previously shared link.
It would be great if you can look through the summary and bot, as per your convenience . I would appreciate your feedback. Thanks :)

summary : https://gist.github.com/sanyam-git/d17eb29dcbf899c23787c3c81e0b2f79
use bot from terminal : https://gist.github.com/sanyam-git/d17eb29dcbf899c23787c3c81e0b2f79#file-connect-py
dashboard link : shared with mentors on zulip

@Sanyam.wikime We are sorry to say that we could not allocate a slot for you this time. Please do not consider the rejection to be an assessment of your proposal. We received over 100 quality applications, and we could only accept 14 students. We were not able to give all applicants a slot that would have deserved one, and these were some very tough decisions to make. Please know that you are still a valued member of our community and we by no means want to exclude you. Many students who we did not accept in 2019 have become Wikimedia maintainers, contractors and even GSoC students and mentors this year!

If you would like a de-brief on why your proposal was not accepted, please let me know as a reply to this comment or on the ‘Feeback on Proposals’ topic of the Zulip stream #gsoc20-outreachy20. I will respond to you within a week or so. :)

Your ideas and contributions to our projects are still welcome! As a next step, you could consider finishing up any pending pull requests or inform us that someone has to take them over. Here is the recommended place for you to get started as a newcomer: https://www.mediawiki.org/wiki/New_Developers.

If you would still be eligible for GSoC next year, we look forward to your participation!

@Pavithraes A gentle reminder, can I get a debrief on the rejection of the proposal. It would be of great help for improving on those points. Thanks.