TL;DR: if you accept the pull request with the new exercise configuration defaults then your track will be included in the nextercism prototype. If you want your track to feel like it really fits into the new prototype, then choosing a handful of core exercises and making these prerequisites for optional exercises will make it amazing.
Background
In #159 we hammered out the details of the new exercises structure in config.json. I've opened pull requests in all the tracks with defaults for all exercises (see tracking issue in exercism/meta#16). Additionally we're trying to figure out how to best manage exercise topics (#167).
@nicolechalmers has been working on designs and wireframes for the Exercism redesign for several weeks now, and recently @ccare and @iHiD started building a prototype to explore those designs. We hope to have something ready for maintainers and contributors to try out in the next couple of weeks.
One of the key differences in the new prototype is how we're structuring exercise progression. Instead of a track consisting of a long, linear chain of exercises to be completed in order, there will be a short, linear chain of core exercises that are required in order to complete the track, each of which will unlock a number of optional exercises that can be completed in any order (or not at all).
Preparing for launch
So! This is where it gets exciting.
By default, if you accept the pull request with the default exercise configurations, then your track will be included in the nextercism prototype. If no exercises in a config.json have been marked as core, we pick core exercises automatically, meaning your track will have the following behaviour:
- the first 8 exercises in the file become core
- all other exercises are optional and can be done without completing any prerequisites
As soon as you update one exercise to be core, we will then respect the core field in the config.json.
For each track, we are aiming for between 8 and 20 core exercises. If your track has 100 exercises, then we'll ideally have ~15 core with each unlocking 5 or 6 optional exercises. If you have fewer than 20 exercises, then prioritize choosing a fun and useful core pathway of 8-10, and then each can unlock 1 or 2 optional exercises.
A great core exercise:
- is different from all the other core exercises
- has many possible approaches/solutions
If you have some exercises that seem more popular than others, then they might be a good starting point for core exercises. Eventually we would like to make it so that a track broadly covers the language features and standard library, but that will take more thought and work.
So for now, just picking a set of core exercises and deciding what unlocks what is a great start.
A few nitty-gritty details
If you have topics and difficulties set, then you could make a first pass at guessing 'core' by taking the simplest exercise that introduces a topic, and making that core. Then make all the other exercises for that topic unlocked by that core exercise. This is in no way perfect or automate-able but it could give you a starting point for discussion.
Try to have 3 or so exercises that are core: false and unlocked_by: null. These will become immediately available to people after they submit their first iteration of the first core exercise. That way people will have some extra exercises to work on while they wait for feedback.
Aside from those initial optional exercises, all other optional exercises (core: false) should be unlocked_by the slug of a (a single) core exercise.
As you implement these changes, it would be great to hear you report back here what you found interesting or difficult, or what insights you had, or what process you used to make the change. This can help other track maintainers make the change in their track.
TL;DR: if you accept the pull request with the new exercise configuration defaults then your track will be included in the nextercism prototype. If you want your track to feel like it really fits into the new prototype, then choosing a handful of core exercises and making these prerequisites for optional exercises will make it amazing.
Background
In #159 we hammered out the details of the new
exercisesstructure inconfig.json. I've opened pull requests in all the tracks with defaults for all exercises (see tracking issue in exercism/meta#16). Additionally we're trying to figure out how to best manage exercise topics (#167).@nicolechalmers has been working on designs and wireframes for the Exercism redesign for several weeks now, and recently @ccare and @iHiD started building a prototype to explore those designs. We hope to have something ready for maintainers and contributors to try out in the next couple of weeks.
One of the key differences in the new prototype is how we're structuring exercise progression. Instead of a track consisting of a long, linear chain of exercises to be completed in order, there will be a short, linear chain of core exercises that are required in order to complete the track, each of which will unlock a number of optional exercises that can be completed in any order (or not at all).
Preparing for launch
So! This is where it gets exciting.
By default, if you accept the pull request with the default exercise configurations, then your track will be included in the nextercism prototype. If no exercises in a
config.jsonhave been marked as core, we pick core exercises automatically, meaning your track will have the following behaviour:As soon as you update one exercise to be core, we will then respect the core field in the
config.json.For each track, we are aiming for between 8 and 20 core exercises. If your track has 100 exercises, then we'll ideally have ~15 core with each unlocking 5 or 6 optional exercises. If you have fewer than 20 exercises, then prioritize choosing a fun and useful core pathway of 8-10, and then each can unlock 1 or 2 optional exercises.
A great core exercise:
If you have some exercises that seem more popular than others, then they might be a good starting point for core exercises. Eventually we would like to make it so that a track broadly covers the language features and standard library, but that will take more thought and work.
So for now, just picking a set of core exercises and deciding what unlocks what is a great start.
A few nitty-gritty details
If you have topics and difficulties set, then you could make a first pass at guessing 'core' by taking the simplest exercise that introduces a topic, and making that core. Then make all the other exercises for that topic unlocked by that core exercise. This is in no way perfect or automate-able but it could give you a starting point for discussion.
Try to have 3 or so exercises that are
core: falseandunlocked_by: null. These will become immediately available to people after they submit their first iteration of the first core exercise. That way people will have some extra exercises to work on while they wait for feedback.Aside from those initial optional exercises, all other optional exercises (
core: false) should beunlocked_bythe slug of a (a single) core exercise.As you implement these changes, it would be great to hear you report back here what you found interesting or difficult, or what insights you had, or what process you used to make the change. This can help other track maintainers make the change in their track.