exercism / problem-specifications

Shared metadata for exercism exercises.
MIT License
327 stars 545 forks source link

[NOTICE] This repo is temporarily only accepting bug-fixes. #1560

Closed iHiD closed 4 years ago

iHiD commented 5 years ago

Over the last few months there have been a number of passionate debates in this repository about new exercises and changes to the existing exercises. Maintainers often have very opposed views and cannot reach a consensus. This has lead to lots of frustration from people who all want to make Exercism better, but disagree on how that should be done.

This is a clear sign that the product team have not done enough to communicate guidelines around how exercises should be structured and how this repository should be structured. The reason for this is that the product team don't know how exercises should be structured or how the data in this repository should be structured.

This repository (and exercises on Exercism in general) have evolved organically without much structure or thought. For V1, this was generally ok, but since V2, where exercises are part of learning pathways and where everything is a bit more complicated in general, this has now become a real problem. We in the product team therefore need to go away and do some proper work around understanding how exercises should evolve in Exercism. Once we've got some clarity on that, we can then start to put together some clarity around how this repository should work, and everyone can move forward, hopefully without the uncomfortable conversations that have been ongoing recently.

Therefore, for the time being, we are closing this repository to any new exercises, or any changes-of-substance to the canonical data. We will still accept bugfixes (if tests are wrong) and improvements to the copy around exercises, as long as they do not alter the substance of an exercise. If you would like to add a new exercise to your track, please do it as a track-specific exercise for now, and we can discuss generalising it into this repository further down the line.

I want to finish with a personal apology that I haven't realised this a bit earlier and stepped in before people ended up clashing over things. I'm excited about getting this to a really good place and making both the Tracks the best they can be, and ensuring that maintainers lives are as easy as possible.

kytrinyx commented 5 years ago

If you would like to add a new exercise to your track, please do it as a track-specific exercise for now, and we can discuss generalising it into this repository further down the line.

I want to second this. We are absolutely open to the tracks evolving!

Once we have a better handle on the product side of this, we can start working on generalizing any of the experiments that end up in individual tracks.

Of course: if there's an exercise that goes into one track, there's no reason why maintainers can't collaborate to put the exercise in multiple repos, but still at a track-specific level.

❤️ Thanks @iHiD

sshine commented 5 years ago

for the time being, we are closing this repository to any new exercises, or any changes-of-substance to the canonical data. We will still accept bugfixes (if tests are wrong) and improvements to the copy around exercises, as long as they do not alter the substance of an exercise

As I have noticed that PRs have started rolling in again (hooray), and that all these could be placed in the categories allowed in the above sentence, I assume that the problem-specifications repo is still in a state of emergency, but that some contributors increasingly send in improvements.

We in the product team therefore need to go away and do some proper work around understanding how exercises should evolve in Exercism. Once we've got some clarity on that, we can then start to put together some clarity around how this repository should work

I think a status update is due soon, as it's been 11 weeks since this statement was made.

I have some points that I'd like to make about organizing and voluntary work, but I'm unsure where to place them as I don't want to turn this notice into a discussion for which it was not intended. Perhaps, as part of making a status update you could also provide a place for a discussion. I think having one will show the amount of good will even among people who have disagreed about particulars.

iHiD commented 5 years ago

Thanks @sshine. We're aiming to release an update this week on how we're planning on evolving tracks in general terms, and a project we'll be launching to address many of the problems that have emerged.

wolf99 commented 5 years ago

Is there any indication yet for when this repo might accept exercises again?

sshine commented 5 years ago

I think it would be best if this repo was reopened for adding exercises, and introduce a mediator policy for when discussions get out of hand. While any of this work may lead to exercises that will be ditched down the line because the research project rethinks core tracks entirely, we lose a lot more than a couple of exercises by removing a hub for cooperating and communicating across the project, which this repo is.

Not doing so undermines the decentralized / federal structure that makes out most of Exercism.

TL;DR: I'd rather add new exercises and lose them later, than see cooperation whither.

iHiD commented 5 years ago

For those that missed it, I talked a little about our plans for tracks in this blog post last week.

As part of that we are going to be defining core exercises that have much more defined rules about what they should be and how they work across multiple tracks. We need to do a chunk of work to understand that before we can accept core exercises. I imagine we'll allow new side-exercises a lot sooner, but there are still questions that need answering about how things work across tracks before we do that too.

So in the interim, I'd suggest just adding exercises to your specific track(s) rather than here.

iHiD commented 5 years ago

TL;DR: I'd rather add new exercises and lose them later, than see cooperation whither.

While I agree with this in principle, there are fundamental problems over how exercises should be structured in this repo to work across multiple tracks, and every discussion results in the same debates. This itself has been extremely detrimental to Exercism and seen people leave as a result. So I'm not sure that reopening this until we have those answers will help Exercism, rather than harm it more.

sshine commented 5 years ago

Since Belgium went without an elected government for 589 days, I'm sure we could wait a little longer for this repo to come back into a fully functioning state. :-)

wolf99 commented 5 years ago

@sshine So far it's been 973 days since Northern Ireland had one. But I'm not sure if that they would be considered to be OK given the Brexit milieu... 🤔

@iHiD I don't mind if the repo is closed for new exercises, but the period of closure should probably not be open ended. For me this latter is what would kill off community involvement in a project. Is there an estimate, or hoped for timeline for the "chunk of work" you mention?

iHiD commented 5 years ago

For me this latter is what would kill off community involvement in a project.

So, this is something that confuses me a little, and therefore I feel like there's something I'm unaware of. A couple of people have said similar now.

From my POV, while I understand this repo is a central hub for discussing exercises, it's not intended to be a central hub for the community or for general discussion of Exercism. Either Slack or exercism/exercism (probably triaged to exercism/discussions) are what are intended for that. And also discussion on all the individual tracks (although I understand some might be lonely). If problem-specs represents something greater than the architectural "home of exercises", I would appreciate being told more about this so I can ensure that we don't lose something valuable by this delay.

Is there an estimate, or hoped for timeline for the "chunk of work" you mention?

In my head, there are two things to:

  1. Decide how core exercises are going to change. As part of the project I referenced, we'll then be inviting the maintainers to get involved in coming up with new exercises etc. So I imagine there will be lull, followed by a suddenly explosion of opportunity to reshape tracks. I imagine this "explosion" will be around Christmas time, but it might come earlier if things become obvious to us once we start working on it in depth (this often happens).
  2. Decide how this repo needs to change for side exercises. This is basically resolving #1553. Until that's done, I can't see much point in opening more issues here, as the same debate emerges each time, and it's clear that the community needs someone to make a decision here, as there are very opposite points of view, that are not reconcilable within the current schema of problem-specifications. So this needs me and @kytrinyx finding a day or two to really get into the meat of the complexity and come up with some possible solutions we're happy with, then discuss them with y'all, to get to a point that everyone is happy with. That involves me and Katrina finding a day or two together - and those days are always very overloaded with a myriad of different things that Exercism requires from us. If this is the priority, then it can be what we focus on next, but it would be helpful to understand why it's the priority, as it's not clear to me right now, why it is so essential. So more info there would definitely help.
SaschaMann commented 5 years ago

From my POV, while I understand this repo is a central hub for discussing exercises, it's not intended to be a central hub for the community or for general discussion of Exercism. [...] If problem-specs represents something greater than the architectural "home of exercises", I would appreciate being told more about this so I can ensure that we don't lose something valuable by this delay.

From my perspective: The exercises are one of the defining things of Exercism. Changes to them affect pretty much everything else that Exercism offers: what students can learn, what mentors can discuss with them, what common issues students and mentors encounter etc. So while it might be "just" the architectural home of exercises, every major¹ discussion here is also a general discussion about what Exercism is or should be. This repo is probably the place where the community can have the biggest direct impact/influence on Exercism as a whole, simply because exercises play such an important role.

¹ a small bugfix or rephrasing an exercise description probably doesn't fall under this but I think you know what kind of discussions I'm referring to.

iHiD commented 5 years ago

@SaschaMann Thats helpful. Thank you. And I agree.

Changes to them affect pretty much everything else that Exercism offers

And this is why there's so much passion in the discussions, because each affects both Exercism and all the tracks.

