if two people are editing a task at the same time, the first to submit can lose their changes.
for example, if one person assigns a task to themselves while another is adding a tag to it, whichever is submitted second will wipe out the first even though the changes were not conflicting and could be "merged".
There are two aspects to the right solution to this, I think.
1) we know how to ask the form if the data changed (we already use this for notification) so we could be smart enough to only change fields in the model that were changed on the form.
that solves the simple independent change cases that can be merged
2) we could send a "revision" id as a hidden in the task form (or a timestamp) so we know when the data on the form has been changed since the form was instantiated and on second-submission, tell the user that the form data has since been updated under them (and maybe even give them the new values as well as their own)
It's not clear how the two would interact though.
It also might be worth thinking about a generic solution that could be applied to other things like wiki.
One of the approaches coulde be to save a serialized dictionary with 'timestamp', 'fields_changed' either in the additional field on task, or in additional model. It could be a model with a generic field, so it can be used for other objects - wiki pages, etc.