Skip to content

Forego formerly deprecated exercises#830

Merged
coriolinus merged 1 commit intoexercism:masterfrom
coriolinus:forego-deprecated
May 9, 2019
Merged

Forego formerly deprecated exercises#830
coriolinus merged 1 commit intoexercism:masterfrom
coriolinus:forego-deprecated

Conversation

@coriolinus
Copy link
Copy Markdown
Member

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.

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.
@coriolinus coriolinus requested a review from petertseng May 8, 2019 20:20
@coriolinus coriolinus self-assigned this May 8, 2019
Copy link
Copy Markdown
Member

@petertseng petertseng left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

@coriolinus
Copy link
Copy Markdown
Member Author

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.

@coriolinus coriolinus merged commit 9fba2ff into exercism:master May 9, 2019
@coriolinus coriolinus deleted the forego-deprecated branch May 9, 2019 06:00
@petertseng
Copy link
Copy Markdown
Member

Here are my conceptions, which are also entirely empirical rather than based on any documentation. It seems there is a need for some documentation.

Foregone is a track-local decision: the track maintainers decide the exercise should not be implemented for the track.

Deprecated is also a track-local designation, which is similar to foregone in that we don't want students to do the exercise... but they were implemented at some point in time, and kept for... historical reasons? I have no idea.

The only info I find in docs are:

@coriolinus
Copy link
Copy Markdown
Member Author

Haha, agree that some more documentation would be useful.

Whether or not foregone exercises are a track-local or external decision, I think there is value in distinguishing them from the deprecated list. Ideally, I would want the following UX:

  • foregone exercises never appear in the exercise list
  • deprecated exercises are not available for students who have not already submitted solutions, but students who have already completed them may still see their solutions and any comments, mentoring, etc on them.

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.

rpottsoh added a commit to exercism/legacy-docs that referenced this pull request Jun 2, 2019
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
rpottsoh added a commit to exercism/legacy-docs that referenced this pull request Jun 2, 2019
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
ErikSchierboom pushed a commit to ErikSchierboom/rust that referenced this pull request Jan 26, 2021
* 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>
ErikSchierboom pushed a commit to ErikSchierboom/rust that referenced this pull request Jan 27, 2021
* 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>
ErikSchierboom pushed a commit to ErikSchierboom/rust that referenced this pull request Jan 29, 2021
* 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>
ErikSchierboom pushed a commit to ErikSchierboom/rust that referenced this pull request Jan 29, 2021
* 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants