Here is questionnaire history in Designer:
Helpful, but could be made more helpful by:
- Showing what changed to what. Currently, history shows which objects changed, but not neither what about them changed nor what the previous and current sates of changed elements are. Basically, I’m looking for a rudimentary diff engine: tell me what changed, from what to what.
- Showing (optionally) why the change was made. Currently, history tells me which object changed, but not why. To know this, one needs to keep scrupulous records outside of SuSo of what changed in SuSo and why. Basically, I’m looking for very basic (optional) commit messages.
To do this, a few proposed changes. The first set is, in my view, necessary. The second set is simply nice to have.
The necessary:
- Allow the user to post an optional change description (aka commit message) upon pressing Save. This would allow users to describe both what they changed and why they changed it. If what they changed cannot be easily exposed/displayed in the UI, this change would be sufficient for getting the job done. This could be implemented in two complementary ways. In the UI, add an overflow menu to the Save button that, when clicked, displays the option “Save with comment”. In the keyboard shortcuts, add a shortcut that maps to this action (e.g., Shift+Ctrl+S)
The nice to have:
- Expose in history the diffs between the each entry in history and the entry that immediately precedes it. Changes would be one of two types: additions or deletions. These changes would need to reference the property and the change (e.g., property: answer options, answer option: deleted “Yes”; added “Heck yes!”). Having anything, even if it’s somewhat hard to read, is better than nothing at all. This would lighten the load on user-written change messages: users would need only to describe why they changed something, not also what they changed.
- Create a hash for each change and a link to that change entry. This would allow (advanced) users to link changes in SuSo to a repository of bug requests/changes in requirements (e.g., Trello board, ticketing system, etc.). That is, users could point via this link from a requested change to a change made.
- Produce a compilation of changes since last import of questionnaire on HQ. Currently, users need to keep track manually of everything that’s changed between versions N and N+1 of a questionnaire deployed on the server. By producing automatically upon importing onto HQ (when the qnr had been previously imported), this serves two purposes. If the questionnaire is imported onto a testing server, this helps testing with manual unit and integration testing around changes. If the questionnaire is imported onto a deployment server, this provides helpful documentation of what changed and why. For HQ, this is internal documentation. For data collection in the field, this document could be manually “translated” to update field teams on noteworthy interviewer-facing changes.