> For me, I don't want all the old student data mixed in with the new student data. ...
> Is there some reason why you need to keep all that data in the course with the new students?
a) It's logically one data set - a student has taken some courses. There is not an "old student" and a "new student" - it's the same student. To create two different students, new and old, is to declare a falsehood - to lie. Similarly, to keep the same student record and indicate that they have not taken a course which they actually have taken is a falsehood, it turns your DB to a BS.
b) In many practical cases it matters. Prerequisites are a common example - one should be able to see that students in Moodle 202 have taken Moodle 101, so deleting the records related to Moodle 101 is A Bad Thing (TM). Another practical example where it breaks is if there isn't a long break being semesters, such as courses offered monthly, quarterly, or yearly. You can't delete all of the current students in order to start a new term if they still need to access the course - for certificates, to check grades, etc. Overlapping terms would absolutely be completely prohibited by any of the workarounds suggested.
c) Removing information is in principle bad, because you don't know whether or not you may need that data in the future. Perhaps next year Bureucrat who controls yur budget wants to know the racial ratio of students who enrolled in course X, or the success rate of course Y. You can't justify your budget based on success rate because you've deleted the information. (Or at very least you've split it up, so you have to restore many old backups and manually calculate, rather than running one simple query.) The point here is that you don't know in advance what other needs one may have for the information, but we're living in the Information Age , so removing Information that you could just as easily keep is unwise. (Though you might of course CHOOSE to remove the information on purpose, that's a different thing from losing it accidentally as a side effect of a hack to let students who fail, or whose ceritifcation expire, enroll again.) The big winners today - Google, Facebook, etc. are all focused on data, data is a key asset, so throwing it away indiscriminately, rather than simply fixing a bug, is foolish in principle.
> I imagine you might have a course where people are continuously enrolling and completing the course rather than a rigid semester system.
In fact we have rigidly defined course terms, with clear start and end dates, yet as you surmised, the attempts limit in quiz breaks things because the dates aren't defined in exactly the same way as they are at OU, for example. We don't have long breaks between semesters for students to come in, get their certificates, check grades, etc. before we need to start enrolling for the next semester. Thus there's no time at which one could take a "backup" (not really a backup if it's the only copy) and delete everything.
I'm curious, I've seen a couple of workarounds or hacks proposed to get around the problem, but is there is any reason not to fix the problem and allow someone to take a course a year later or whenever? "You can delete everything" is hack, not a legitimate reason to prevent functionallity which otherwise works. When we have working code, why choose a workaround over a real fix?
I hope I don't come across as rude or anything. I'm kind of struggling to understand the relucatance to add a useful new OPTION. The extremely brief to no discussion that preceded commiting my patches in other Moodle modules is what I'm used to from my experience with Apache and other projects I participate in, when my patches only add new options, with no backwards compatibility concerns at all. (You can still chose to delete your data if you prefer.) I'm finding the culture, the way of thinking, of Tim and Quiz quite alien, but I'm trying to adjust. When I've submitted patches elsewhere, such as the Completion module, they've been quickly accepted with thanks since like this one, they don't effect anything if you choose to have the old behavior.
Even assuming that it WAS a good idea to force institutions to delete eveything before someone can retake a class they failed, I'm still struggling to understand how it could possibly be the responsibility of Quiz to control which classes people can take, so I'm having a hard time discussing it because I just don't understand that point of view at all.