The key thing in all this is that we have the situation now where a change to an exercise can wreck someone else's work on the anatomy of their track (e.g. the exercise becomes too easy or hard for the point it's been designed for). Or a change can mean that the automatic-analysers that someone else has written no longer work, or give feedback that's wrong, totally confusing the student. These problems/situations didn't exist 12 months ago, because effectively Exercism was buckets of exercises grouped by language. But as we things have got more complicated, maintainer's needs for stability in exercises have changed, and so we need to work out this repo can work in a world where change is very risky. And this also makes people really passionate about each PR or issue in this repo, because the consequences to their tracks can be really dramatic.

So we need to find a way to keep contribution to this repo (and exercism) fun and painfree, while being aware that changes have really big effects across the site and infrastructure. And I think the only way to achieve that is with good guidelines and tooling. And to be clear, we'll come up with those guidelines and that tooling with the maintainers, but it's clear from recent discussions that there does need to be some leadership here in order to find a solution that considers the big picture of where Exercism is going along with the various (extremely valid!) opinions everyone holds and have been passionately explaining.

wolf99 commented 5 years ago

For me this latter is what would kill off community involvement in a project.

So, this is something that confuses me a little, and therefore I feel like there's something I'm unaware of. A couple of people have said similar now.

I can clarify that I meant this specifically in regards to this repository. However, the track repos do have some level of dependency upon this one (I don't envy the job of reconciling the tracks' new non-canonical exercises when this repo does start accepting exercises again 😬 ).

To get to why I feel like an open ended closure (I guess we have a ballpark of 12 months based on the blog post?) would be bad in general, is that it gives no indication to potential contributors of when they should return, or how to gauge the status of things.

Imagine the following scenario:

What would you do as the new contributor in this scenario? Honestly, if it were me I would view the thing like a ghost project and take my enthusiasm elsewhere.

Not trying to nail folks to a board on this, or change the priority over other things you may currently find more important. I'd just like to understand if there is an estimated timeline so I know when to come back and help out again on this particular front 😃

iHiD commented 5 years ago

@wolf99 Thanks. That's very helpful.

So a couple of points to pull out.

I guess we have a ballpark of 12 months based on the blog post?

I tried to give a little bit of a timeline things in my comment above. Before Christmas time for "core" exercises - and I expect these to probably be substantially different from current exercises. And I'd like us to start discussions with the maintainers about how we can continue to grow our "side" exercises once Katrina and I have had some time to discuss. I hope this later part will be in the next few weeks - but at the latest Halloween, when we're physically meeting to work on things.

What would you do as the new contributor in this scenario? Honestly, if it were me I would view the thing like a ghost project and take my enthusiasm elsewhere.

So this is probably the key different in my perspective. The route I see for most contributions is people using Exercism, becoming a mentor, joining Slack, and chatting there. Things are pretty active there, and we have ~3 new people every day sign up there looking to help. So for me, the entry point tends to be becoming a mentor and then getting more deeply involved through that. I don't think many people would look here as the first port of call, but maybe I need to update the OP of this issue to clarify that people should reach out on github.com/exercism/exercism if they get want to help but don't know where to start, etc.

I'd just like to understand if there is an estimated timeline so I know when to come back and help out again on this particular front 😃

I think there's another interesting dynamic here, which is things are really active in other areas of maintenance. We have ~15 or so Analyzers being developed and a similar amount of test runners, as well as a whole load of mentoring notes, so these are the main areas where people are heavily contributing to developing Exercism right now, and I think most maintainers already feel quite overwhelmed with all of that side of things, so their focus isn't really on adding new exercises etc, which is why pausing this for a while has felt ok to me. But I understand that for lots of other maintainers (especially on newer tracks) growth is important, and you're right to ensure that this to become a barrier for those people.

Not trying to nail folks to a board on this, or change the priority over other things you may currently find more important

I really appreciate you driving us to clarify things here and also that you're probably representing lots of peoples views who I don't know about or understand here, so please bang the drum as much as you feel necessary until you've got satisfactory answers :)

marnen commented 5 years ago

@iHiD:

The route I see for most contributions is people using Exercism, becoming a mentor, joining Slack, and chatting there.

