Sysbot - GSoC 2018 Final Work Submission

Student: Sombuddha Chakravarty


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.


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


Link to approximate timeline

Work Done

The following is a list of PRs sent by me during he GSoC period:

  1. Link : Added a gitignore file with standard template for Python
  2. Link : Added text file with help links
  3. Link : Commonly used help phrases added
  4. Link : Added requirements file for creating virtual environment
  5. Link : Credential files added and gitignore updated
  6. Link : Add not approved label to new issues
  7. Link : Added a function to find the stems of words in a sentence
  8. Link : Added code style changes to follow Python standards
  9. Link : Added first timer welcome message propert
  10. Link : Added message file and initial message
  11. Link : Added function to recognize if a comment is made by a mentor or not
  12. Link : Added feature to get invited to newcomers team via slack
  13. Link : Added feature to add approve labels to issues via github comments
  14. Link : Added feature to approve tags from slack
  15. Link : Added feature to label newly opened PRs
  16. Link : Added feature to assign issue from Slack
  17. Link : Added feature to assign issues from Github comments
  18. Link : Added feature to claim issues from github
  19. Link : Added feature to claim issues from Slack
  20. Link : Added feature to stop multiple claims of an issue
  21. Link : Added feature for checking coveralls comment
  22. Link : Minor changes made in code for errors found during testing
  23. Link : Added design doc file for template matching of issues
  24. Link : Added feature for opening issues via Slack. Markdown not supported
  25. Link : Added feature for comments to be only visible to the commentor
  26. Link : Added check for author of issue against issue approval.
  27. Link : Added features for unclaiming and unassigning issues
  28. Link : Added patch for claim command to accept github username from Slack profile
  29. Link : Help slash command
  30. Link : Check approval label
  31. Link : Added feature to check if PRs are sent to unapproved issues
  32. Link : Added feature to check for issue template mismatch
  33. Link : Added feature to collect list of PRs which have not been reviewed
  34. Link : Solve markdown problem with issue opening from Slack
  35. Link : Refactored code to clean up repository
  36. Link : Patch for functions
  37. Link : Added travis config file
  38. Link : Added unit tests. Coverage 49%.
  39. Link : Added feature to mention slack teams
  40. Link : Auto-deploy and selective testing script
  41. Link : Exculded some functions from coverage
  42. Link : Answer with projects list
  43. Link : Feature to answer FAQs
  44. Link : Enhance template check
  45. Link : Feature: Check if PR template has been followed
  46. Link : Made changes for auto-deployment and fixed reply feature
  47. Link : Fixes issue with approve command
  48. Link : Tests added for 60 percent coverage
  49. Link : Tests added to cover 90% of code
  50. Link : Collected, changed and curated event data
  51. Link : Added feature to mock event delivery
  52. Link : Fixed overlapping language case
  53. Link : Feature to add multiple labels using single command with comma separated label names
  54. Link : Added feature to automatically change PR labels based on reviews
  55. Link : Added feature to view issue content on Slack
  56. Link : Updated help message for /sysbot_help command
  57. Link : Added encrypted keys and ways to extract them
  58. Link : Added a test dictionary for sample workspace
  59. Link : Added feature to label issues from Slack. Added tests
  60. Link : Approve command versatile
  61. 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:

  1. Link : Readme having all information on setting up, bot features and getting started.
  2. Link : Guide to handle keys and extract tokens.
  3. Link : Design for template matching feature
  4. Link : Small explaination on the NLP concepts used.
  5. Link : Design doc for answering questions.
  6. Link : Function descriptions of each SLack and Github functions written in code.
  7. Link : Commit message style guide.
  8. Link : Data collected for bot.

Reports( Wiki and Blogs)

The following are some reports and blogs made by me during the GSoC period:

  1. Link : Wiki report.
  2. Link : Journey to GSoC’18
  3. Link : Community bonding Period
  4. Link : GSoC’18 First Week of Coding Phase
  5. Link : GSoC’18 — Second Week of Coding Phase
  6. Link : GSoC’18 — Third Week of Coding Phase
  7. Link : GSoC’18 — 4th Week of Coding Phase
  8. Link : GSoC’18 — 5th Week of Coding Phase
  9. Link : GSoC’18 — 6th Week of Coding Phase
  10. Link : GSoC’18 — 7th Week of Coding Phase
  11. Link : GSoC’18 — 8th Week of Coding Phase
  12. Link : GSoC’18 — 9th Week of Coding Phase
  13. Link : GSoC’18 — 10th Week of Coding Phase
  14. Link : GSoC’18 — 11th Week of Coding Phase
  15. Link : GSoC’18 — Last Week of Coding Phase

Final Work Demo

Video: Link
Demo Slides: Link