Name : Sanyam Jain
IRC nickname : hesoyam
Email : firstname.lastname@example.org
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)
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.
Have you contacted your mentors already ?
Yes, I have contacted the mentors.
Proposed Structure :
- 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.
- 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.)
- 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.
- 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)
- 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
- Statistics Phase - II
- Bridging IRC and Zulip Stream using irc mirror service.
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
- 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.
- 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.
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.
I have worked on some bug fixes and features on Wikimedia Hashtags Tool :
- (merged) Feature : T239598
- (merged) Bug Fix : T207846
- (merged) Bug Fix : T242130
- (merged) Fix : pull request
I have worked on some bug fixes on ISA tool :
- (merged) pull request (WikiContrib)
- (merged) pull request (Afdstats)
- (merged) pull request (External Links)
- (review) pull request (Wikipedia Library Card Platform)
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.
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.