Forego formerly deprecated exercises#830
Conversation
The rust track had several deprecated exercises. As they were removed from the list of exercises available to students some time ago, exercism#773 removed the actual exercises, in order to clean things up. This produced a CI failure, but it was overridden, because it was a configlet bug, not a real problem. Overriding the CI failure was a mistake: I hadn't considered that this would cause _every_ CI job to fail from that point forward. I opened exercism/configlet#160 fixing the issue with configlet, but it has not yet been reviewed, and there will be an unknowable amount of time before it is reviewed and approved. In order to make configlet stop complaining and restore CI functionality to the track, this PR moves the removed exercises into the foregone list, which doesn't suffer the configlet bug.
petertseng
left a comment
There was a problem hiding this comment.
do you think this will be a temporary measure (they will be put back as deprecated at a point in the future), or permanent?
the most recent deprecation was in june 2018, so any negative effects (students who had done these exercises) should be minimal, and any that do occur, I suppose we will just have to Deal With (in some manner not specified at this time).
|
Whether or not we put them back, I think, depends on the exact semantics of "deprecated" and "foregone". I have an idea of what those statuses mean, but it's an empirical one, based on what I've seen. I have not seen any documentation clarifying the terms. I think "foregone" means that exercism as a whole has decided that the exercise was actually a bad idea and has completely removed support. I think "deprecated" means that the exercise was formerly implemented for the track, but then removed as a bad idea for the track. It may still be appropriate for other tracks. If that understanding of the statuses is correct, then once configlet is updated appropriately, we should revert this PR. If that understanding is incorrect, then we should reevaluate given the new information. |
|
Here are my conceptions, which are also entirely empirical rather than based on any documentation. It seems there is a need for some documentation.
The only info I find in docs are: |
|
Haha, agree that some more documentation would be useful. Whether or not
I have no idea if the exercism website actually implements that UX. If it is an exercism goal to present that UX, then we should revert this PR once configlet properly supports it. If not, then it doesn't really matter, so we may as well retain the status quo. |
As per this discussion on Slack: https://exercism-team.slack.com/archives/GC3K95MRR/p1557390406008000 **coriolinus [May 9th at 4:26 AM]** Does anyone here know exactly what the distinction between `deprecated` and `foregone` exercises is? There's some discussion in exercism/rust#830 which revolves around the semantics of those terms, and it would be good to have an understanding of the overall team intent. (edited) _11 replies_ **NobbZ [23 days ago]** `deprecated` exercises have been implemented in this track previously but shall not be served to students anymore. Their implementation is usually kept in the repository for historical reasons. Also students know those exist could download those exercises through the CLI. `foregone` exercises are not implemented in the track and probably will never because they do not make sense in the context of the track. There is no implementation for those available. **coriolinus [23 days ago]** If an exercise is deprecated, and the track maintainers remove the `exercises/foo` implementation, and a student attempts to get the exercise with the CLI, what happens? **NobbZ [23 days ago]** I have no clue. But `configlet lint` should fail if an exercise is deprecated and not available IIRC. **coriolinus [23 days ago]** it does! And that's been the cause of some issues for Rust recently, because it wasn't otherwise documented that deprecated exercises must have their implementations preserved. It looked like configlet was improperly failing to ignore implementation checks for deprecated exercises, instead of properly ensuring they stuck around for posterity. Do you suppose that it would be acceptable to redefine things such that students can no longer download deprecated exercises from the CLI? **NobbZ [23 days ago]** No **NobbZ [23 days ago]** Sometimes I like to (re)do them (edited) **ihid [23 days ago]** Deleting an exercise would delete everyone's solutions (foreign key constraints etc). So deprecated exists to be non destructive but also to imply that maintainers will no longer be updating/supporting that exercise. **coriolinus [23 days ago]** Ok, this clarifies things. Thanks all! It would be very nice if this were part of the public maintainer documentation, but that's probably not a particularly high priority. **ihid [23 days ago]** Where would this go? **coriolinus [23 days ago]** not sure. Probably https://github.com/exercism/docs/blob/master/language-tracks/configuration/track.md or https://github.com/exercism/docs/blob/master/language-tracks/configuration/configlet.md language-tracks/configuration/configlet.md exercism/docsAdded by GitHub
As per this discussion on Slack: https://exercism-team.slack.com/archives/GC3K95MRR/p1557390406008000 **coriolinus [May 9th at 4:26 AM]** Does anyone here know exactly what the distinction between `deprecated` and `foregone` exercises is? There's some discussion in exercism/rust#830 which revolves around the semantics of those terms, and it would be good to have an understanding of the overall team intent. (edited) _11 replies_ **NobbZ [23 days ago]** `deprecated` exercises have been implemented in this track previously but shall not be served to students anymore. Their implementation is usually kept in the repository for historical reasons. Also students know those exist could download those exercises through the CLI. `foregone` exercises are not implemented in the track and probably will never because they do not make sense in the context of the track. There is no implementation for those available. **coriolinus [23 days ago]** If an exercise is deprecated, and the track maintainers remove the `exercises/foo` implementation, and a student attempts to get the exercise with the CLI, what happens? **NobbZ [23 days ago]** I have no clue. But `configlet lint` should fail if an exercise is deprecated and not available IIRC. **coriolinus [23 days ago]** it does! And that's been the cause of some issues for Rust recently, because it wasn't otherwise documented that deprecated exercises must have their implementations preserved. It looked like configlet was improperly failing to ignore implementation checks for deprecated exercises, instead of properly ensuring they stuck around for posterity. Do you suppose that it would be acceptable to redefine things such that students can no longer download deprecated exercises from the CLI? **NobbZ [23 days ago]** No **NobbZ [23 days ago]** Sometimes I like to (re)do them (edited) **ihid [23 days ago]** Deleting an exercise would delete everyone's solutions (foreign key constraints etc). So deprecated exists to be non destructive but also to imply that maintainers will no longer be updating/supporting that exercise. **coriolinus [23 days ago]** Ok, this clarifies things. Thanks all! It would be very nice if this were part of the public maintainer documentation, but that's probably not a particularly high priority. **ihid [23 days ago]** Where would this go? **coriolinus [23 days ago]** not sure. Probably https://github.com/exercism/docs/blob/master/language-tracks/configuration/track.md or https://github.com/exercism/docs/blob/master/language-tracks/configuration/configlet.md language-tracks/configuration/configlet.md exercism/docsAdded by GitHub
* add enums concept exercise closes exercism#830 * Update languages/exercises/concept/enums/src/lib.rs Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/tests/enums.rs Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/src/lib.rs Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * invert the sense of enums concept exercise * Update languages/exercises/concept/enums/.docs/after.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/.meta/design.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/.meta/design.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/.meta/design.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * add description for other variant Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
* add enums concept exercise closes exercism#830 * Update languages/exercises/concept/enums/src/lib.rs Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/tests/enums.rs Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/src/lib.rs Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * invert the sense of enums concept exercise * Update languages/exercises/concept/enums/.docs/after.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/.meta/design.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/.meta/design.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/.meta/design.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * add description for other variant Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
* add enums concept exercise closes exercism#830 * Update languages/exercises/concept/enums/src/lib.rs Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/tests/enums.rs Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/src/lib.rs Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * invert the sense of enums concept exercise * Update languages/exercises/concept/enums/.docs/after.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/.meta/design.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/.meta/design.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/.meta/design.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * add description for other variant Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
* add enums concept exercise closes exercism#830 * Update languages/exercises/concept/enums/src/lib.rs Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/tests/enums.rs Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/src/lib.rs Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * invert the sense of enums concept exercise * Update languages/exercises/concept/enums/.docs/after.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/.meta/design.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/.meta/design.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update languages/exercises/concept/enums/.meta/design.md Co-Authored-By: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * add description for other variant Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
The rust track had several deprecated exercises. As they were removed
from the list of exercises available to students some time ago,
#773 removed the actual exercises,
in order to clean things up. This produced a CI failure, but it was
overridden, because it was a configlet bug, not a real problem.
Overriding the CI failure was a mistake: I hadn't considered that
this would cause every CI job to fail from that point forward.
I opened exercism/configlet#160 fixing the
issue with configlet, but it has not yet been reviewed, and there
will be an unknowable amount of time before it is reviewed and
approved. In order to make configlet stop complaining and restore
CI functionality to the track, this PR moves the removed exercises
into the foregone list, which doesn't suffer the configlet bug.