Git Product home page Git Product logo

pull-request-roulette's Introduction

pull-request-roulette

Code Climate Build Status Coverage Status Dependency Status PullReview stats

Web app to match up developers, with public pull requests (PRs) on Github, with people willing to comment on their PRs.

The current workflow is:

  • Project owner Polly has a project.

  • Coder Carol submits a pull request to Polly's project.

  • Either Carol or Polly (or currently, anybody!) submits Carol's PR to Pull Request Roulette (PRR). Most likely, she'll have done that because Polly just hasn't had the time to look at the PR and approve it.

  • Reviewer Rachel comes to PRR, sees Carol's PR in the list, and "takes" it.

  • It is now marked as under review by Rachel.

  • The hope is that Rachel will give Carol's PR a thorough review, using comments or email to notify Carol and Polly when done, and Rachel's comments will help Polly decide whether to accept it.

  • Eventually Carol or Rachel or Polly will come to PRR and mark the PR as no longer under review, either to solicit more reviews, or to remove it from the list. However, removal is not yet implemented.

Yes, that's very simple. There's only one thing being stored (a simple PR descriptor), and it's not even full CRUD as there is no Update. But this is just the MVP. The main workflow I envision eventually is:

  • Project owner Polly has a project.

  • Coder Carol submits a pull request to Polly's project.

  • Either Carol or Polly (or maybe anybody) submits Carol's PR to PRR.

  • PRR looks at what languages the files in the PR use, and lets the submitter adjust the list. (This may be needed due to .txt files, or files with no extension, being in some human language, so that for instance the reviewer needs to know Chinese. Other than that, it means computer languages. It might deduce some human languages from filenames like fr.yml. I do not intend for it to grow language-detection from text, a la Google Translate.)

  • Reviewer Rachel has registered at PRR, and possibly specified what languages she knows.

  • Rachel comes to PRR, and asks for a PR to review.

  • PRR analyzes the possible matches, decides that Carol's is the best match, and presents it (and no others) to her. This is the "roulette" aspect I'm aiming for.

  • That includes the details of how many files in what languages, how many additions, deletions, and other changes, etc.

  • Rachel may decline it and ask for a different one, but in this case let's say she accepts, or in current parlance, "takes" it.

  • PRR marks it as being assigned to Rachel for review.

  • PRR notifies Carol and Polly... if it has their email addresses.

  • Polly sees the email and thinks "hmmm, what is this PRR thing and how does it have my email address?" (The answer is, either Polly signed up on PRR after we established user profiles, or she made it public on Github.)

  • Meanwhile, Reviewer Roger comes to PRR and asks for a PR to review.

  • PRR determines that Carol's would be the best match for him, except that it's already being reviewed, so it looks for the second best.

  • Rachel makes comments on Github, mainly in the PR but possibly in the project's issues. Github notifies Carol, Polly, and any other interested parties; PRR is not involved.

  • Rachel comes back to PRR, and marks the PRR as reviewed.

  • PRR notifies Carol and Polly... if it has their email addresses.

  • PRR asks Rachel to rate Carol as a coder.

  • Carol comes back to PRR, and rates Rachel as a reviewer.

  • Brief aggregate ratings as coder and/or reviewer are shown when someone lists the users (at least, those who don't hide their profiles); more detailed ratings, if we decide to have them, are shown when someone views their profiles.

  • Top coders and/or reviewers may be featured on the front page, newsletter, etc.

If Rachel shirks her duty, then the fact that the PR has been "taken" will count for less and less, when PRR decides on matches. Eventually, either the PR could be marked as "untaken", or it could be under review by multiple reviewers at once. There could be a "pestering" mechanism so that Rachel gets reminded every few days... again, if we have her email address. We could require it, but I don't like that idea.

See the Issues for possible features saved for later, known bugs to fix, etc.

The code is currently deployed at http://www.PullRequestRoulette.com, as a free public service of Codosaurus, LLC.

pull-request-roulette's People

Contributors

davearonson avatar mab879 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

pull-request-roulette's Issues

Show list of languages used in a PR

As a reviewer,
I want to see what languages a PR uses,
So I can home in on things I can review.

Given a PR that uses languages X, Y, and Z,
When I submit it,
Then the system should discover and record that it uses X, Y, and Z,
And when it is listed or displayed, it should show that it uses X, Y, and Z.

Let reviewers set what languages to see

As a reviewer,
I want to set a preference item for what languages I'll review,
So that I can home in on the PRs I can review.

Given that I am logged in,
And my profile doesn't say I review languages X, Y, and Z,
When I tell the system that I do,
Then my profile will say so.

Email submitter when someone takes a PR

As a submitter
I want to know when someone takes one of my PRs
So that I can see the feedback in a timely manner.

Given that I have submitted a PR
When someone takes it
Then I should receive an email saying who took which one.

Users can take a pull request to review

As a user,
I want to take a pull request for review,
So that I can help someone see in what ways his code sucks. ;-)

