Edit 18th June 2021 (original post was Monday, 1 February 2021): This thread is now very long. If you are learning about this project for the first time, then the key posts to read to understand our plans are listed on the project page in the dev docs. (It starts with this one!)
For some background on the project I am about to describe, please see my previous post. The time has now come to start writing about the changes we are planning to make with this project. We would like your feedback on whether these plans seems sensible, and hopefully you may be able to suggest some ways we can do things even better than we have thought of so far.
These are quite big proposals, so my plan is to post about it a little bit at a time. That certainly makes it easier for me to find time to write it, and I hope it makes it easier for you to read it and take it in. Of course, it does mean that as you read the first posts I am going to make, there will be lots of un-answered questions, so this may not work. This is a bit of an experiement, but based on thinking about how best to explain this.
In this first post, I am going to try to outline what is changing and what is not, which is summarised in this diagram:
Probably best to start in the middle of this diagram, in the box called core_question. The way I think about it, the Moodle question functionality can be broken down into two main parts. Only one of those two parts is going going to be changed by this project.
The half that will not change is the 'Question engine'. This is the part which manages what happens when questions are attempted. That is what happens to questions as students attempt quizzes (and other activities), and as teachers review the results and grade things. What happens does not just depend on the code in Moodle core. Almost all the specifics of what happens is controlled by plugins: Question types control what questions students are asked to solve, how they input their responses, and how that is graded; and Question behaviours control the sequence of interactions that a student has with a question. (One consequence of this is that we are hoping that this project will not cause a lot of work for developers who have made custom behaviour or question type plugins. Their plugins should just continue to work.)
Perhaps more importantly, the bit that will change is the 'Question bank'. This is the bit that deals with creating and editing questions, and keeping them organised and available for use. This part is changing completely, at least behind the scenes. However, from a user's point of view, some things will probably still look similar. I mean, basically we need to display a list of questions on screen for people to interact with. There are only so many ways that you can do that!
Exactly what the behind-the-scenes (and visible!) changes will be will have to wait for futures posts. This one is already getting too long - and I am aware that there are big green boxes on this diagram that I have not even started to explain.
The other part that will have to change are the activities that use questions. For example, the point at which you (as a teacher) are building your quiz by selecting questions to add from the question bank (or directly adding new questions to the quiz) will change. However, other parts of the quiz won't change (for example what students see as they attempt it, what settings are available, the reports, ...).
I am afraid that if you have created a custom activity plugin that users questions (in the diagram I gave StudentQuiz as an example) then you will have some work to do to update your plugin. This is unavoidable. However, hopefully we can build a new Question bank API that is easy to work with.
I hope that gives a rough outline of which bits we are focussing on changing, and which we are not. This is already a very large project, and we want to be able to complete it. This means we are being careful to manage the scope of our plans. However, Moodle is open source, and 100+ people contribute to this release. Just because we are focussing on certain areas, that does not prevent other people from making other improvements at the same time. In fact, because we are carefully focussing our big change in certain areas, that leave more other areas un-affected so that other people can work in parallel while we are making our big changes.