exercism / v2-configlet

Tool to assist in managing Exercism language tracks.
MIT License
16 stars 23 forks source link

Prepare for 3.8.0 release #121

Closed nywilken closed 6 years ago

nywilken commented 6 years ago

In preparation for the next release of Configlet, which contains an upgrade command and a new set of enhanced lint checks, we need to create PRs for each of the tracks that have unlocked_by violations and document the configlet upgrade command.

Tracks

kytrinyx commented 6 years ago

I typically script these with github/hub. Want to give it a go? Or shall I take this one?

nywilken commented 6 years ago

I was just going to go through these manually but if you have an automated way to handle that would be great. If, in the future, you wanted to share how you've automated these that would be pretty cool too.

Heads up some tracks live go, java, and ecmascript have some exercises locked by non core exercises, and some core exercises locked by other core exercises so we might need to have the track maintainers to rethink their dependencies.

nywilken commented 6 years ago

Ah https://hub.github.com - I'll give it a shot and report back if I get stuck.

kytrinyx commented 6 years ago

Yes! Here's what I generally do:

ROOT=$(pwd)
for track in {python,go,java}; do
  cd $ROOT/tracks/$track
  hub issue create -F full/path/to/issue-file
done
nywilken commented 6 years ago

Thanks @kytrinyx that was helpful. I managed to script things up, but have yet to officially create the issues. I should have things wrapped up in a day.

masters3d commented 6 years ago

Non-core exercises can only be unlocked by core exercises.

This sounds odd. What’s the point of progression then? Why’s should we care about making some excercises non core if they have to be unlocked by a core one?

This seems to be pushing down the complexity to the maintainers.

Can we just have a blessed list of core problems?

nywilken commented 6 years ago

@masters3d thanks for the feedback.

Generally, speaking core exercises are meant to teach key concepts around a particular language (e.g looping, control-flow, string manipulation). That, if completed would prepare the user for any of the exercises unlocked by it.

Whereas optional, non-core, exercises are there to help build on, strengthen, those core concepts. Having a non-core unlocked by another unlocked by another non-core exercise can lead to a situation where a user tries to work on a new exercise, with concepts they have not yet learned or completed. Possibly resulting in frustration or a feeling of not being properly prepared.

Completing core exercises is key to the new curriculum, progression, model in Nextercism. Which is why each track should have 8-20 core exercises.

Can we just have a blessed list of core problems?

This is something we should discuss further in exercism/discussions. Would you mind opening a new issue?

To my knowledge, there are some exercises across all tracks that are considered core (hello-world, hamming, bob, two-fer), but they are not enforced as it has been left to the language maintainers to best select exercises that highlight the key concepts, fundamentals, for learning the language at hand. Here is a recent thread by the Python group https://github.com/exercism/python/issues/1099

Stargator commented 6 years ago

@nywilken

Generally, speaking core exercises are meant to teach key concepts around a particular language (e.g looping, control-flow, string manipulation). That, if completed would prepare the user for any of the exercises unlocked by it.

But the core exercises are apparently not suppose to be ordered. So how if core exercises are not unlocked in a certain order, then as a maintainer I have no idea what path a given student is learning the language through the exercises. I would prefer to define in the config, this core exercise unlocks this core exercise and so on.

rpottsoh commented 6 years ago

Are the Core's ordered by how they are placed in config.json or by their difficulty rating? I am assuming the latter.

rpottsoh commented 6 years ago

@nywilken does tree present the Core's in the order they appear or is it sorting them by difficulty? I am thinking of these things on the fly here and I have not gone to see for myself.

Stargator commented 6 years ago

It's hard to verify lot of exercises without the update for configlet being released.

Dart only has 11 exercises, but other repos may have much more. If you want to ensure everyone gets it right, I recommend releasing 3.8.0. Though my previous questions remain.

@rpottsoh It looks like the exercises are ordered by the order in which they appear in the config.

I had one exercise at the bottom and it had a difficulty of 1. So difficulty doesn't seem to be a factor.

rpottsoh commented 6 years ago

It looks like the exercises are ordered by the order in which they appear in the config. I had one exercise at the bottom and it had a difficulty of 1. So difficulty doesn't seem to be a factor.

Thanks for researching this @Stargator, seems like it ought to be by difficulty and not by order of appearance; or at least by difficulty then by order of appearance.

nywilken commented 6 years ago

@rpottsoh @Stargator my apologies for not being able to respond earlier.

