There is wide support for separating the question bank from quiz taking but there hasn't been any progress in the code yet. That's because it's quite complicated and will require consensus on how to proceed. The Quiz module in its original design was not intended to have LMS features but has slowly evolved that way over time. Unfortunately, the original structure can bend only so far.
I propose that with Quiz 4.x we allow a blank slate for the design of the data and object structures. mbutcher's refactoring of the question types into OO has been great. Let's do that sort of treatment on the whole module. If you were to write the quiz module today, how would you do it differently? Well, we can do that.
Backward compatibility is an important concern. Because there are interchange formats for quiz and question data, we can achieve that by having a robust import and export system, which we want anyway. So even if the DB changes in incompatible ways between 3.x and 4.x, the upgrade path can be simple: 1) Export all quizzes from 3.x; 2) uninstall 3.x; 3) install 4.x; 4) reimport.
The QTI (Question Test Interoperability) spec from IMS provides a good model for quiz entities and actors:
http://www.imsglobal.org/question/qtiv2p1pd2/imsqti_oviewv2p1pd2.html
They also have a page we can use to ground/define the terms:
http://www.imsglobal.org/question/qtiv2p1pd2/imsqti_infov2p1pd2.html#ter...
Adopting the QTI model should allow the module to parse and store all the data from imports from any format, even if the Drupal Quiz module can't make use of them. More importantly, it provides a flexible structure for implementing these other features over time without resorting to big changes.
What do people think of this? What are ways to go about it?
One way to go about it is to start pulling the question item definitions and banking out of Quiz and let Quiz focus on the Interactive Assessment and Reporting functionality. There might then be an Assessment Item Bank module that the Quiz module depends on. Alternately, Quiz could become the storage area and a new module Interactive Assessment or something could pull out the features that define instances of use of quizzes.
This will probably be a long conversation. I hope this issue ticket serves to help organize it.
Comments
Comment #1
turadg commented(duplicate comment. unable to delete.)
Comment #2
turadg commentedI'm researching ATutor's design to see whether it serves as a good model for Quiz. Here's a helpful diagram of its DB model:
http://help.atutor.ca/developer/database.gif
Since there have been no comments on this issue, I take it that there's not a lot of support for this idea. Talking with Sivaji on IRC, I realize a deep refactoring won't be appropriate for 4.x. Maybe 5.x on Drupal 7 or something, when the new APIs of D7 make a big code audit more valuable.
In the meantime, I'll write smaller more focused feature ideas on separate tickets.
Comment #3
mbutcher commentedI would definitely support a big re-factoring project for Quiz 5, perhaps coinciding with an update to Drupal 7. I just don't want it to get in the way of sivaji's Drupal 4 SOC project.
The main feature I would like to see is the de-coupling of the quiz from the quiz-taking process. We've talked about that numerous times in IRC, and I'd certainly endorse any efforts to refactor along those lines.
Comment #4
turadg commentedmbutcher, I agree. I'm marking this for Quiz 5.x. I have to focus on less ambitious/risky changes for the next few months.
I'll still post notes here with ideas and references that could inform a refactoring effort.
Comment #5
djdevinI would say this is fixed in 7.x-5.x.