That sure isn’t the route I’ve taken (granted, I’m only one data point). I use Exercism as a student and then joined the GitHub org to contribute some exercises in obscure languages. I think I’m on the mentor list too, but I’m barely aware that the Slack chat even exists—I’ve certainly never used it. Slack is probably very useful for the core team, but it’s not a good medium for folks like me who contribute to a project sporadically and at odd hours.

So for me, for all practical purposes, the Exercism project is the website/CLI and the GitHub repos, and so I have to agree with @wolf99 that it’s disconcerting to me to have one of the central repos locked on a “semi-indefinite” basis.

sshine commented 5 years ago

As you pointed out, @iHiD, exercism/exercism or exercism/discussions are alternatives, but the reasons I don't post there are:

Wrt. Slack:

If Exercism were a town, exercism/exercism would be the town square with nutters, traffic and loud noises, exercism/discussions would be the agenda'ed town meetings, and the tracks would be all the places in the town that are actually useful to visit. And for all the town hall workers, they're delegated to the town square while their offices are being renovated. Also, Slack is the McDonald's: They have tables, chairs and wifi, so surely it's like an office. You just have to buy something if you have to use the restroom. ;-D

@iHiD: I do, however, agree with your temporary lockdown: There's a structural problem that needs a lot of concentrated brainpower thrown at, and a dedicated research/working group does not sound bad at all. But the self-governance of discussing and approving PRs, brainstorming new exercises and even the failed attempts to tackle these structural problems, is something I'll miss as long as it's not here.

Aaand... sorry for wall of texting!

iHiD commented 5 years ago

My reference to Slack was purely that those people who are coming to Exercism for the first time now would not find it a ghost town. Those who were used to systems before we launched v2 might find it otherwise. I'm not arguing that Slack is better or worse than GitHub - they're different and both useful, just like mailing lists or IRC are useful too. We have a key point in our strategy document to centralise all these conversations into Exercism itself, and to turn that into the "town" with all it's composite parts.

Regarding exercism/exercism vs exercism/discussions. The point of getting everyone to post into exercism/exercism first is that it allows us to triage things. So support requests should go there, then are triaged to exercism/support, and confirmed bugs are triaged to exercism/bugs. I don't mind maintainers opening discussions in exercism/discussions, and maybe we can encode this into the description. But the fact that the public randomly open issues in any of hundreds of repos makes it impossible to manage, which is why we've made the decision to push everything into one place. Again, "support' will eventually be move within exercism itself, and GitHub can end up being a place purely to discuss PRs etc, so this problem goes away.

locked on a “semi-indefinite” basis.

I've given timescales a few times now. I've never said it's indefinite.

It's not clear to me what the question is that needs answering, so I'm going to leave it there.If someone has an outstanding question, please do reiterate it, and I will endeavour to answer it. But otherwise I feel like I'm just adding noise here now.

Teo-ShaoWei commented 5 years ago

I second this. I happened to be working on cleaning up the docs due to https://github.com/exercism/julia/issues/161 and feel that the template will benefit from more structure.

For example, some exercises here have bonus tasks. However, some track might want to also have their own bonus tasks. It will be better for user to see just one list of it. Should we have delegated the decision of bonus tasks to tracks and write the bonus tasks for spec inside some <slug>/.meta/dev_README.md for reference? Or make it so that bonus tasks have to be issued by the problem only?

All the best to the product team. Many hard decisions to make over here for sure!

coriolinus commented 4 years ago

I submit that it is time to close this issue and return to normal operations in this repo. Shutting down this repo for contributions has been an impediment to contributor morale in particular and to enthusiasm for Exercism in general.

We in the product team therefore need to go away and do some proper work around understanding how exercises should evolve in Exercism. Once we've got some clarity on that, we can then start to put together some clarity around how this repository should work, and everyone can move forward,

It's been 10 months with no substantive information about how this issue is progressing. The natural suspicion is that it is not progressing at all.

We know how v3 should work; progress is being made there. Concept exercises are shared to the degree possible, but in many instances are necessarily track-specific. Practice exercises, however, are still a natural target for standardization via this repo.

