===Profile===
**Name** : Sanyam Jain
**IRC nickname** : sanyamhesoyam
**Email** : sanyam.inbox@gmail.com
**Github** : https://github.com/sanyam-git
**Wikipedia**Meta Wiki** : https://enmeta.wikipmedia.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, SMs - [ @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.
2. **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 [[ https://zulipchat.com/api/deploying-bots | zulip botserver ]] framework with some basic functionality and limited data storage,but I would prefer to built one from scratch, as this doesn’t seems to be flexible and sufficient enough forto fulfill our requirements.)
3. **Dashboard** : The dashboard would be an interactive frontend to the serverbackend 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 [[ https://zulipchat.com/api/real-time-events | 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 (as shown in the mockup below) through the dashboard. The bot will parse the message for keywords and respond accordingly. ( mockup attached below ). Mockup:It would use a nlp service/library to ensure that the users gets the most precise response to the query from available options.
|Keywords|Response|- Statistics Page : There will be representation of various conversation parameters, such as most used keywords, messages which were not replied by bot and feedback.
|`js` `css` `javascript` `frontend` `html` `nodejs`|You can start contributing to frontend tasks at [[ https://phabricator.wikimedia.org/tag/css/ | CSS ]] and [[ https://phabricator.wikimedia.org/tag/javascript/ | JS ]].|- Bridging IRC channel and Zulip Stream : Zulip provides an [[ https://zulipchat.com/integrations/doc/irc | integration service ]] to mirror an IRC channel in Zulip stream. The code is available on [[ https://github.com/zulip/python-zulip-api/tree/master/zulip/integrations/bridge_with_irc | github ]]. I would integrate it with the bot to provide the service.
|`gsoc` `gsoc-2020`|*brief info about GSoC*|
- Statistics Page : There will be representation of various conversation parameters,
I would collect feedback from developers on zulipchat about the features they would like to have in the bot. such as most used keywordsThis would help to plan and implement the features more effectively, messages with no bot reply and feedback.
- Bridging IRC channel and Zulip Stream (WIP)and a better UX.
===Timeline ( May 4 2020 - September 8 2020)===
**Extended Features (if times permits) :**
- Processing the messages with no reply from bot through a python nlp library or API, to get response. This will make the conversation with the bot more human like.
Any other proposed features or changes in existing are welcome to be discussed.
===Timeline ( April 27 2020 - August 25 2020)===
>April 27>May 4
- Celebrations - I
>April 28May 5 to May 1831
- 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.
>May 19June 1 to May 29June 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 tool forge after completion of theis stage.
>May 30June 11 to June 824
- Adding keyword and response functionality (in backend).
>June 9 25 to June 1428
- Writing tests for added functionalities of bot server.
>June 1529 to June 19ly 3
- Updating documentation for added functionalities.
- Phase - I Evaluation
>June 20 July 4 to June 30ly 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 721
- Statistics Paghase - I
>July 822 to July 1226
- Writing tests for added functionalities.
>July 1327 to July 1731
- Updating documentation for dashboard functionalities.
- Phase - II Evaluation
>July 18August 1 to July 28August 11
- Statistics Paghase - II
- (WIP) Bridging IRC and Zulip Stream using [[ https://zulipchat.com/integrations/doc/irc | irc mirror service ]].
>July 29August 12 to July 31August 14
- Writing Tests for added functionalities..
- Updating Documentation.
>August 1 15 to August 923
- Buffer for any other remaining/extra tasks and bug fixes.
>August 1024 to August 1731
- Final feedback.
- Final bug fixes, documentation amends and testing.
- Phase - III Evaluation
- Project submission
>August 25>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 thethis 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 [[ https://meta.wikimedia.org/wiki/Hashtags | Wikimedia Hashtags Tool ]] :
- (merged) Feature : T239598
- (merged) Bug Fix : T207846
- (merged) Bug Fix : T242130
I have worked on some bug fixes on [[ https://commons.wikimedia.org/wiki/Commons:ISA_Tool | ISA tool ]] :
- (merged) Bug Fix : T246885
- (review) Bug Fix : T231751
- (review- (merged) Bug Fix : [[ https://gerrit.wikimedia.org/r/#/c/labs/tools/Isa/+/579609/ | patch ]]
I am an active contributor on [[ https://en.wikipedia.org/wiki/User:Sanyam.wikime | 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 pages reviewing. I am well aware of the policies and working of Wikimedia Foundation.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===Prototype===
**Note** : ThI have built a simple proposal ends above this line.totype of the bot, The content below will not be part of the proposal.
{icon check-square-o} Shared the proposal's google doc link with mentors for feedback and reviewlive at `@wikibot` on [[ https://wikimedia.zulipchat.com | zulipchat ]].
**Todo** :I have shared the link of working dashboard prototype with my mentors.
- Upload the working bot prototype.
{F31717083}