Hello All,
I have been putting some thought (and code) into how LS2.0 should handle anonymous surveys. While there are many scenarios under which an anonymous survey can be taken/given I believe they all boil down to 2 scenarios.
1. Anonymous Survey – these are open to the world, the users are truly anonymous.
2. Pseudo-anonymous Survey – this survey is ‘assigned’ to a group of users in the LS2.0 system. These users must authenticate with the system to validate that they are allowed to take the survey. The results of the survey are recorded in a pseudo-anonymous fashion. This means outside of manually digging through the DB no one will be able to identify which set of responses belongs to which user. Ultimately the responses can be linked to a user. The reason that this is needed is so the assigner can be informed as to who has not yet taken the survey. The results will never indicate how any user of the group answered the questions, only if they have not taken the survey.
**Note:: A survey can only ever be anonymous or not anonymous, it can never be both, thus the property indicating whether a survey is anonymous belongs to the survey.
**Note:: A survey that is anonymous can only ever be Anonymous or Pseudo-anonymous, never both.
How to distinguish an Anonymous Survey from a Pseudo-anonymous Survey.
1. Anonymous Survey – The survey is marked as anonymous by setting the ‘anonymous’ property on the survey. No assignments exist for this survey.
2. Pseudo-anonymous Survey – The survey is marked as anonymous by setting the ‘anonymous’ property on the survey. This survey has assignments to select groups, include the ‘all’ group which would indicate the survey is anonymous but you must be registered with LS2.0 to take it.
**Note:: Why can’t they be both Anonymous and Pseudo-anonymous? If we allowed them to be both anyone attempting to take the survey would first have to be prompted to login even if they do not have an account with LS2.0. This would need to happen so the system could evaluate just how anonymous the results need to be, we would not want a user who needs to take the survey via a group assignment not to get ‘credit’ for taking the survey because we did not prompt them to first authenticate. On the other hand if the user does not have an account on LS2.0 we do not want them to first try to authenticate because, well, that makes no sense.
How Anonymous Surveys and Pseudo-anonymous Surveys are handled by the LS2.0 system.
When a user follows a link to an anonymous survey they system will first validate that this survey is in fact marked anonymous. Then it will check to see if any assignments exist for this anonymous survey.
If no assignments exist the system generates an anonymous random account and drops the user into the survey. Once the user has completed the survey the user’s session is cleared (logging them out) and then depending on if a ‘track back url’ was provided the system returns the user to the location they invoked the survey from or sends them to the LS2.0 home page.
If assignments exist the system prompts the user for login credentials. Upon validation of those credentials and validation that the user is in a group which is assigned to the anonymous survey a pseudo-random account is created (how this is done it still up in the air, the basic requirement is that the responses need to somehow track back to a user such that they can be included amongst the users who have successfully taken the survey) and the user is dropped into the survey. As with the previous scenario if a ‘track back url’ was provided the system logs the user out an returns them to the location they invoked the survey from or the system does not log them out and send them to their LS2.0 home page.
Comments, suggestions, problems, etc.?