Note: You are currently viewing documentation for Moodle 2.2. Up-to-date documentation for the latest stable version is available here: Question Engine 2:Implementation plan.

Development:Question Engine 2:Implementation plan: Difference between revisions

From MoodleDocs
No edit summary
No edit summary
Line 1: Line 1:
This page explains summarises the steps I need to do to make the changes.
This page summarises how and when these changes will be implemented.


Previous section: [[Development:Question Engine 2|question engine]].
Previous section: [[Development:Developing_a_Question_Type|Developing a Question Type]].


==Time scales==
==Time scales==


The Open University has asked me to work on this now.
The Open University has asked me to work on this now, but it is a large project.


Since this involves API changes it would be really nice to do it in Moodle 2.0. However, that may be unrealistic. When I expect this to be finished and when the Moodle 2.0 stable branch is created are currently both around the end of 2009, and it is impossible to say which will come first.
The goal by Christmas is to have
* a working implementation of the question engine core
* all the interaction models implemented
* convert almost all the core question types to the new API
* new code working in the question preview UI
* an accurate estimate of the scope of the rest of the work (by mid December).
Code will not be considered 'done' until it has complete PHP documenter comments and unit tests.


I will be implementing this as a branch in git, so the decision of which Moodle version to put it into can be made later.
Since this involves API changes it would be really nice to include it in Moodle 2.0. However, that may be unrealistic. When I expect this to be finished and when the Moodle 2.0 stable branch is likely to be created are currently both in early 2010, and it is still impossible to say which will come first.


==Relationship with OU Moodle==
==Relationship with OU Moodle==


One of the drivers for doing this is to reduce the differences between the OU's version of the quiz, and the standard version. This has gradually grown to the point where it can be considered a fork.
One of the drivers for doing this is to reduce the differences between the OU's version of the quiz, and the standard version.


The [[Development:quiz_navigation|quiz navigation improvements]] that are already in Moodle 2.0 were the first half of the un-forking.
The [[Development:quiz_navigation|quiz navigation improvements]] that are already in Moodle 2.0 were the first half of the process of putting OU quiz improvements into Moodle core.


The second change that needs to be merged into Moodle core is our replacement of the old Adaptive mode with the new Interactive mode. We originally did that while trying to make minimal changes to the quiz code, and the pain Mahmoud experienced while doing that was one of the things that got me thinking about this new design.
The remaining large OU-specific quiz code is improvements we made to Adaptive mode, turning it into what I am now calling the Interactive model. We originally did that while trying to make minimal changes to the quiz code, and the pain my colleague Mahmoud experienced while doing that was one of the things that got me thinking about this new design. This new proposal is a complete rewrite of the core of the question engine, so that customisations like Interactive model become easy.


However, because of that history, I first need to implement the new code in the OU's version of Moodle. Then I need to incorporate it into Moodle 2.0. I am proposing to do that by first back-porting all the other Moodle 2.0 quiz changes to the 1.9 branch (but don't panic, they will not be committed to the stable branch in CVS!). Then building a new version of OU Moodle quiz on top of that base, then putting the new code into Moodle 2.0. That will not be fun, but it is the way it has to be.
==Branching strategy==
 
Therefore, the new code is being implemented as a branch off the standard MOODLE_19_STABLE branch. I am maintaining this in a git repository http://timhunt.github.com/Moodle-Question-Engine-2/. Although this is a branch of Moodle 1.9, it is written with a view to being easy to port to Moodle 2.0 when the time comes. Also, the new code requires PHP 5.2, as Moodle 2.0 does.
 
The development will include a lot of the OU-Moodle improvements, but in due course there will remaining OU-specific customisations that will not be of interest to anyone else. They will be incorporated into an OU-only version of this code, but the goal will be to keep the size of this OU-specific changes as small as possible.
 
Separately, at some point, the new code will be re-based onto the Moodle 2.x code-base, for inclusion in a Moodle release.


==Task breakdown==
==Task breakdown==


