[BLUEJ-474] Simple audit trail for projects
Regrettably, students copying each others' projects is pretty common. Most often, they just email a jar file, a zip file, use Dropbox, or simply exchange flash drives.
To help catch the cheaters, it would be nice if BlueJ recorded the username and machine name of the user somewhere in the project. I am thinking that the ctxt file for each class would be a good place to store it.
-
When a class is first created, store the username and machine name of the user along with a time stamp.
-
Every time the ctxt file is updated, also record the username, machine name, and timestamp (but also preserve the creation information). This effectively becomes the "last edit" information. Only one of these is kept -- it is overwritten every time the ctxt file is updated.
-
When a student copies the project to another computer or another user, a NEW entry is put into the ctxt file recording the username, machine name, and timestamp.
Here's what the data might (hypothetically) look like:
{noformat} creation="barry,barrys-mac,2013-04-03 18:45:34 PST" edit="barry,barrys-mac-2013-04-03 19:13:41 PST" copy="barry,barrys-laptop,2013-04-04 09:12:52 PST" copy="tom,toms-laptop,2013-04-04 09:17:08 PST" {noformat}
In this audit trail, Barry created the file and worked on it for about a half hour. Then he copied it to his laptop the next morning and about five minutes later, the files were copied to Tom's laptop.
When Tom turns in the project, it's obvious that Tom got a copy from Barry. (Shame on them!) However, Barry's audit trail won't have Tom's information in it and we'll be able to see who copied from whom upon compare the two projects.
We can keep the amount of information stored in the file to a minimum by only recording when critical information (username and machine name) changes and when the changes happened. Otherwise there's no need to continuously update the data stored there.
Issue metadata
- Issue type: Task
- Priority: Low