Skip to content

Commit

Permalink
🤖 Add authors and contributors to Practice Exercises (exercism#356)
Browse files Browse the repository at this point in the history
* Add authors and contributors to Practice Exercises

For each Practice Exercise, we've looked at the commit history of its files to see which commits touched that Practice Exercise.

Each commit that we could associate with a Practice Exercise was used to determine authorship/contributorship.

### Authors

1. Find the Git commit author of the oldest commit linked to that Practice Exercise
2. Find the GitHub username for the Git commit author of that commit
3. Add the GitHub username of the Git commit author to the `authors` key in the `.meta/config.json` file

### Contributors

1. Find the Git commit authors and any co-authors of all but the oldest commit linked to that Practice Exercise. If there is only one commit, there won't be any contributors.
1. Exclude the Git commit author and any co-authors of the oldest commit from the list of Git commit authors (an author is _not_ also a contributor)
2. Find the GitHub usernames for the Git commit authors and any co-authors of those commits
3. Add the GitHub usernames of the Git commit authors and any co-authors to the `contributor` key in the `.meta/config.json` file

We used the GitHub GraphQL API to find the username of a commit author or any co-authors. In some cases though, a username cannot be found for a commit (e.g. due to the user account no longer existing), in which case the commit was skipped.

## Renames

There are a small number of Practice Exercises that might have been renamed at some point. You can ask Git to "follow" a file over its renames using `git log --follow <file>`, which will also return commits made before renames. Unfortunately, Git does not store renames, it just stores the contents of the renamed files and tries to guess if a file was renamed by looking at its contents. This _can_ (and will) lead to false positives, where Git will think a file has been renamed whereas it hasn't. As we don't want to have incorrect authors/contributors for exercises, we're ignoring renames. The only exception to this are known exercise renames:

- `bracket-push` was renamed to `matching-brackets`
- `retree` was renamed to `satellite`
- `resistor-colors` was renamed to `resistor-color-duo`
- `kindergarden-garden` was renamed to `kindergarten-garden`

## Exclusions

There are some commits that we skipped over, and which thus didn't influence the authors/contributors list:

- Commits authored by `dependabot[bot]`, `dependabot-preview[bot]` or `github-actions[bot]`
- Bulk update PRs made by `ErikSchierboom` or `kytrinx` to update the track

* remove neenjaw from contributors

Co-authored-by: Tim Austin <[email protected]>
  • Loading branch information
ErikSchierboom and neenjaw authored Jun 18, 2021
1 parent 9d44736 commit da123fe
Show file tree
Hide file tree
Showing 66 changed files with 606 additions and 522 deletions.
15 changes: 5 additions & 10 deletions exercises/practice/accumulate/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
{
"blurb": "Implement the `accumulate` operation, which, given a collection and an operation to perform on each element of the collection, returns a new collection containing the result of applying that operation to each element of the input collection.",
"authors": [],
"authors": ["pmatseykanets"],
"contributors": ["arueckauer", "kunicmarko20", "kytrinyx", "petemcfarlane"],
"files": {
"solution": [
"Accumulate.php"
],
"test": [
"AccumulateTest.php"
],
"example": [
".meta/example.php"
]
"solution": ["Accumulate.php"],
"test": ["AccumulateTest.php"],
"example": [".meta/example.php"]
},
"source": "Conversation with James Edward Gray II",
"source_url": "https://twitter.com/jeg2"
Expand Down
21 changes: 11 additions & 10 deletions exercises/practice/acronym/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
{
"blurb": "Convert a long phrase to its acronym",
"authors": [],
"authors": ["pmatseykanets"],
"contributors": [
"arueckauer",
"kunicmarko20",
"kytrinyx",
"petemcfarlane",
"yisraeldov"
],
"files": {
"solution": [
"Acronym.php"
],
"test": [
"AcronymTest.php"
],
"example": [
".meta/example.php"
]
"solution": ["Acronym.php"],
"test": ["AcronymTest.php"],
"example": [".meta/example.php"]
},
"source": "Julien Vanier",
"source_url": "https://github.com/monkbroc"
Expand Down
8 changes: 7 additions & 1 deletion exercises/practice/affine-cipher/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
{
"blurb": "Create an implementation of the Affine cipher, an ancient encryption algorithm from the Middle East.",
"authors": [],
"authors": [
"camilopayan"
],
"contributors": [
"arueckauer",
"neenjaw"
],
"files": {
"solution": [
"AffineCipher.php"
Expand Down
11 changes: 10 additions & 1 deletion exercises/practice/all-your-base/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
{
"blurb": "Convert a number, represented as a sequence of digits in one base, to any other base.",
"authors": [],
"authors": [
"camilopayan"
],
"contributors": [
"arueckauer",
"kunicmarko20",
"kytrinyx",
"mk-mxp",
"neenjaw"
],
"files": {
"solution": [
"AllYourBase.php"
Expand Down
22 changes: 12 additions & 10 deletions exercises/practice/allergies/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
{
"blurb": "Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.",
"authors": [],
"authors": ["mikeSimonson"],
"contributors": [
"arueckauer",
"DerTee",
"G-Rath",
"kunicmarko20",
"kytrinyx",
"petemcfarlane"
],
"files": {
"solution": [
"Allergies.php"
],
"test": [
"AllergiesTest.php"
],
"example": [
".meta/example.php"
]
"solution": ["Allergies.php"],
"test": ["AllergiesTest.php"],
"example": [".meta/example.php"]
},
"source": "Jumpstart Lab Warm-up",
"source_url": "http://jumpstartlab.com"
Expand Down
15 changes: 5 additions & 10 deletions exercises/practice/anagram/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
{
"blurb": "Given a word and a list of possible anagrams, select the correct sublist.",
"authors": [],
"authors": ["ecrmnn"],
"contributors": ["arueckauer", "kunicmarko20", "kytrinyx", "petemcfarlane"],
"files": {
"solution": [
"Anagram.php"
],
"test": [
"AnagramTest.php"
],
"example": [
".meta/example.php"
]
"solution": ["Anagram.php"],
"test": ["AnagramTest.php"],
"example": [".meta/example.php"]
},
"source": "Inspired by the Extreme Startup game",
"source_url": "https://github.com/rchatley/extreme_startup"
Expand Down
8 changes: 7 additions & 1 deletion exercises/practice/armstrong-numbers/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
{
"blurb": "Determine if a number is an Armstrong number",
"authors": [],
"authors": [
"amscotti"
],
"contributors": [
"arueckauer",
"neenjaw"
],
"files": {
"solution": [
"ArmstrongNumbers.php"
Expand Down
15 changes: 5 additions & 10 deletions exercises/practice/atbash-cipher/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
{
"blurb": "Create an implementation of the atbash cipher, an ancient encryption system created in the Middle East.",
"authors": [],
"authors": ["nhoag"],
"contributors": ["arueckauer", "kunicmarko20", "kytrinyx", "petemcfarlane"],
"files": {
"solution": [
"AtbashCipher.php"
],
"test": [
"AtbashCipherTest.php"
],
"example": [
".meta/example.php"
]
"solution": ["AtbashCipher.php"],
"test": ["AtbashCipherTest.php"],
"example": [".meta/example.php"]
},
"source": "Wikipedia",
"source_url": "http://en.wikipedia.org/wiki/Atbash"
Expand Down
21 changes: 11 additions & 10 deletions exercises/practice/beer-song/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
{
"blurb": "Produce the lyrics to that beloved classic, that field-trip favorite: 99 Bottles of Beer on the Wall.",
"authors": [],
"authors": ["nhoag"],
"contributors": [
"arueckauer",
"kunicmarko20",
"kytrinyx",
"petemcfarlane",
"yisraeldov"
],
"files": {
"solution": [
"BeerSong.php"
],
"test": [
"BeerSongTest.php"
],
"example": [
".meta/example.php"
]
"solution": ["BeerSong.php"],
"test": ["BeerSongTest.php"],
"example": [".meta/example.php"]
},
"source": "Learn to Program by Chris Pine",
"source_url": "http://pine.fm/LearnToProgram/?Chapter=06"
Expand Down
21 changes: 11 additions & 10 deletions exercises/practice/binary-search/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
{
"blurb": "Implement a binary search algorithm.",
"authors": [],
"authors": ["arthurchipdean"],
"contributors": [
"arueckauer",
"kunicmarko20",
"kytrinyx",
"petemcfarlane",
"yisraeldov"
],
"files": {
"solution": [
"BinarySearch.php"
],
"test": [
"BinarySearchTest.php"
],
"example": [
".meta/example.php"
]
"solution": ["BinarySearch.php"],
"test": ["BinarySearchTest.php"],
"example": [".meta/example.php"]
},
"source": "Wikipedia",
"source_url": "http://en.wikipedia.org/wiki/Binary_search_algorithm"
Expand Down
15 changes: 5 additions & 10 deletions exercises/practice/binary/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
{
"blurb": "Convert a binary number, represented as a string (e.g. '101010'), to its decimal equivalent using first principles",
"authors": [],
"authors": ["pmatseykanets"],
"contributors": ["arueckauer", "kunicmarko20", "kytrinyx", "petemcfarlane"],
"files": {
"solution": [
"Binary.php"
],
"test": [
"BinaryTest.php"
],
"example": [
".meta/example.php"
]
"solution": ["Binary.php"],
"test": ["BinaryTest.php"],
"example": [".meta/example.php"]
},
"source": "All of Computer Science",
"source_url": "http://www.wolframalpha.com/input/?i=binary&a=*C.binary-_*MathWorld-"
Expand Down
21 changes: 11 additions & 10 deletions exercises/practice/bob/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
{
"blurb": "Bob is a lackadaisical teenager. In conversation, his responses are very limited.",
"authors": [],
"authors": ["brettsantore"],
"contributors": [
"arueckauer",
"DerTee",
"kunicmarko20",
"kytrinyx",
"petemcfarlane"
],
"files": {
"solution": [
"Bob.php"
],
"test": [
"BobTest.php"
],
"example": [
".meta/example.php"
]
"solution": ["Bob.php"],
"test": ["BobTest.php"],
"example": [".meta/example.php"]
},
"source": "Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial.",
"source_url": "http://pine.fm/LearnToProgram/?Chapter=06"
Expand Down
15 changes: 5 additions & 10 deletions exercises/practice/book-store/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
{
"blurb": "To try and encourage more sales of different books from a popular 5 book series, a bookshop has decided to offer discounts of multiple-book purchases.",
"authors": [],
"authors": ["Hrumpa"],
"contributors": ["arueckauer", "kytrinyx", "petemcfarlane"],
"files": {
"solution": [
"BookStore.php"
],
"test": [
"BookStoreTest.php"
],
"example": [
".meta/example.php"
]
"solution": ["BookStore.php"],
"test": ["BookStoreTest.php"],
"example": [".meta/example.php"]
},
"source": "Inspired by the harry potter kata from Cyber-Dojo.",
"source_url": "http://cyber-dojo.org"
Expand Down
21 changes: 12 additions & 9 deletions exercises/practice/bowling/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
{
"blurb": "Score a bowling game",
"authors": [],
"contributors": [
"arueckauer",
"DerTee",
"dkinzer",
"kunicmarko20",
"kytrinyx",
"lafent",
"petemcfarlane"
],
"files": {
"solution": [
"Bowling.php"
],
"test": [
"BowlingTest.php"
],
"example": [
".meta/example.php"
]
"solution": ["Bowling.php"],
"test": ["BowlingTest.php"],
"example": [".meta/example.php"]
},
"source": "The Bowling Game Kata at but UncleBob",
"source_url": "http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata"
Expand Down
12 changes: 11 additions & 1 deletion exercises/practice/change/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
{
"blurb": "Correctly determine change to be given using the least number of coins",
"authors": [],
"authors": [
"petemcfarlane"
],
"contributors": [
"arueckauer",
"G-Rath",
"kunicmarko20",
"kytrinyx",
"leNEKO",
"neenjaw"
],
"files": {
"solution": [
"Change.php"
Expand Down
22 changes: 12 additions & 10 deletions exercises/practice/clock/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
{
"blurb": "Implement a clock that handles times without dates.",
"authors": [],
"authors": ["jrdnull"],
"contributors": [
"arueckauer",
"dkinzer",
"kunicmarko20",
"kytrinyx",
"lafent",
"petemcfarlane"
],
"files": {
"solution": [
"Clock.php"
],
"test": [
"ClockTest.php"
],
"example": [
".meta/example.php"
]
"solution": ["Clock.php"],
"test": ["ClockTest.php"],
"example": [".meta/example.php"]
},
"source": "Pairing session with Erin Drummond",
"source_url": "https://twitter.com/ebdrummond"
Expand Down
11 changes: 10 additions & 1 deletion exercises/practice/collatz-conjecture/.meta/config.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
{
"blurb": "Calculate the number of steps to reach 1 using the Collatz conjecture",
"authors": [],
"authors": [
"kk-r"
],
"contributors": [
"arueckauer",
"G-Rath",
"kunicmarko20",
"kytrinyx",
"neenjaw"
],
"files": {
"solution": [
"CollatzConjecture.php"
Expand Down
Loading

0 comments on commit da123fe

Please sign in to comment.