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
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
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
**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
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
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.?