Very rough list copied from a spreadsheet I have. This may not be comprehensible to anyone else.
My [http://github.com/timhunt/Moodle-Question-Engine-2/blob/new_qe/question/engine/todo.txt current task break down] lives in git with the code, since that is how I find it easiest to keep up-to-date. Note that this only shows tasks that remain to be done, so it is not helpful for estimating progress (unless you are prepared to do a lot of digging through git history).
<pre>
1. Finish this specification and estimates
2. Set up dev environment
3. Back-port quiz bits from 50da63e to 1.9 branch
4. Make the desired changes to the quiz.
4.1 Automated integration tests
4.2 New interaction model class and deferred, interactive and manual implementations
4.3 Update/split question type base class and truefalse
4.4 Database upgrade code
4.5 Split quiz_attempt class into question bit and quiz bit
4.6 New process responses code
4.7 New renderer classes
4.8 Each attempt builts on last, legacy adaptive and opaque models
4.9 New commenting code
4.10 Update quiz navigation code
4.11 New regrade code
4.12 Update quiz reports
4.13 New database table and editing form fields for hints
4.14 Update all other core question types
4.15 New backup code
4.16 Restore old backups code
5. Add back all the other ou-specific quiz changes
6. Merge the new code to Moodle 2.0 dev
6.1 New docs for question type authors
6.2 New docs for module authors
7. Test and bug fix in OU Moodle
7.1 Load testing framework
8. Test and bug-fix in Moodle 2.0 beta
</pre>


==See also==
==See also==


* Current work-in-progress: http://timhunt.github.com/Moodle-Question-Engine-2/
* Back to [[Development:Question_Engine_2|Question Engine 2]]
* Back to [[Development:Question_Engine_2|Question Engine 2]]


{{CategoryDeveloper}}
{{CategoryDeveloper}}
[[Category:Quiz]]
[[Category:Quiz]]

Revision as of 22:34, 3 December 2009

This page summarises how and when these changes will be implemented.

Previous section: Developing a Question Type.

Time scales

The Open University has asked me to work on this now, but it is a large project.

The goal by Christmas is to have

  • a working implementation of the question engine core
  • all the interaction models implemented
  • convert almost all the core question types to the new API
  • new code working in the question preview UI
  • an accurate estimate of the scope of the rest of the work (by mid December).

Code will not be considered 'done' until it has complete PHP documenter comments and unit tests.

Since this involves API changes it would be really nice to include it in Moodle 2.0. However, that may be unrealistic. When I expect this to be finished and when the Moodle 2.0 stable branch is likely to be created are currently both in early 2010, and it is still impossible to say which will come first.

Relationship with OU Moodle

One of the drivers for doing this is to reduce the differences between the OU's version of the quiz, and the standard version.

The quiz navigation improvements that are already in Moodle 2.0 were the first half of the process of putting OU quiz improvements into Moodle core.

The remaining large OU-specific quiz code is improvements we made to Adaptive mode, turning it into what I am now calling the Interactive model. We originally did that while trying to make minimal changes to the quiz code, and the pain my colleague Mahmoud experienced while doing that was one of the things that got me thinking about this new design. This new proposal is a complete rewrite of the core of the question engine, so that customisations like Interactive model become easy.

Branching strategy

Therefore, the new code is being implemented as a branch off the standard MOODLE_19_STABLE branch. I am maintaining this in a git repository http://timhunt.github.com/Moodle-Question-Engine-2/. Although this is a branch of Moodle 1.9, it is written with a view to being easy to port to Moodle 2.0 when the time comes. Also, the new code requires PHP 5.2, as Moodle 2.0 does.

The development will include a lot of the OU-Moodle improvements, but in due course there will remaining OU-specific customisations that will not be of interest to anyone else. They will be incorporated into an OU-only version of this code, but the goal will be to keep the size of this OU-specific changes as small as possible.

Separately, at some point, the new code will be re-based onto the Moodle 2.x code-base, for inclusion in a Moodle release.

Task breakdown

My current task break down lives in git with the code, since that is how I find it easiest to keep up-to-date. Note that this only shows tasks that remain to be done, so it is not helpful for estimating progress (unless you are prepared to do a lot of digging through git history).

See also

Template:CategoryDeveloper