exercism / meta

Experimenting with a repo to manage the project-wide, meta todos.
7 stars 2 forks source link

Develop a bot that creates issues in language tracks when problem specifications are updated #97

Closed kytrinyx closed 6 years ago

kytrinyx commented 6 years ago

Background

Exercism provides a way for people to get from Hello World in a new programming language, to being comfortable with the basic syntax, datatypes, idioms, and standard library of the language.

There are 40+ active language tracks on Exercism, and 20+ language tracks that are currently in development.

Each track implements a large number of small exercises. To make this simpler, we have a collection of language-independent problem specifications that a track can use as the basis for an exercise. A language track that wants to implement the problem can use the suggested inputs/outputs for their test suite, and they can generate the README using the default description without any extra work.

Language tracks do not need to follow the spec, and they can also implement exercises that do not have a generic specification.

Problem description

For language tracks that do follow the spec for an exercise, we currently have no way of letting them know when an exercise has changed. This means that language tracks don't get the improvements when the description is clarified or a missing edge case gets added.

Because it's a whole lot of work to try to follow along in the problem-specifications repository, most tracks don't update their exercises unless they (for some reason) discover that they need to.

Suggested solution

The goal of this project is to create a bot that will automatically create issues when there are updates to the problem specifications repository. We want to avoid creating more work for language track maintainers, and we also want to provide a way to entice new contributors to pick up fun sized issues.

The bot would open issues that contain detailed instructions, or that points to fully fleshed out guides for how to make the change in question, and would add one or more labels (to be determined), which we could use on social media and in documentation to link people to great starter issues for getting started in open source.

  1. When an existing exercise changes, the bot would post issues to all language tracks that implement the exercise
  2. When a new exercise is added, the bot would post issues to all language tracks

The bot would need to be configurable.

In particular, a language track would need to be able to configure exercises that exist in the problem-specifications, but which they don't want to receive updates for (they've "forked" that exercise, and no longer follow the generic spec).

Other configuration options may also arise, such as overriding the issue template, or configuring that they don't want to receive notifications about new exercises.

Required technologies

Such a bot can be implemented in any language, but the easiest way to implement it would be to use Probot.

Probot is a JavaScript framework for writing GitHub Apps, and it has excellent documentation and a lively, active, supportive community including a Slack channel and weekly synchronous office hours over Google Hangouts.

Prerequisites to applying as a RailsGirls Summer of Code team

If you wish to apply to implement this as your RGSoC project, then please implement a GitHub App (presumably using Probot) that:

  1. Listens for the PushEvent event that gets triggered when you push code to a GitHub repository (see the documentation about webhooks for more information).
  2. Looks for the word banana in all the commit messages that are a part of that push (notice that the commits with their messages are part of the PushEvent payload).
  3. Uses the Statuses API to create a "passing" status if all the commits have the word banana in them, or a "failing" status if not.

Send me the link to the installation page for your app so that I can install it on a test repository to try it out.

For support getting started, join the Probot Community.

Akshitaag commented 6 years ago

Hii My friend @rahmeen14 and I would like to work on this issue as a part of RGSoC 2018.We have started working on the prerequisite task .We are familiar with node.js ,javascript and elementary Probot. Would love to contribute to the community!

Rahmeen14 commented 6 years ago

Hi! Yes, we would love to contribute to this project as a part of RGSoC 2018!

ShachiBhavsar commented 6 years ago

Hi, my friend @nidhi98gupta and I are eager to contribute to this project as a part of RGSoC 2018! We would be completing prerequisite in a few days.

kytrinyx commented 6 years ago

@Akshitaag @Rahmeen14 @ShachiBhavsar @nidhi98gupta I'm very excited to hear this!

⭐️ ✨🌻✨ ⭐️

wolf99 commented 6 years ago

+1 for this idea! We've been discussing canonical synchronicity over in the C track (which doesn't lend itself hugely to scripted solutions to this without making track-wide changes). This idea here looks pretty great as it requires no/little change to existing track code-bases and the resultant issues would be great candidates for good-first-patch labeling :smiley:

siwaniagrawal commented 6 years ago

Hi! Me and my teammate @alishamohanty are eager to contribute in this project for RGSoC 2018.

ideepika commented 6 years ago

Hey @kytrinyx @wolf99, we would really like to learn and work on this project for RGSoC, we had read the documentation for probot and had started on the preliminary task, we would like to discuss on proposal and possible mentors, thank you for awesome opportunity <3 πŸ™‚

ShachiBhavsar commented 6 years ago

@kytrinyx Hi, we have emailed you link to prerequisite Github app (using Probot). Please have a look. :)

wolf99 commented 6 years ago

@dexter816 I'm here to cheer πŸ˜„ however I have no experience with JS so will be of little practical help. If you have questions I guess ask them here. I am subscribed to this issue so where I (or others!) have relevant information will be happy to help out πŸ‘

kytrinyx commented 6 years ago

we would like to discuss on proposal

If you have questions about the project, or if you need clarification about the preliminary task, then please ask them here. If you have questions about Probot, then I would recommend joining the Probot slack channel and asking there.

Arpita2012 commented 6 years ago

Hey @kytrinyx , we had completed the preliminary task for RGSOC and mailed it for a review from deepikaupadhyay01@gmail.com Please have a look on it.

kytrinyx commented 6 years ago

Thanks @Arpita2012 @dexter816.

sreshu commented 6 years ago

Hi,me and my team mate @miniamisha as a part of RGSoC'18 applicant team would love to contribute to it! I am versed with JS,Node.js and my team-mate is versed with python. We are already working on the solution to problem statement. I would love to make the solution framed in my application for RGSoC. Please approve it @kytrinyx

kytrinyx commented 6 years ago

@reshusinghhh @miniamisha When you've completed the prework, please email me the link to the app so that I can install it and test it.

kytrinyx commented 6 years ago

Since the application period is over I am closing this. Thank you for the discussions, everyone.