Given that I am logged into PRR,
And there is at least one PR available to review,
When I ask PRR for a PR,
Then I will be told about that PR.
When I ask again,
Then I will not be told about that same PR.

Users can log in with Github credentials

As a user,
I want to log in with my Github credentials,
So I can have my actions tied to my Github account.

Given that I am not logged into PRR,
When I submit my Github username and password,
Then I will be l logged into PRR.

URLs should be unique

As a reviewer,
I want to see unique URLs,
So I don't have to wade through dups.

Given a PR already in the system,
When I submit the same PR,
Then I should see an error message
And the resubmission should not be saved.

At the very least, the whole text should be unique, never mind canonicalizing them.

Testing with oauth login

Need to update the tests to include the possibility that the user is not logged in, and to go through the process of an oauth (github) login.

"Take" is not working on Heroku!

Steps:

  • Go to PR list
  • Click Take next to any PR

Expected:

  • Confirmation alert, followed by index minus that PR (if confirmed)

Actual:

  • Show-screen for that PR

Add a sign in button / link

So when I first visited the website, I couldn't figure out a way to sign in. I had to pretend to submit a PR to get through the auth.

Add Bitbucket support

As a Bitbucket user,
I want to submit my Bitbucket-based PRs for review,
So I can take advantage of all the wonderful features of Pull Request Roulette. :-)

Given an open valid pull request hosted on Bitbucket,
When I submit its URL,
Then it is accepted.

Let user edit profile

As a user,
I want to be able to set various things about my profile,
So I can customize my experience.

Given I am signed in,
When I go to the Edit Profile page,
Then I see my profile.
When I make changes,
And I visit the Edit Profile page again,
Then my changes are reflected.

Users can submit pull requests for review

As a user,
I want to submit a pull request for review,
So that I can see in what ways my code sucks. ;-)

Given that I am logged into PRR,
And I have a PR on a public Github repo,
And that PR is not in PRR,
When I submit that PR to PRR,
Then that PR will be in PRR.

Let reviewers specify minimum star rating for coders

As a reviewer,
I want to specify a minimum rating for the authors of PRs I will review,
So I don't have to wade through crappy code.

Given that there are PRs submitted by one-, two- and three-star coders,
And I am otherwise eligible to review all of them,
When I specify a minimum star rating of two stars,
Then I will not see the PRs from one-star coders.

(This might be a Premium feature.)

UI should look nicer

As a user,
I want to see a site look nice,
So my eyes don't burn. ;-)

Hmmmm, how to write an automated acceptance test for this? :-)

Only let a PR's owner, or the repo's owner, add it

As a coder,
I want to decide when to ask for a review,
So I don't get pestered with uninvited critiques.

Given that I didn't write some PR,
And I don't own the repo it's for,
When I submit it,
Then it should be rejected, with a message to that effect.

Given that I didn't write some PR,
And I do own the repo it's for,
When I submit it,
Then it should be accepted.

Given that I wrote some PR,
And I do not own the repo it's for,
When I submit it,
Then it should be accepted.

(E.g., Alice writes a PR for Bob's repo; Alice or Bob can submit it, but Charlie can't.)

Https error with the site

image
SSL certificate error on Firefox with the site. Mostly because the certificate seems to be only valid for herokuapp domains.

sometimes blows up

Certain PRs result in an error message that "The change you wanted was rejected. Maybe you tried to change something you didn't have access to." Ones that have been merged or closed always seem to do this. Some that are open also do; these seem to be ones where the username has changed, so we can't grab it by that name. It seems like saving it calls validation which makes sure it's there and open. We should tell the user exactly what went wrong, rather than swallowing the Github error.

Email submitter when reviewer finishes review

As a PR submitter
I want to know when the reviewer has finished
So that I can see the review in a timely manner.

Given that Jane Coder has submitted a PR
And that Joe Reviewer has "taken" it
When Joe tells the system he has finished it
Then the system sends Jane an email saying so.

Users have profiles

As a user,
I want to have a profile,
So I can set and share info about me.

Given I am logged in,
And I have a profile,
When I go to my Profile page,
Then I see my profile.

Show who wrote a PR

As a coder,
I want to get credit for a PR,
So I can get free publicity. (Okay, Dave, come up with something better!)

Given that some person wrote no submitted PRs,
And I am logged in,
When I submit one of that person's PRs,
And I list the untaken PRs,
Then his name appears next to that PR.

Let coders specify minimum star rating for reviewers

As a coder,
I want to specify a minimum rating for my reviewer,
So I can get a good review.

Given that there is a PR specifying a minimum of two stars to review it,
And I am logged in as a one-star reviewer,
And I am otherwise eligible to review this PR,
When I search the list,
I will not see it.
When I log in as a two-star reviewer,
And I am otherwise eligible to review this PR,
When I search the list,
I will see it.

(This might be a Premium feature.)

Users can log out

As a user,
I want to log out of PRR,
So that people can't pretend to be me.

Given that I am logged into PRR,
When I log out,
Then I am not logged into PRR.

URLs must be for Github PRs

