exercism / bash

Exercism exercises in Bash.
https://exercism.org/tracks/bash
MIT License
105 stars 87 forks source link

Reorganizing Exercises #287

Closed guygastineau closed 2 years ago

guygastineau commented 5 years ago

Now that we have more (and harder) exercises I think we need to rethink our core exercises, and then apply a new unlocking scheme.

Thanks to @glennj we have a slew of new ports coming in https://github.com/glennj/bash/branches/active

It might be easier to accept suboptimal unlocking relationships for now, and then tackle this project once all the exercises from the above link have made it into the track.

glennj commented 5 years ago

Do we also want to review the topics? I've noticed that we've strayed from (what I assume is) the canonical list of topics.

In reordering relationships, how much do we want to allow ourselves to be influenced by other language tracks?

guygastineau commented 5 years ago

I think looking at some of the more systematic language tracks is a good idea.

Some exercises will have the same tags in all languages, but the tags are intentionally left up to the track. Some languages have wildly different ways of handling the same problem which leads to different tags.

Still observing the tags used elsewhere can ensure we don't omit relevant tags.

The Ruby track is very well thought out, and influence from that track would be a good thing. It is important for us to deliberate the effectiveness of each exercise and how it shapes the difficulty ramp for ourselves, because bash (as a shell language) is quite different from every other language on exercism.

That being said. Perl is probably our closest relative, and I think looking at their track will also be insightful.

I think in the ten months I've been a maintainer here there was 1 minor restructuring of the track, but most of what we're dealing with is older than that.

@glennj given the amount of ports you have coming in do you want to: 1) rework track order/unlocking after they're all merged? 2) rework what we have now, and then reassess as we go?

Personally I think we will be more effective and efficient if we wait until your current pipeline has been exhausted.

guygastineau commented 5 years ago

Yes, I believe that our topics shouldn't stray from that list. If we think a topic needs to be used it should be PR'd there first.

Being a student in the rust track has changed my mind about this slightly.

They seem to have some tags that are not in the canonical list of tags, but which more specifically suit aspects of rust in some exercises.

I think it is important to use the legitimate tags when applicable, but if there is occasion for a truly different tag pertaining to bash (and not to other languages, like parameter substitution) I think we have the right as a track to implement a language specific tag.

glennj commented 5 years ago

I still am working on more ports. I think I'll pause this issue for now (for me).

guygastineau commented 5 years ago

Sure, I appreciate your diligent efforts, and I think once you get us to 50+ exercises we will be in a very good place to organize our track well.

glennj commented 5 years ago

I've ported as many exercises as I think are appropriate.

I've put together a grid to list the current parent-child relationships, and the tags for each exercise. See this google sheet. Next step is to re-parent the non-core exercises as appropriate and to normalize the tags. I'll be adding another worksheet to track the changes.

glennj commented 5 years ago

I've taken my stab at reorganizing and re-keywording the exercises (based largely on the Ruby track). Please see the google sheet.

guygastineau commented 5 years ago

Thanks for taking initiative on this. I am taking a look now ;)

guygastineau commented 5 years ago

Excellent work on these google-sheets.

I'll think about it today, and do some additional thought organization. Remind me if I haven't gotten back to you about this in a day or two ;)

guygastineau commented 5 years ago

Once we get the link from @IsaacG ordering the exercises by difficulty I think we should work our way through the sanity of the difficulty ratings, before finalizing our thoughts on core/child relationships in the track.

This should also give us some time to catch our info up with the new ports @glennj has been rolling out.

IsaacG commented 5 years ago

$ jq -r '.exercises|.[]|"(.difficulty) (.slug)"' config.json | sort -n

1 hello-world 1 reverse-string 1 two-fer 2 allergies 2 armstrong-numbers 2 difference-of-squares 2 error-handling 2 grains 2 hamming 2 house 2 largest-series-product 2 leap 2 pangram 2 raindrops 2 resistor-color-duo 2 rna-transcription 2 scrabble-score 2 secret-handshake 2 series 3 acronym 3 anagram 3 beer-song 3 bob 3 collatz-conjecture 3 isogram 3 matching-brackets 3 nucleotide-count 3 phone-number 3 prime-factors 3 proverb 3 rotational-cipher 3 sieve 3 space-age 3 triangle 3 twelve-days 3 word-count 4 all-your-base 4 binary-search 4 diamond 4 gigasecond 4 isbn-verifier 4 luhn 4 pig-latin 4 roman-numerals 5 atbash-cipher 5 diffie-hellman 5 food-chain 5 grep 5 run-length-encoding 5 say 6 affine-cipher 6 yacht 7 forth 8 change 9 two-bucket

glennj commented 5 years ago

Whenever we want to revisit this, I'm happy to participate.

glennj commented 2 years ago

I think, with exercism v3, this is no longer relevant.