Are there actually any remaining pending questions which need to be answered? If yes, the core team should make answering them a priority; it does nobody any good to adapt to a permanent state of emergency. If no, then there's no reason to keep this repo locked down.

sshine commented 4 years ago

Another option is to close this repository and mark it as archived and create another repository with another mode of governance that is not victim to the two main problems of "too many chefs with veto power" and "if people disagree too much, nobody gets to cooperate."

If track maintainers are left to their own devices anyway, there is no reason why cooperation should not happen on any premise any subset of people agree to. So I posit that anyone who cares enough can simply create another repository and collect exercise templates in whichever way they like, and start accepting changes under some set of principles.

This would leave room for the incremental improvement of what practice exercises exists in a track, compared to the top-down redesign approach of v3 concept exercises. Surely both efforts can coexist?

Kindly, Simon

SaschaMann commented 4 years ago

If track maintainers are left to their own devices anyway, there is no reason why cooperation should not happen on any premise any subset of people agree to. So I posit that anyone who cares enough can simply create another repository and collect exercise templates in whichever way they like, and start accepting changes under some set of principles.

Another option would be that the exercise author (or their language team) would become code owner of that exercise and have the final say on changes to it. It would be quite hard to do retroactively but at least it would unblock new exercises from being added to problem-specs.

(This might be better in a different issue)

iHiD commented 4 years ago

tl;dr Thank you for your thoughts, but I don't think anything has changed that would solve the problems that caused this in the first place. and the slow progress in many tracks for v3 makes me extremely reluctant to want to split focus even more. Once we get closer to the launch of v3 we can solve this problem.


I submit that it is time to close this issue and return to normal operations in this repo.

As nothing has changed other than a few of the contributors who were frustrated having now given up and left, I don't feel like there is any change that would indicate this issue should change.

Are there actually any remaining pending questions which need to be answered?

Yes. All the original questions.

If yes, the core team should make answering them a priority; it does nobody any good to adapt to a permanent state of emergency.

I don't think this is more of a priority than our work on launching v3, which in itself removes many of the problems that this repo faces (e.g. no exercises here will be Core Exercises, which is where a lot of at least one of the major problematic areas is founded).

Shutting down this repo for contributions has been an impediment to contributor morale in particular and to enthusiasm for Exercism in general.

We have a Exercism-wide project that is desperate for contributors creating exercises, which needs as much focus and energy given to it as possible. If people have exercises to contribute, then there are dozens of tracks hoping to have exercises written. There is huge value in one Concept Exercise right now, there is little comparable value in one extra Practice Exercise. I don't see any logic in splitting people's focus or energy further. Right now Exercism needs people to do something specific. If you want to help Exercism then the way to do it is to invest time into making Concept Exercises. Once we have got over that line, things can return into a more "maintenance" state as things were before. Until that point we need focused contributions in v3.

If people feel like this repo is more important than preparing for v3, then I've clearly not communicated something well enough.


@SaschaMann That was vaguely the idea that Erik and I came up with when we spent a day in person focussed on this, but its fraught with complexities.

@sshine I've also thought about something similar, although with forks at the exercise level not the repo level. Maybe forks of exercises (that are maintained in here) and tracks choosing the fork they want.

This would leave room for the incremental improvement of what practice exercises exists in a track, compared to the top-down redesign approach of v3 concept exercises. Surely both efforts can coexist?

Not really. As one takes away from the other. And we're desperate for people to contribute to v3.

Sidebar: I don't think v3 is any more top-down. Tracks can create whatever exercises they like - those are not dictated to them. We just have a spec that needs conforming too that's different and more involved than the simpler Concept Exercise spec.


To everyone: I'm not going to shift on this for now, so please let's not debate it. I'd appreciate that.

I have zero spare energy to try and solve the problems in this repo and am not going to make fundamental changes to how it works without significant thought. Once we get to a point where maintainers have momentum on creating v3 exercises, I'll be able to shift my energy back to things like this - but for now all my time is used trying to make the contribution process easier, so that we can get those tracks on track (excuse the pun).

sshine commented 4 years ago

To everyone: I'm not going to shift on this for now, so please let's not debate it. I'd appreciate that.