It looks like the exercises are ordered by the order in which they appear in the config.

@Stargator thanks for getting to this ask. Just for completeness, the config.json file is processed from top to bottom inserting the core exercises in the order that they are found into an array and displayed within the tree - independent of difficulty. The same is true for the non-core exercises.

t's hard to verify lot of exercises without the update for configlet being released. Dart only has 11 exercises, but other repos may have much more. If you want to ensure everyone gets it right, I recommend releasing 3.8.0.

@Stargator this is a good point and I agree that this would help. I haven't released 3.8.0 because it will automatically break the build for each of the tracks, as Travis downloads the latest release at build time. I wanted to make a draft release but I don't think that everyone would have access to it since it is only visible to members with write access to the repository. I might be able to release it out of band for testing. But it wont be until later tonight, tomorrow. ~@kytrinyx @tleen any thoughts on this ask on how we can get a quick beta binary out.~

But the core exercises are apparently not suppose to be ordered. So how if core exercises are not unlocked in a certain order, then as a maintainer I have no idea what path a given student is learning the language through the exercises. I would prefer to define in the config, this core exercise unlocks this core exercise and so on.

If its okay with you I am going to refer you to a previous issue where @tleen spoke about this same ask for the Go track. https://github.com/exercism/go/issues/1082#issuecomment-366838155

The core exercises are not meant to be done in order as they are more of a stepping stone to one or more concepts for a given language. However, the point that you make is sound and I think would be good for the discussion repo so that it can be discussed further with other members who can speak more to the progression model.

nywilken commented 6 years ago

@Stargator @rpottsoh

It's hard to verify lot of exercises without the update for configlet being released.

I went ahead and pre-released v3.8.0 for validation purposes. You can find the release here. Thanks again for the help in pushing these issues forward and for the feedback.

rpottsoh commented 6 years ago

Windows 64 bit pre-release v3.8.0 appears to be working OK for me. Tried linting GO and found same error as you have listed in exercism/go#1093. version -l also claims it is the latest version. Will you be bumping the version for the release? It would allow me to try the upgrade feature, currently it reports that the CLI is up to date. @exercism/go should also generate, a couple of READMEs are out-of-date.

nywilken commented 6 years ago

@rpottsoh thanks for testing. In hindsight I should’ve pre-released a rc version for testing the upgrade functionality.

tleen commented 6 years ago

Sorry for MIA I can take a look tomorrow, and appreciate the heads up on the Go track.

tleen commented 6 years ago

When all is finished it may be useful to document somewhere this process for creating the repo-side issues via hub. I've often wondered about it myself. Seems like something we would do via this project here and there.

tleen commented 6 years ago

I had one exercise at the bottom and it had a difficulty of 1. So difficulty doesn't seem to be a factor.

@rpottsoh @Stargator difficulty is noted (if --with-difficulty is flagged) but not taken into account anywhere. The ordering is the ordering by which the exercise data is unpacked from the JSON which IIRC is in listing order.

tleen commented 6 years ago

Can we just have a blessed list of core problems?

@masters3d I believe it was determined that it was not possible to create a blessed list because of large differences in languages and exercise implementations.

tleen commented 6 years ago

| @exercism/go should also generate, a couple of READMEs are out-of-date.

Thanks for the heads up @rpottsoh I just PRd that update via the latest configlet. So generate works just fine!

kytrinyx commented 6 years ago

Sorry I've missed this entire discussion—I've been heads down at work for the past 2 weeks.

To clarify:

The core exercises are meant to be done in order. Each core exercise unlocks the next. This happens implicitly by virtue of being "core". You have to complete the core exercise you are working on, in order to start on the next one.

The order is decided by the array in config.json.

The difficulty should inform the order. If maintainers see that core exercise number 3 has a difficulty of 7 whereas number 5 has a difficulty of 2, then the maintainers should tweak the order of the core exercises. The difficulties and topics will appear on the exercise on the website, which will let people do filtering and selecting.

It looks like this has all been resolved, but if you have any open questions about core/non-core, would you please open up an issue in the v2-feedback repository?

FYI @iHiD for visibility

rpottsoh commented 6 years ago

upgrade from 3.8.0 to 3.9.0 worked fine on Windows 7 32 bit.

nywilken commented 6 years ago

@rpottsoh thanks for testing!!!!

rpottsoh commented 6 years ago

upgrade from 3.8.0 to 3.9.0 for Windows 10 👍