Sysbot - GSoC 2018 Final Work Submission
Student: Sombuddha Chakravarty
About
Systers being a vibrant open source community, participates in a lot of major
open source programs throughout the year, like - Outreachy,RGSoC, GCI, GSoC etc.
These programs go on round the year and often even overlap.
To maintain the quality, the mentors, admins and students try to clean the repositories and
also at the same time aid the newcomers to get started, and get comfortable with the work flow.
This becomes really hectic specially when transitioning fom one program to another.
Hence came the idea of Sysbot, which is a Slack-bot integrated with Github to streamline open source workflow.
A bot which was integrated with Slack and Github and could automate and pace up a lot of the work, and reduce load on mentors.
It could also enforce certain essential practices for open-source, like PRs being sent to unreviewed issues,
or not being linked to issues at all, etc.
Team
Admin: Prachi Manchanda
Mentors: Ramit Sawhney, Sarah Masud, Akshita Aggarwal
Tech Stack
Language: Python 2.7
Libraries and Framework: Flask, Unittest (for testing), NLTK
APIs: Slack Events API, LUIS API (For intent based Classification), Github API
Timeline
Link to approximate timeline
Work Done
The following is a list of PRs sent by me during he GSoC period:
- Link : Added a gitignore file with standard template for Python
- Link : Added text file with help links
- Link : Commonly used help phrases added
- Link : Added requirements file for creating virtual environment
- Link : Credential files added and gitignore updated
- Link : Add not approved label to new issues
- Link : Added a function to find the stems of words in a sentence
- Link : Added code style changes to follow Python standards
- Link : Added first timer welcome message propert
- Link : Added message file and initial message
- Link : Added function to recognize if a comment is made by a mentor or not
- Link : Added feature to get invited to newcomers team via slack
- Link : Added feature to add approve labels to issues via github comments
- Link : Added feature to approve tags from slack
- Link : Added feature to label newly opened PRs
- Link : Added feature to assign issue from Slack
- Link : Added feature to assign issues from Github comments
- Link : Added feature to claim issues from github
- Link : Added feature to claim issues from Slack
- Link : Added feature to stop multiple claims of an issue
- Link : Added feature for checking coveralls comment
- Link : Minor changes made in code for errors found during testing
- Link : Added design doc file for template matching of issues
- Link : Added feature for opening issues via Slack. Markdown not supported
- Link : Added feature for comments to be only visible to the commentor
- Link : Added check for author of issue against issue approval.
- Link : Added features for unclaiming and unassigning issues
- Link : Added patch for claim command to accept github username from Slack profile
- Link : Help slash command
- Link : Check approval label
- Link : Added feature to check if PRs are sent to unapproved issues
- Link : Added feature to check for issue template mismatch
- Link : Added feature to collect list of PRs which have not been reviewed
- Link : Solve markdown problem with issue opening from Slack
- Link : Refactored code to clean up repository
- Link : Patch for functions
- Link : Added travis config file
- Link : Added unit tests. Coverage 49%.
- Link : Added feature to mention slack teams
- Link : Auto-deploy and selective testing script
- Link : Exculded some functions from coverage
- Link : Answer with projects list
- Link : Feature to answer FAQs
- Link : Enhance template check
- Link : Feature: Check if PR template has been followed
- Link : Made changes for auto-deployment and fixed reply feature
- Link : Fixes issue with approve command
- Link : Tests added for 60 percent coverage
- Link : Tests added to cover 90% of code
- Link : Collected, changed and curated event data
- Link : Added feature to mock event delivery
- Link : Fixed overlapping language case
- Link : Feature to add multiple labels using single command with comma separated label names
- Link : Added feature to automatically change PR labels based on reviews
- Link : Added feature to view issue content on Slack
- Link : Updated help message for /sysbot_help command
- Link : Added encrypted keys and ways to extract them
- Link : Added a test dictionary for sample workspace
- Link : Added feature to label issues from Slack. Added tests
- Link : Approve command versatile
- Link : Added minor fixes to pass tests and change PR template
Documentation Added
The following are all docs made by me during the GSoC period:
- Link : Readme having all information on setting up, bot features and getting started.
- Link : Guide to handle keys and extract tokens.
- Link : Design for template matching feature
- Link : Small explaination on the NLP concepts used.
- Link : Design doc for answering questions.
- Link : Function descriptions of each SLack and Github functions written in code.
- Link : Commit message style guide.
- Link : Data collected for bot.
Reports( Wiki and Blogs)
The following are some reports and blogs made by me during the GSoC period:
- Link : Wiki report.
- Link : Journey to GSoC’18
- Link : Community bonding Period
- Link : GSoC’18 First Week of Coding Phase
- Link : GSoC’18 — Second Week of Coding Phase
- Link : GSoC’18 — Third Week of Coding Phase
- Link : GSoC’18 — 4th Week of Coding Phase
- Link : GSoC’18 — 5th Week of Coding Phase
- Link : GSoC’18 — 6th Week of Coding Phase
- Link : GSoC’18 — 7th Week of Coding Phase
- Link : GSoC’18 — 8th Week of Coding Phase
- Link : GSoC’18 — 9th Week of Coding Phase
- Link : GSoC’18 — 10th Week of Coding Phase
- Link : GSoC’18 — 11th Week of Coding Phase
- Link : GSoC’18 — Last Week of Coding Phase
Final Work Demo
Video: Link
Demo Slides: Link