I was not trying to convince you of anything.

With what wording we choose to label a repository as closed, perhaps the difference is small.

the slow progress in many tracks for v3 makes me extremely reluctant to want to split focus even more [...] Once we get closer to the launch of v3 we can solve this problem.

one takes away from the other

If Exercism v2 and v3 were the only two things in the world, yes.

I don't have time for v3, since it involves curriculum design.

I do have time for v2, since it involves tweaking what we have.

I hope you find enough resources to progress with v3 for some high-traffic tracks to justify discouraging cooperating on Practice Exercises, since this is a big driver for the organic growth of contributors. Perhaps v3 just as much, but I wouldn't know.

I have zero spare energy to try and solve the problems in this repo and am not going to make fundamental changes to how it works without significant thought.

My proposal wasn't that you should try to solve the problems in this repository.

My proposal was that someone else should try and solve similar problems outside of it.

This is the power of open source and decentralized version control.

iHiD commented 4 years ago

I don't have time for v3, since it involves curriculum design.

It doesn't. This where so many tracks are getting unstuck. There are lots of exercises ready to be ported to all languages on a range of topics. Tracks shouldn't be trying to design everything up front as it's a huge painful job. Instead they can just start chipping away at adding Concept Exercises.

I do have time for v2, since it involves tweaking what we have.

There is nothing stopping anyone from continuing working on their v2 tracks. Lots of people have continued to do that, and that does not rely on this repository accepting new content. This repository simply simplifies that. If you want to keep improving a track, that's brilliant, but I don't want to have to moderate large-scale debates here, which is where this repo got to. So for now, that's on pause.

I was not trying to convince you of anything.

I know. But there are many people who will read this thread and have strong opinions, and I don't want to spend a day debating it, so I was letting people know that it wasn't worth their time trying to have that discussion at this time.


Simon, it's great that you and others want to push forward with improving the existing tracks. It's a shame the discussions in this repo got to the point where I had to pause this - I didn't do that lightly and the decision came out of what was happening (e.g. maintainers quitting over the debates here), not out of some pre-conceived idea that I had. We will get this repo open again in some form. In the meantime if you want to keep improving the existing exercises in your track repo, that's awesome, and if you want to port some exercises to your tracks for v3 (or if you have time add some new ones, which we're trying to make a very quick and easy process) then that's great too. All of those things are hugely appreciated.

SleeplessByte commented 4 years ago

There is nothing stopping anyone from continuing working on their v2 tracks

(We've been pushing small fixes like these directly to javascript and typescript and I recommend everyone to do the same :slightly_smiling_face: If it's broken/can be improved for your track, do it! :smile:)

sshine commented 4 years ago

one takes away from the other

If Exercism v2 and v3 were the only two things in the world, yes.

I do have time for v2, since it involves tweaking what we have.

I don't have time for v3, since it involves curriculum design.

It doesn't. [...] lots of exercises ready to be ported to all languages [...] Tracks shouldn't be trying to design everything up front [...]

This was not an initiation from my side into a discussion of what I think is difficult about v3; it was an argument against saying "one takes away from the other" using myself as an example, so disregard my particular argument; it could have been any reason. I think this statement is not true, and so is not warranted as an argument in the present context.

I should have added more explicit quantification; since, for me, it involves curriculum design. I understand the choices that were made, and I think it has a great additive effect across tracks that are alike. Besides curriculum translation across paradigms and idioms being difficult, adding some fun exercise that appears marginally better than some existing exercise, is easy, for me.

I won't take more of your time as I think that is only reasonable to the extent that one contributes. :)

iHiD commented 4 years ago

Those of you who are passionate about us getting this repo back open ASAP but don't attend the video calls will be interesting in the discussion of problem-specs we had this week: https://youtu.be/IiUGMzaUNKQ

Conversation on problem-specs starts at around 39mins in.

ErikSchierboom commented 4 years ago

We're in the process of re-opening the Problem Specifications repo: https://github.com/exercism/problem-specifications/issues/1674

iHiD commented 4 years ago

This repo is now reopened. Thank you all for your patience.

Details at https://github.com/exercism/problem-specifications/issues/1686