-
-
Notifications
You must be signed in to change notification settings - Fork 5
Formalize the process for deprecating exercises #40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
So things I do see, which needs to be altered in the overal progress:
This are the things I do see right now which we need to handle at least, perhaps other people see other things? I can't tell much about how to do that stuff, since I am not involved in exercisms codebase and architecture at all. And also I am missing the necessary spare time to read into the source :( 1: In the process of adding |
@NobbZ has some very good point. I think that the CLI should indeed error. I don't really see how to merge iterations, the exercises are not exactly the same of course. |
Merging submissions and iterations is only valid for simple renames and exercises which happens to be the same (as happened with A thing that really bothers me, is that in situation as with I will generalize it a bit and describe the overal situation that bothers me:
What will U2 see, assuming that only this two users exist?
I really like that last one. It remains full discoverability of all submissions that have been happened so far and will be happen in the future. Also it does ensure that on deprecation of a deprecator its deprecationees(?) are still findable. |
This does not seem unreasonable to me. Any new problem will have a point at which it has no solutions. The readme for X3 should reference X1 and X2 which should still be individually accessible if the user wishes to go hunting for solutions. |
OK, but if we reference X1 and X2 in the readme of X3, we need to maintain them as completely separate and unrelated activity streams, which weakens the meaning of a deprecation. For me "deprecating X in favor of Y" can mean 2 things. Either we pretend X has never existed and we delete every reference to it, perhaps even poping it from users that solved it while not giving credits ofr Y, effectively forcing them to do Y again. The other way to read this, is to value former applications of X and tell on that pages that there is now Y prefered. This makes transition much more smooth (it can happen before all tracks have implemented Y) and values the time and effort people have already put on X. |
What if we make it so we don't translate old exercises, but automatically give people access to both the deprecated and the new exercise:
|
Which is more or less what I've said in
I think it is really important to not have any magic or silent conversion happening there but to be verbose about deprecation. It has to be the choice of a reviewer if he wants to take a look at submissions of a deprecated exercise, as well as it has to be the choice of a trainee to redo a deprecated exercise in form of its successor. |
@NobbZ I like the suggestions around the visual representations. Agreed on not having magic or silent conversion (though we have done that before in the case of point-mutations -> hamming. In that case it wasn't too terrible, I think, since it really was just a rename. |
I've added this issue to work towards supporting global deprecation: https://github.com/exercism/x-api/issues/139 |
The support for global deprecation is implemented in exercism/DEPRECATED.x-api#140. Since this is still unclear to many eg. exercism/javascript#250 (comment), should we document the entire deprecation process somewhere? Something which covers stuff like:
|
In addition to the various issues linked to above, I also found this one exercism/problem-specifications#129 |
I think we've got this sorted, since the new site handles deprecation a lot more elegantly. |
Sometimes we need to deprecate exercises. For example:
Probably other good reasons, too.
Anyway, doing this is a bit tricky, because:
acls
table in the database).Note that when we deprecate an exercise, it means that we don't automatically deliver it when someone says
exercism fetch $TRACK_ID
. However, people can always fetch it explicitly by sayingexercism fetch $TRACK_ID $PROBLEM_SLUG
. If they submit it, then it will go to the site. That said, nobody will see it, unless we migrate it.We should probably come up with a reproducible step-by-step process for deprecating problems and document it.
The text was updated successfully, but these errors were encountered: