Page MenuHomePhabricator

(Proposal) A Bot for Wikimedia Zulipchat
Closed, DeclinedPublic

Description

Profile Information

Name: Lalit Suthar
IRC Nick: lalit97
Email: sutharlalit.97@gmail.com
Github: https://github.com/lalit97
Twitter: https://twitter.com/lalit_97
Location: India
Working hours: 11 AM to 6 PM and 10 PM to 12 AM (UTC +5:30)

Synopsis

Short summary describing your project and how it will benefit Wikimedia projects

Wikimedia has a large pool of developers and contributors. Every year lots of new contributors join Wikimedia and they find their way to Zulip chat as I myself did. Most frequently, newcomers ask for contributing guidelines or how to get started. Org admins have to reply statically with the same messages.

A simple solution is to build a Bot which can help them with the general links which contain Contribution guidelines, Good first bugs etc. with the help of a Bot a lot of questions will be pre answered so newcomers will not hesitate to ask queries as well. This is how It will get new users unblocked quickly and org admins work will get simpler. Also it will save lots of human intervention time.

Possible Mentor(s)

@Pavithraes, @Medhabansal, @D3r1ck01

Have you contacted your mentors already?

Yes I have contacted them on Phabricator and Zulip.

Deliverables

Zulip Welcome bot will perform the following tasks at the end.

  • Customizable welcome message which contains some general information for new members which can help them in starting to contribute. It will be customizable by org admins using the bot interface.
  • Suggest relevant people/mentors for queries posted.
  • Support searching faqs.
  • Moving users to specific streams by detecting the intent using fuzzy search.(Phase 2)
  • Bridge communication (Phase 3)

Implementation Details

Workflow

Screen Shot 2020-03-29 at 2.38.37 PM.png (244×732 px, 31 KB)

(Img: Basic workflow of Bot)

Features
  • Welcome message on Sign up
    • A welcome message from bot to new users. It will direct them to information on contributing and getting started.
    • General links to help them get started with contributing. Suggest Good first bugs.
    • Bot will suggest a format to new users for introducing themselves to get started.
    • Documentation of the bot and it’s other useful commands like search-faqs
    • This welcome message will be customizable by org admins. They can configure it using the bot itself.

Screen Shot 2020-03-29 at 5.59.36 PM.png (280×843 px, 80 KB)

(Img: screenshot of welcome message from my zulip bot)

  • Smart Suggestions & Customizations (Phase 2)
    • Moving users to specific streams by detecting the intent using fuzzy search.
    • Bot will respond to the Introduction message from the user with some helpful suggestions. For example if they mention Python as a skill, it will suggest good first bugs to solve in python and Projects to contribute where python is used.
    • We will also ensure if a user has mistyped a word (like librarey instead of library), we will be able to match their query for the related project. we will use fuzzy search to match the user text to our relevant projects/streams list.
    • Bot can also respond to learn-more commands, where you can insert any topic name (i.e. GSoC/Outreachy) or project name for which information will be provided if available.
    • Users can search faq with a bot command.
    • Users can search documentation of any project with a bot command.
    • Customize the mapping for keywords which are extracted from the user message and their related project name.

Screen Shot 2020-03-29 at 7.00.23 PM.png (363×1 px, 68 KB)

(Img: workflow diagram)

Screen Shot 2020-03-29 at 11.42.19 PM.png (381×578 px, 53 KB)

(Img: Low level algorithm for “reply to introduction”)

Screen Shot 2020-03-29 at 5.59.16 PM.png (201×806 px, 57 KB)

(Img: screenshot from my zulip bot)

  • Bridge Communications (Phase 3)

This feature is a way to connect the community on Zulip to the broader community on IRC, especially for technical support. The bot would basically relay communication from a Zulip stream to an IRC channel, meaning any messages posted on IRC will be displayed on Zulip and any replies on Zulip will be posted on IRC.

One simple use case for this when a new member is stuck while setting up the project. In this case we can direct the message to a special stream say ‘Technical Support’ stream on Zulip. All messages in this stream are shared on IRC, where many folks can help the member in project setup issues.


Example Chat:

Purpose : Helping in Project Setup related issues

Command: bot SetupIssue <ProjectName> <issue>

Expected Reply from Bot: You can connect to Samwalton9 for this issue. Also Moving this to ‘Technical Support’ stream. Hopefully you will get help soon :)


Technical details, Documentation, Testing and Deployment
  • The code will be hosted on Github. We will use fuzzy search, Levenshtein distance for matching user text to relevant projects/streams.
  • We will use python for implementing the bot. If customizations require a custom dashboard we’ll use Django to develop it.
  • If we get more time, we will start taking the feedback from users if Bot answers are helpful or not and based on that will improve the algorithm to answer. We can generate the training data for improving the bot using the existing welcome messages and their responses by bot.
  • Technical documentation for each feature and Unit tests for each module will be written using python's unit test library.
  • It will be deployed on Toolforge.
Some more examples of communication with Bot
Case 1

Purpose : Configuring/changing the welcome message. (will be done after authentication as only org-admins can do this)
Only org admins will be able to run this command. The list of org admin will be configurable by changing the plugin code.

Command: bot config welcome_message “new welcome message goes here”


Case 2

Purpose : Learn more about any topic

Command: bot learn-more <text>

Message: bot learn-more Proposal for Gsoc