As a user,
I want to have other users limited to putting in valid Github pull request URLs,
So that I can find actual PRs instead of spam.

Given that I am on the New Pull Request page,
When I enter a URL that is NOT for a Github pull request,
And I submit it,
Then I should get an error message
And the URL should not be in the system.

Given that I am on the New Pull Request page,
When I enter a URL that IS for a Github pull request,
And I submit it,
Then I should NOT get an error message
And the URL should be in the system.

Verify that a PR is still open when submitted

As a reviewer,
I want to see only PRs that are still open,
So I don't waste time checking into closed ones.

Given that my PR is already closed,
When I submit it,
Then I should get an error message saying so,
And it should not be accepted.

Show who took a PR

As a coder,
I want to see who's supposed to be reviewing my PR,
So I can ask them to get on with it, if it's been a while.

Given I am logged in,
And there is a PR taken by a specific reviewer,
When I list the taken PRs,
Then I see that PR,
And it is listed as taken by that reviewer.

PRs still listed 3 years after closing and after repo archiving

Visiting pullrequestroulette.com right now, I found that only 2 of the first 10 PRs on the list were open and in reachable, non-archived repos. The closed ones had been closed for at least 20 months! Shouldn't the app periodically check for this?

alvarotrigo/fullPage.js#612 (closed 2016-04-29)
freeCodeCamp/camper-gitter-bot#89 (merged 2016-05-07, repo now archived)
freeCodeCamp/camper-gitter-bot#83 (closed 2016-10-16, repo now archived)
petdance/html-tidy#19 (closed 2017-05-26, repo now archived)
mstevens/Proc--InvokeEditor#3 (open at the time of reporting)
tobyink/p5-type-tiny#21 (merged 2017-02-08)
erichoracek/MSDynamicsDrawerViewController#21 (open)
https://github.com/saurabhlambe/hello-world/pull/3 (repo 404)
dolmen-perl5/Git-Sub#4 (closed 2016-10-18)
mindmup/bootstrap-wysiwyg#50 (open, but repo now archived)

Let reviewer, coder, or project owner state that the review is finished

As a PR submitter
I want to know when the reviewer has finished
So that I can see the review in a timely manner.

Given that Alice has submitted a PR on Bob's project
And that Carol has "taken" it
When Alice OR Bob OR Carol tells the system she has finished it
Then the PR is marked as no longer under review.

(Note: it is then available for further review or may be removed from PRR.)

Search bar and language filter

I found the website interesting and so I would suggest two implementations on the site:

1- Search Bar: To allow site visitors / users to search by name or any PullRequest reference.

2- Filter by language: Give the user the possibility to see only the pull / repos against the language he prefers.

Thank you.. πŸ‡¦πŸ‡΄ ❀️ πŸ—ΊοΈ

Getting SPAM and non-sense pull requests?

I've noticed some of the traffic my repository has comes from http://www.pullrequestroulette.com/ and I noticed it about the same time that mysterious and non-sense pull requests started to appear in my repository.

See the following ones:
alvarotrigo/fullPage.js#3765
alvarotrigo/fullPage.js#3764
alvarotrigo/fullPage.js#3761
alvarotrigo/fullPage.js#3750
alvarotrigo/fullPage.js#3749
alvarotrigo/fullPage.js#3747
alvarotrigo/fullPage.js#3745

What's going on here?

Let reviewers rate PRs, and coder rate reviews

As a reviewer/coder,
I want to have my reviews/PRs rated,
so I can show off how awesum [sic] I am!!!1!!1!!one!!

I don't quite feel up to writing the tests for this right now. Later. This is a placeholder.

Should accept URL w/o http[s]:// on front

As a lazy user,
I want to omit the http:// or https:// on the front of the URL,
So I can type less.

When I submit a URL for a Github PR, without the protocol,
Then it should be successfully saved,
And when I click on it in the list,
Then it should take me to the correct place.

Match PRs and reviewers based on language tags

As a reviewer,
I want to see PRs using only languages I know,
So I can help without wading through things where I can't.

Given that I have logged in (this will have to be profile-based),
And I have told the system I know a few languages,
And there are at least two un-taken PRs using at least one of those languages,
When I ask for a PR to review,
Then I will be shown the earliest-submitted such PR.
When I ask for another,
Then I will be shown the next-earliest-submitted such PR.
And so on, until there are no more such PRs.

Show who submitted a PR to PRR

As a reviewer,
I want to see who submitted a PR to PRR,
So I can, er, I don't really know why.

Given that I have submitted no PRs,
And I am logged in,
When I submit a PR,
And I list the untaken PRs,
Then my ID appears next to that PR.

Don't delete PRs when "Taken"; have submitter to do it later

As a coder,
I want my PR submission to stick around until it's actually been reviewed,
So I can have a better shot at it actually getting reviewed.

Again, I don't feel quite up to writing the test scenarios for this right now. Maybe later, after the MVP has gotten some usage. This is a placeholder. Also, I'm thinking, don't really delete them ever, just mark them as "done" for a historical record.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.