When the randomizable FITB sub-project was begun, a decision was made to restrict the option to #exercise, primarily to ensure that there was a localized focus on behavior. I hope to post an update and documentation this week so that it can be more publicly known.
In the process of writing the documentation, I've been thinking about the restriction to #exercise. I think it should be relatively straight-forward to open to other exercise-like environments (project/activity/exploration/investigation), but #task seems a little trickier because presumably tasks are linked with other related tasks.
I think there is a technical hurdle for Runestone Components to deal with randomization across multiple related components (tasks). I see two basic strategies right now: (1) Each task is provided the same seed for the random number generator and so each task regenerates the necessary variables or (2) The parent block controls the seed, underlying environment variables are affiliated with the parent block, and components reference variables through the parent.
I think option (1) is easier to implement. Individual component behavior would be essentially the same as currently exists. The complication is that the seed control and rerandomization needs to be at the parent's level, which does not actually have an associated Runestone Component. Maybe the first/ component in the chain is what controls the seed/rerandomization?
Option (2) feels more holistically correct. There would be only one underlying environment of variables. Individual components would not be standing on their own, and that feels like a departure from current philosophy. I think there is similar difficulty in figuring out how related components are informed of a re-randomization for both methods.
If there was the ability for an exercise with multiple tasks to be dynamically generated, where would it make the most sense to put the control to be able to re-randomize? It doesn't feel to me like this belongs to a single component (i.e., single task), which means the control is somehow outside of the associated Runestone Components.
- Brian