Expected Reply from Bot: There you go Google Summer of Code/Participants


Case 3

Purpose : Search Frequently asked Questions

Command: bot :search-faqs <search query> or bot :search-faqs <project name> <search query>

bot :search-faqs Welcome to Wikimedia! Here are links which can help you get started.
bot :search-faqs wikidata Welcome to Wikimedia! Here are links which can help you get started.


Timeline

PeriodTask
May 4 to June 1(Community Bonding Period) Phase deciding period, where I will try to brainstorm and discuss which features should be prioritized. Will be planning all the implementation details of which libraries to be used for building the bot.
June 1 to June 7Setting up project and Zulip bot. Implementing Phase1 by sending Welcome messages for newly signed up users. Write test cases using unit test approach.
June 8 to June 14Deploy the version1 to follow Iterative development strategy. Finishing phase 1 feedback from mentors and completing functional testing. Make the welcome message customizable for each project/stream.
June 15 to June 21Code cleanup as per reviews ensuring code quality. Complete documentation up to phase I.
June 22 to June 28Start Working on Phase II. Smart Suggestions, Customizations & Search-faqs. Implement Smart Suggestions for projects and streams, based on user skill set and interest.
June 29 to July 3First Evaluations
July 4 to July 10Implement searching faqs from different Wikimedia FAQ pages. Implementing documentation search for any specific project asked in the user's search query. Implement customization of keywords and relevant project/stream suggestions.
July 11 to July 17Document all the commands of phase II. Write unit tests for each of them and submit code for review. Deploy all the features on Toolforge up to phase 2.
July 18 to July 26Start implementation for bridge communications. Furnish requirements about which Zulip stream and IRC channel need to be connected. Implement posting messages from IRC to Zulip.
July 27 - 31, 2020Second Evaluations
August 1 to August 7Implement posting messages back to IRC from Zulip. Write test cases for both the publisher and subscriber modules in this communication.
August 8 to August 14Deploy on Toolforge and get feedback from the community and users. Work on Performance improvements and finish end to end functional and unit testing. Code cleanup as per reviews before submitting for final evaluations.
August 15 to August 21Iron out features and fix bugs which are reported. Write Documentation for phase 3.
August 21 to August 24Fix remaining bugs if any. Complete Documentation.
August 31 to September 7Final Evaluations

Participation

  • I will use Github to version control my code. Each Phase will be a new branch, and will be deployed in an iterative cycle.
  • I will get feedback on code and functionality after each deliverable.
  • I will be active on Zulip to communicate with mentors.
  • I will talk to mentors on Zulip for any design decision, feature implementation, bug or code review discussion.
  • I will write blog posts regularly about my experience and learnings from this project on Medium (lalit suthar).

About Me

Your education (completed or in progress)

pursuing my B.Tech 4th year in Information Technology major at Government Engineering College Bikaner.

How did you hear about this program?

I have been contributing in open source from last year and I heard about the program from my seniors who also have been actively working on open source projects.

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

I will have my semester exams possibly in June (shifted due to Covoid-19) . I have no other time commitments during this summer. No vacation planned as well. I will be staying at home.

We advise all candidates eligible for Google Summer of Code and Outreachy to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)?

No, I am applying for Google Summer of Code only.

What does making this project happen mean to you?

Wikimedia is the world’s biggest information organizer and there are a lot of developers who want to contribute to Wikimedia. Creating a tool which will help developers in starting to contribute will be a great opportunity. Making this project would mean creating an interface between the outside dev world and mentors inside Wikimedia.

This project will help org-admins to be more productive, reduce noise in channels and help the developer community when they want to start contributing to a project. For new members, a user friendly bot can take a lot of burden and hesitation away. It will be helpful for everyone.

Past Experience

Skills
  • Language: Python
  • Frameworks: Django, ReactJs, Bootstrap
  • Web Technologies: Html, CSS, JavaScript
  • Version Control: Git
  • Database: Mysql, Sqlite
  • Libraries and Tools: Django Rest Framework, React-Redux, Celery, Redis, Selenium
Projects
  • Feedfetcher: News aggregator application, which collects summary of news from different categories from given RSS feed urls. It processes the RSS feeds asynchronously to get news content. Built using Python, Django, Django Rest framework & Celery.
  • Blog App: Simple blog application made using python, django.
  • Tic Tac Toe: Simple Tic-tac-toe game built using Vanilla Js.
  • College Website: Updated version of Govt. Engineering College Bikaner website using Reactjs.
Open source contributions
Problem Solving Profiles
Wikimedia Contributions
StatusPhabricator TicketTitlePull Request
MergedT239503Handle modification of application status from INVALID to anything else#429
OpenT212767Provide error message when navigating to Not Available resources#427
MergedT218857Add more links to activity feed#414
OpenT170113Add 'Back-to-top' button for partners list page#410
OpenT226369Add condition to check user is current coordinator#406
MergedT234551Show Error on 'Mark as Sent' page for automatic-send partners#405
MergedT193334Add placeholder text to Review filters#404
MergedT243746Add function to handle file name given as url#573354
MergedT243311Change 'VideoTrim Settings' position above the 'Step2'#569217
OpenT216400Allow wildcard project searches#15
OpenT216399Allow hashtag project searches#10
Microtasks carried out

Improve content design of Help:Toolforge/My_first_Pywikibot_tool

Any Other Info

Event Timeline

@lalit97 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!