mutual feedback enforcement: a proposal
Posted: Sat Nov 29, 2008 7:01 pm
Warning: this is longish
There's been a number of recent threads addressing issues with feedback - particularly people who don't leave feedback. One of the ideas that's been suggested several times is to change the reference system so that good feedback doesn't add to your rating until both sides have left a reference. This seems like a workable idea, but i think it requires some non-trivial changes to the inner workings of the reference system. In this post I'm going to outline how i would envision this system working from a technical standpoint. It's important to note that i don't have access to the ref system code, so I'm making a few guesses about how it works. I've included links to pictures of what this might look like to help with the explanation.
I'm hoping that this post will be useful if the admins decide to implement some sort of mutual feedback system. With that in mind, I'd appreciate comments/criticisms of the system I'm proposing. Are there any obvious flaws? Is there better way to do something? What additional changes would be helpful? etc...
Please don't use this thread to rant about people not leaving feedback.
The Proposal:
I've tried to come up with a way that requires minimal changes to the current system. I believe this is compatible with the current system and wouldn't require an extensive rewrite to get working.
Each trade should have two references associated with it - one from each trader. When only one ref has been posted, it is given a status of pending. When a ref is pending, it will show up on the feedback page as normal. However, good refs will be listed as "good(pending)" and are not included in the calculation of the rating. When the other trader leaves mutual feedback, the pending tag is removed and both references are counted as normal. Neutral and bad refs show up without the 'pending' tag and are always included in the rating calculation.
image of ref page with pending refs. They look just like good refs exception for the word pending
How to do this:
Every reference will now have an extra field in the database called "mutual_ref". This will store the id number of the corresponding reference. A unique, positive id number is already assigned to each reference. References that don't yet have a corresponding ref are assigned a mutual_ref value of -1 to indicate that the receiver has not yet left a reference for this trade. A pending good ref is assigned a type of "good(pending)" instead of "good". When the corresponding reference is left, the -1 gets changed to the id of that ref and if it had a type of "good(pending)", it is changed to type "good".
When the rating value is calculated, "good" refs will be +2, "bad" are -10, "neutral" are 0 and "good(pending)" refs are also 0. So you don't get credit for a good reference until you've left a reference as well.
Example: trader_joe and i do a trade. He leaves a good ref for me (id# 75001). It is given a mutual_ref value of -1 and a type of "good(pending)" because i haven't left a ref for him yet. The ref is pending. When i post a good ref for him (lets say it's id# is 75104), my ref will be given a mutual_ref value of 75001 (the id of his ref to me) and the ref he posted will have its mutual_ref value changed from -1 to 75104 (the id of my ref to him). The rating i leave will be of type good (because he's already left feedback for this trade). And the type of the rating he left will be changed to "good". Both of our ratings will be updated.
Now, there needs to be a way to identify when two refs correspond to the same deal.
Every time a user goes to the ref posting page, the site queries the database for all of the user's refs that have a "mutual_ref" field with the value -1. (these are references that have not been reciprocated). If none are found, the standard posting page is displayed as normal. However, if any are found, they are listed at the top of the page as awaiting feedback. This way the user knows who he owes feedback to.
example page showing people awaiting feedback
Whenever userA leaves a reference for userB, the system will check the database to see if userA has any refs from userB that have mutual_ref = -1. If there are none, the ref is posted as described above (with mutual_ref=-1 and pending status). But if any are found, the user is taken to a confirmation page asking if this ref is new or if it relates to the existing one(s). If it's a new ref, it is posted with pending status. Otherwise, this is a followup reference and the mutual_ref ids are set as in the example above. Since the mutual_ref value is no longer -1, the next time the user goes to the ref posting page, the ref won't show up.
example confirmation page
So to summarize the steps involved:
when a user goes to the ref posting page:
Trying to go back and match trades on existing references is probably more trouble than it's worth. So all existing references will be given a "mutual_ref" value of 0. That way they will not be linked to any other refs but will also not show up as awaiting feedback. Since none of the current refs are labeled "good(pending)", all existing ratings will be unchanged.
The other issue is a trade where one person has already left a reference before this system has been implemented and other person tries to leave a ref for that trade after the changes have been made. The system as proposed will assume that the second person's ref refers to a new trade and will the prompt the other user to leave mutual feedback even though he's already done so. The best solution i have to this right now is to have an option the poster can select when leaving a reference to say that feedback has already been left. When it is selected, the posted ref will be treated as before: good refs will be left as good instead of 'good(pending)' and mutual_ref will be set to 0 so the other trader isn't prompted to leave a ref as well. I imagine this option would be available for only a month or so and then removed.
I think the changes outlined above will add the desired functionality with the least amount of changes to the way the current system works.
Like i said, comments and constructive criticism are encouraged, but please no comments about how much you hate it when people don't leave feedback. The point of this thread is to talk about a solution, not complain about the problem.
There's been a number of recent threads addressing issues with feedback - particularly people who don't leave feedback. One of the ideas that's been suggested several times is to change the reference system so that good feedback doesn't add to your rating until both sides have left a reference. This seems like a workable idea, but i think it requires some non-trivial changes to the inner workings of the reference system. In this post I'm going to outline how i would envision this system working from a technical standpoint. It's important to note that i don't have access to the ref system code, so I'm making a few guesses about how it works. I've included links to pictures of what this might look like to help with the explanation.
I'm hoping that this post will be useful if the admins decide to implement some sort of mutual feedback system. With that in mind, I'd appreciate comments/criticisms of the system I'm proposing. Are there any obvious flaws? Is there better way to do something? What additional changes would be helpful? etc...
Please don't use this thread to rant about people not leaving feedback.
The Proposal:
I've tried to come up with a way that requires minimal changes to the current system. I believe this is compatible with the current system and wouldn't require an extensive rewrite to get working.
Each trade should have two references associated with it - one from each trader. When only one ref has been posted, it is given a status of pending. When a ref is pending, it will show up on the feedback page as normal. However, good refs will be listed as "good(pending)" and are not included in the calculation of the rating. When the other trader leaves mutual feedback, the pending tag is removed and both references are counted as normal. Neutral and bad refs show up without the 'pending' tag and are always included in the rating calculation.
image of ref page with pending refs. They look just like good refs exception for the word pending
How to do this:
Every reference will now have an extra field in the database called "mutual_ref". This will store the id number of the corresponding reference. A unique, positive id number is already assigned to each reference. References that don't yet have a corresponding ref are assigned a mutual_ref value of -1 to indicate that the receiver has not yet left a reference for this trade. A pending good ref is assigned a type of "good(pending)" instead of "good". When the corresponding reference is left, the -1 gets changed to the id of that ref and if it had a type of "good(pending)", it is changed to type "good".
When the rating value is calculated, "good" refs will be +2, "bad" are -10, "neutral" are 0 and "good(pending)" refs are also 0. So you don't get credit for a good reference until you've left a reference as well.
Example: trader_joe and i do a trade. He leaves a good ref for me (id# 75001). It is given a mutual_ref value of -1 and a type of "good(pending)" because i haven't left a ref for him yet. The ref is pending. When i post a good ref for him (lets say it's id# is 75104), my ref will be given a mutual_ref value of 75001 (the id of his ref to me) and the ref he posted will have its mutual_ref value changed from -1 to 75104 (the id of my ref to him). The rating i leave will be of type good (because he's already left feedback for this trade). And the type of the rating he left will be changed to "good". Both of our ratings will be updated.
Now, there needs to be a way to identify when two refs correspond to the same deal.
Every time a user goes to the ref posting page, the site queries the database for all of the user's refs that have a "mutual_ref" field with the value -1. (these are references that have not been reciprocated). If none are found, the standard posting page is displayed as normal. However, if any are found, they are listed at the top of the page as awaiting feedback. This way the user knows who he owes feedback to.
example page showing people awaiting feedback
Whenever userA leaves a reference for userB, the system will check the database to see if userA has any refs from userB that have mutual_ref = -1. If there are none, the ref is posted as described above (with mutual_ref=-1 and pending status). But if any are found, the user is taken to a confirmation page asking if this ref is new or if it relates to the existing one(s). If it's a new ref, it is posted with pending status. Otherwise, this is a followup reference and the mutual_ref ids are set as in the example above. Since the mutual_ref value is no longer -1, the next time the user goes to the ref posting page, the ref won't show up.
example confirmation page
So to summarize the steps involved:
when a user goes to the ref posting page:
- select all of the user's refs where mutual_ref=-1
- if any are found, display all at top of page
- display rest of ref posting page as normal
- select all refs left for the poster by target trader where mutual_ref=-1
- if any are found, display all on confirmation page along with new trade option
- if poster selects an existing ref:
- set mutual_ref of new ref to the id of the existing reference
- set mutual_ref of existing reference to the id of the new ref
- if the existing reference is of type "good(pending)", change to type "good"
- recalculate rating of both traders
- finished
- if poster selects an existing ref:
- otherwise, if poster selected new trade, or no refs were found with mutual_ref=-1
- set mutual_ref of post to -1
- if this was a good reference, set type to good(pending)
- recalculate rating of the trader the ref is for (if needed)
- finished
- if any are found, display all on confirmation page along with new trade option
Trying to go back and match trades on existing references is probably more trouble than it's worth. So all existing references will be given a "mutual_ref" value of 0. That way they will not be linked to any other refs but will also not show up as awaiting feedback. Since none of the current refs are labeled "good(pending)", all existing ratings will be unchanged.
The other issue is a trade where one person has already left a reference before this system has been implemented and other person tries to leave a ref for that trade after the changes have been made. The system as proposed will assume that the second person's ref refers to a new trade and will the prompt the other user to leave mutual feedback even though he's already done so. The best solution i have to this right now is to have an option the poster can select when leaving a reference to say that feedback has already been left. When it is selected, the posted ref will be treated as before: good refs will be left as good instead of 'good(pending)' and mutual_ref will be set to 0 so the other trader isn't prompted to leave a ref as well. I imagine this option would be available for only a month or so and then removed.
I think the changes outlined above will add the desired functionality with the least amount of changes to the way the current system works.
Like i said, comments and constructive criticism are encouraged, but please no comments about how much you hate it when people don't leave feedback. The point of this thread is to talk about a solution, not complain about the problem.