Proposal for reactions feature: separating structured user opinion (both positive and negative) from reward-modifying upvotes/downvotes

in #steemit7 years ago (edited)


Picture of a bunch of emojis.

Source: Pixabay

Motivation and Background

I think there is a benefit to separate out some of the concepts that are currently coupled with upvotes and downvotes (aka flags) on Steem platforms. The first concept (and the only thing the Steem blockchain cares about) behind upvotes and downvotes is about adjusting the payout of rewards. But users (and the Steem platform UIs that serve the users) also care about the implications of the upvotes and downvotes and what message they convey, which is the second concept currently mixed in with upvotes/downvotes. An upvote may (or may not) be used by the user to convey approval of some content. A downvote (or flag) may be used by a user to signal that some content is bad for the platform (e.g. plagiarism or a scam); or maybe there is nothing bad about it and they even like the content but they just think it is over-rewarded (which is a legitimate use of the downvote on this platform that shouldn't be overly shamed and is in fact necessary for the platform to work well).

The Steem blockchain allows custom messages to be added in any transaction using the custom_json_operation. If a useful standard is formed around what I am calling "reactions", then different Steem clients can use and read the custom_json_operation appropriately to provide a meaningful way of allowing users to express their opinions regarding the contents of posts/comments on Steem which can be conveniently aggregated, displayed, and made useful to users of the platform in ways that an unstructured (yet incredibly flexible) comment could not.

Furthermore, some users may have so little Steem Power or voting power that their votes may not count enough (in terms of rewarding the author or rewarding them as curators) to justify the expense of tracking it as part of the consensus state of the blockchain. However, every user with a registered Steem account deserves the ability to broadcast their opinion about any content regardless of how much voting power they have (granted if they have extremely little Steem Power they may be highly rate-limited especially if they are transacting a lot). Reactions make it possible for these users to always share their opinions (just as if they were upvoting) whether or not they have enough voting power to actually affect the reward payout.

Proposal

My proposal (which is not hardforking change) is that the steemd node continues tracking the consensus state dealing with rewards, but middleware software will also track the state associated with reactions (which accounts are part of the set for each particular reaction type for each post/comment). A standard utilizing custom_json_operation would allow the user to modify (add / remove / replace) the state of the reactions they associate with a particular post/comment. Multiple reactions from a single account for a particular post/comment would be acceptable (although the UI could put further sensible restrictions on it). Typically the clients would bundle the custom_json_operationthat sets the initial reaction by the user along with the upvote/downvote that actually modifies rewards into the same transaction. But the operations could be separated out, and this would make sense, for example, when adjusting the reaction without wanting to change the voting weight (to not reset the curation rewards) or maybe changing the voting weight without desiring to change the reactions (to avoid unnecessarily bloating the transaction size).

I won't be going into any technical details of how this standard should be implemented at the blockchain custom_json_operation level. This is mostly a high-level proposal that tries to explain what sort of reactions could be made available and what the UX of this reaction feature might be like. It shouldn't be too difficult to come up with some technical standard for how this should be implemented once/if there is a consensus around a need for such a feature and how it would work at a higher level.

UI/UX in Steem clients

I am interested to hear ideas from the community about how the UI/UX for this feature could work. I have some initial thoughts about it. First, I would want to separate out in the UI the some of the reactions (things that would typically be accompanied by an upvote or at least would typically not come with downvotes) from the very negative reactions (things associated with a flag such as marking a post/comment plagiarism, fraud, spam, or hate speech).

Clicking on the flag icon would open up a UI similar to what we have now, however: the bullet points would be checkboxes; "Fraud or Plagiarism" would be separated into their own separate items; "Hate Speech or Internet Trolling" would be separated into their own separate items; the "Disagreement on rewards" item would be removed; and, an "Illegal" item would be added. Disagreement on rewards is a legitimate reason to downvote, but it would be taken out of this UI to not associate it with the more menacing notion of "flagging". There would be a message in this UI that downvoting because of excessive rewards is not considered flagging and can be done through a different interface accessible by clicking on the potential payout dropdown. The user clicks on any of the negative reactions ("Plagiarism", "Fraud", "Hate Speech", "Trolling", "Spam", "Illegal") that apply (at least one must be selected), selects the negative voting weight and then clicks the flag button. They can later go back to the UI and adjust any of the selections (if they change the voting weight there will be a warning that it will cost them their voting power again) including entirely removing their flags.

Clicking on the potential payout dropdown would expose an interface (in addition to what already exists) to adjust rewards via downvote without expressing a reaction (this is also where one would go to adjust or remove a previously submitted reaction-neutral downvote). Reaction-neutral downvotes are taken to imply that the user simply thought the rewards were too high (not that the content is necessarily somehow bad). In fact, it could be possible to provide a positive reaction along with a downvote to, for example, express approval of the content while still reducing the too-high rewards; a possible UI to allow this rarer sort of action would be to first use another UI (to be discussed shortly) to submit a reaction without any upvote, and then use the UI in pending payout dropdown to add a downvote (which would not affect the already existing state of reactions). After payout of a post/comment, this downvote UI is no longer accessible in the past payout dropdown; in fact, I think it should not be even possible to submit upvotes/downvotes to the blockchain on paid out posts/comments and instead only reactions (via custom_json_operation) should be used after payout.

The remainder of the reactions (not all positive) are provided via icon buttons (one for each reaction). Each could have a number next to it representing the number of accounts who currently hold that reaction with respect to the given post/comment. The icon would be highlighted in some way if the logged in user currently holds that reaction with respect to the given post/comment. Clicking on any of the icons open a pop-up window overlaid perfectly over the icons so that it seems like none of the icons had moved in the overlay window. This window would allow toggling any of the icons and making other adjustments regarding upvote weight (if any upvote operation is to be submitted at all) before clicking the "Submit" button to publish the changes in a single transaction; or the user could click the "Cancel" button or simply click away from the overlay pop-up window to reject any of the pending changes. When clicking on any of the icons after having already at least one reaction currently associated for the given post/comment, it would simply open the overlay pop-up window without making any pending changes; from there the user could then toggle any reaction icons or make other changes. When clicking on any of the icons with no existing reaction associated with the given post/comment, it would not only open the pop-up window but it would also set it up with a pending change of adding the reaction associated with the icon that was clicked; again no changes get submitted to the blockchain unless the "Submit" button.

Assuming the post has not yet paid out, the overlay pop-up window would also have a (possibly greyed out) voting weight slider along with a checkbox that says "Do not modify existing voting weight". If the user already has a downvote on the post/comment, then the voting weight slider (which would be greyed out) would be representing a negative voting weight and the checkbox would be checked but would not be allowed to be unchecked (trying to uncheck it would warn the user that they first need to remove their downvote from the pending payout dropdown). If the user does not have a downvote on the post/comment, then the voting weight slider (which would represent positive voting weight) could possibly be greyed out and the checkbox checked, but the user could uncheck it if they wanted to which would enable the voting weight slider (if the user rechecks the checkbox, it would move the voting weight of the slider back to what it is supposed to be and would again grey out the voting weight slider). If the user previously voted on the post/comment but has now removed the vote or never before voted on the post/comment, then the voting weight slider will be initially set to 0%. If the voting weight slider is enabled (not greyed out) there would be a warning label underneath it that estimates how much voting power would be used up if the user was to submit a change with the selected voting weight and furthermore, unless they had not voted on the post/comment before, there would be warning that they are not eligible for any curation rewards.

When clicking on a reaction icon for the first time for a particular post/comment, the voting weight slider may or may not start enabled (as in not greyed out and with the "Do not modify existing voting weight" checkbox left unchecked). If it starts greyed out, then it will be set at the 0% weight. If it starts enabled, then the weight will be set to whatever the previous weight setting was for an upvote on similar content type (post or comment). When initiating the overlay pop-up window by clicking on one of the positive reaction icons, the voting weight slider starts enabled. When initiating the overlay pop-up window by clicking on one of the negative reaction icons (currently in this proposal there is only one negative reaction icon which is the Disapproval thumbs down icon), the voting weight sliders starts greyed out. Notice that even when clicking on the negative reaction icons, the pop-up UI does not provide a way to downvote (that is left in the separate UIs for flagging and reducing payouts from the pending payout dropdown); this is to promote the idea that just because you disagree with a post it doesn't mean that you should reduce their payout or harm their reputation.

Types of positive reactions

Generic upvote upvote.png

(Represented with current up arrowhead symbol)

What it implies:

I believe this post deserves to be rewarded more, but I am not claiming any additional value judgment on the content of the post.

(This is how all upvotes that are not attached to other reactions via custom_json_operation should be represented. However, it should be possible to represent this generic upvote reaction using custom_json_operation alone as well, in case the user does not have enough voting power to submit a valid upvote to the blockchain.)

Approval 👍

(Represented with a thumbs up emoji or U+1F44D)

What it implies:

I agree with / support the content of this post.

Sympathy 😢

(Represented by the crying face emoji or U+1F622)

What it implies:

The content of this post emotionally affected me and I extend sympathy where appropriate.

Worthwhile 🤔

(Represented by the thinking face emoji or U+1F914)

What it implies:

I explicitly do not claim to agree with all of the contents of this post (though I may or may not agree with parts of it). However, I found the contents interesting and worthwhile to read, and I think it is worth bringing more attention to it if nothing else so that it can facilitate meaningful discussion.

(Better symbols to represent this concept are appreciated.)

Funny 😄

(Represented by the grinning face with smiling eyes emoji or U+1F604)

What it implies:

I found the content of this post to be humorous.

Types of negative reactions

Disapproval 👎

(Represented with a thumbs down emoji or U+1F44E)

What it implies:

I disagree with / do not support the content of this post. (This is the reaction to use if you personally do not like what a poster is saying but it is not appropriate to "flag" them.)

Various reasons for flagging

(All represented by the same flag symbol but different reactions are supported at custom_json_operation level to express the reasons behind the flag.)

Plagiarism: Passing off other people's work as if it is their own or including other people's work in their post/comment without giving proper attribution.

Fraud: Can include scams, identity theft, and fake news (as in provably false statements about the objective world seemingly made with the intent to deceive people).

Hate Speech: This one can get complicated fast. First read this: https://en.wikipedia.org/wiki/Hate_speech. Like all the other reasons for flagging, community standards will form to decide what is and isn't acceptable ground for flagging something as hate speech.

Trolling: This one can also be tricky. Some helpful reading material here: https://en.wikipedia.org/wiki/Internet_troll. This should probably just be used when a user is pretty clearly harassing another user (or multiple users).

Spam: Content that seems to just be taking up space on the blockchain and cannot conceivably be providing value to anyone, other than possibly just the author. Also includes posts with clearly mis-categorized tags or abused mentions with the intention to increase visibility of their post (also appropriate for authors who refuse to tag their posts with not-safe-for-work content as nsfw).

Illegal: Content includes things believed to be against laws that would force most Steem client operators to act to be in compliance with the laws in their jurisdiction. Most commonly would involve copyright infringement though other types of illegal activity are also covered under this label.

Other reactions to consider?

I think it is important to not have too many reactions since that can bloat the UI and distract users. But having sufficient nuance is important to really extract a lot of value from this feature. So there is a trade-off to be had. At one extreme end of the trade-off is extreme nuance, which is unnecessary since that is already handled by comments which can convey anything natural language allows (but comes with the disadvantage of being unstructured and difficult to aggregate, analyze, and display in convenient ways). At the other extreme is just sticking with our existing system of a generic upvote. The lists of reactions I provided in the above sub-sections are just an initial suggestion, and I would like to start a discussion of which reactions (both positive and negative) Steemians would actually like to see and use. But I would like to also quickly discuss what we can learn from other social media platforms like Facebook, and why I chose to leave off some possible reactions in this trade-off.

Facebook has six reactions: Like, Love, Haha, Wow, Sad, and Angry. Sympathy and Funny are basically identical replacements to Sad and Haha, respectively. Facebook's original reaction was only Like. This was a poorly named reaction to begin with in my opinion, but I guess they have to stick with it for legacy reasons. I think using a generic upvote on Steem to represent rewarding a post (without an explicit reason given) makes more sense than a "Like". With this proposal however, if you do actually in addition support the content of a post, you would be able to use the Approval reaction (which does use the thumbs up icon like Facebook's Like).

To me, starting off with a generic upvote (rather than a Like) and then adding an explicit Approval in addition makes it unnecessary to have a reaction equivalent to Love as well. But maybe I am way off-base with this and maybe there is strong demand for a Love-like reaction for situations where a generic upvote (and maybe clarifying comment) is not sufficient. I am aware that Love is the most popular reaction on Facebook after Like (though Like is still at least an order of magnitude more popular than Love), but I again attribute this to the fact that Facebook started off with Like as its only option originally, and so users may now feel the need to use Love as a way to differentiate their reactions from the generic Like. That said, I do concede there are situations where someone may wish to differentiate their positive reaction from a generic upvote, but the Approval reaction is not appropriate since the Approval reaction has to do with agreement of a particular message or action conveyed in the post while the situation being discussed may instead call for a reaction dealing with affection with respect to another person. So maybe some kind of Affection reaction (with heart emoji ❤) would be desirable eventually.

Finally, the reactions I proposed above do not include something similar to Facebook's Wow and Angry reactions. I am not convinced those are really that helpful. There are lots of situations involving sharing news of events where people may be tempted to react with anger where I think it is more appropriate to redirect that passion to a more positive reaction like Sympathy; and if they really want to rant that is what comments can be used for. Also, at least according to one study, Angry is the least popular Facebook reaction (although to be fair Sad is not far behind as the second least popular). And as for Wow, I just don't see that being a common enough reaction to justify its own reaction option, unlike Funny/Haha. Now to be fair, according to that same study mentioned earlier, Wow is more popular than Sad, but I really think it is necessary to have a Sympathy reaction to deal with those awkward situations where you want to support someone describing a bad experience but not give an impression that you are happy about what happened to them.

Sort:  

By the way, you might notice that one of the tags of the parent post is #steem-standards: that is the tag I started a while back to discuss standards that most if not all Steem clients should try to agree on and adopt in order to provide consistent user experience when dealing with the same shared database of information and user actions.

That tag is feeling really lonely. And unfortunately Steemit has still not adopted a language standard; and I was hoping for some kind of explicit standard by now that is more nuanced and useful than the nsfw tag hack we have been using for more than a year. At least moderation seems like it is going to be in the pipeline with the Communities feature; though I would love to hear more information and have more discussion about how it is going to be implemented.

Anyway, it has been over a year since I introduced #steem-standards and I may have to admit that the following meme is appropriate:
Mean Girls It's not going to happen meme: Stop trying to make steem-standard happen. It's not going to happen.

I made a forum for it, as a child of the Steem Developers Forum.

https://beta.chainbb.com/forum/steem-standards

Unfortunately this might be a situation where I need to bend the "first-tag only" rule to get other posts (like this one) to show up in that forum. Either that or we need to work on a tagging standard :)

Awesome! Thanks.

Yeah, that first-tag rule for forums is tricky. I'm not sure if you actually should bend that rule.

However, I would like it if the topic URLs (like https://beta.chainbb.com/topic/steem-standards) show all posts that include that tag like steemit.com does (although steemit.com also seems to purge old posts, which was why I linked the hashtag to ChainBB in the first place). The forum URLs (like https://beta.chainbb.com/forum/steem-standards) could continue being limited to posts that use one of the appropriate tags as the first tag.

Good call. Adding this to my endless list of things to change. I'll try to get it in the next release.

chainbb.com is great! I like the new updates.

It seems like an important initiative, especially while it can still be implemented with the ecosystem being small. Later it might get much more difficult to do something like this. Even if we have guidelines and not official "standards" that would at least be something.

I am still trying to wrap my head around the "nsfw" tag in reference to the majority of people in the world who do not "work" in the conventional, Western, modern sense... whether they be children, students, disabled, retired, pensioners... or simply not gainfully employed due to choice, economics ...

or being as rich as @arhag.

I shall now Subjectively and Personally added this Sideways smiley---->:)

;
The nsfw tag probably doesn't translate well, either.

I am a very, very big fan of this idea as a way to engage users in a more meaningful way. A couple weeks ago I was actually talking with someone else on slack about this very idea, the ability to add non-voting reactions to posts as a different way of showing alternative kinds of feedback.

I'm guilty using emoji's like this on slack... a lot. But for as cheesy as it makes me feel to leave a smiley face or a thumbs up, it's incredibly useful feedback to the writer and other readers.

Back in the 90's and the super early days of chat/forums, the only way to respond was to actually type out the words, which floods the actual chat with repetitive information. This becomes problematic in a room with a thousand users all repeating "Awesome!". You even see this on steem today, with people writing "Nice post!" and "Interesting Read" - which just clutter up the interface and make it harder to read and engage.

Only within the last few years has 1st-class emoji support (lol, that sounds ridiculous) found it's way into our communication tools and social media. We need to embrace that.

As for linking the reactions into the voting system - I'm still on the fence a bit. I think there's a case to be made to leave them separate, and potentially even rename them it from "Upvoting" to "Rewarding". That's an entirely separate conversation though and I will try not to derail the discussion of reactions with it.

I am willing to be a part of whatever discussions are needed to make this happen across the network - and all sites that participate within the Steem blockchain. An open set of standard of reactions and UI/UX that users can use to even easier be a part of the community. It's something that I think is worth my time, as well as others.

I have to go against the grain and disagree. I think that adding non-voting "emotion" responses would be too complicated, detracting from the beautiful simplicity of what we have going on here. "Likes" are pretty much empty anyway - if one wants to react emotionally to a post, why not leave a comment?

First, I think we need to at the very least separate out an opinion from a reward adjustment. If a minnow doesn't have enough voting power to upvote content, they should at least be able to signal they "like" the content (or in some way view a post in some positive way) without having to spam the comments with lots of one word replies. And also, we need to separate out the notion of flagging (which has very negative connotations) from simply lowering an excessively rewarded post.

So that first reason alone may justify some of the UI changes discussed in this proposal (as well as the notion of a generic upvote reaction at least), but it alone does not justify why more than one positive reaction would be necessary (or why any non-flag negative reactions would be necessary). And obviously I do think more reactions are beneficial (although I admit that we should keep the number very small to avoid UI bloat and user cognitive burden).

So why do I think multiple reactions can be beneficial? There are very common reactions that many people will have to content but most may not have anything more meaningful to say. Without reactions, these users are forced to either leave a comment with just a handful of words (taking up more space in the UI, and even adding more computational burden on the Steem blockchain than the custom_json_operation that a reaction would entail) or avoid transacting with the blockchain at all (which I would say hurts social interaction of the platform).

Furthermore, structuring these common responses allows us to aggregate them and display them in more compact and useful ways. It also allows client UIs to even use this meta-data to implement new ranking algorithms. For example, imagine a ranking algorithm that used the Worthwhile reaction given by a set of accounts you are following. You could discover the posts your friends thought were intriguing and maybe controversial (stuff that could expand your horizon and mind) while deprioritizing the stuff they all like and approve of (which likely is repetitive stuff you have seen many times before and that you may not be in the mood for at that time). Or maybe you have a ranking algorithm that considers the Funny reaction given by users weighted according to how often you have given them a Funny reaction; this could allow you to just focus on funny content (when you are in the mood for a laugh) ranked based on people determined to have similar senses of humor as you. I'm sure you can imagine more possibilities. All of this becomes much harder when people are forced to use unstructured ways of providing reactions such as comments; although machine learning could still do wonders there.

I think I understand the idea - but why not just let users with no Steem Power upvote without reward? So the "upvote" number goes up by one, but the reward does not change at all. Seems simpler.

I worry that reactions reduce actual interaction by reducing the friction too much. A user might leave a comment, but instead they just hit "worthwhile" and move on. It increases quantity but may reduce quality of interaction.

Being able to "flag" in a less aggressive way (to reduce payout w/o suggesting the content is terrible) DOES sound pretty good to me. That one part I do like.

I think I understand the idea - but why not just let users with no Steem Power upvote without reward? So the "upvote" number goes up by one, but the reward does not change at all.

Being able to "flag" in a less aggressive way (to reduce payout w/o suggesting the content is terrible) DOES sound pretty good to me. That one part I do like.

Without getting into implementation, that would indeed be the simplest version of this proposal if it were decided that no negative reactions (not counting flagging which would be treated differently) are desired and no positive reactions other than the upvote which exists today are desirable.

I worry that reactions reduce actual interaction by reducing the friction too much. A user might leave a comment, but instead they just hit "worthwhile" and move on.

That is interesting. Because I think without it we actually reduce interactions.

There are plenty of times I have seen posts on Steem that I absolutely do not agree with but raise somewhat interesting points that I think are worth bringing more attention to. If I have a lot to say on the topic and am in the mood, I will leave a comment (and likely leave a small upvote). But if I don't have much to say or at least not much to say at that moment (and if I leave it then I will likely not return to it later), I don't leave an upvote because I don't want others to mistake that as approval of the content. I can see how that could be seen as motivation to encourage me to just leave a comment, but we are all busy and lazy at times, so the reality is I would just likely skip it.

But if I had a Worthwhile reaction, I would almost surely click that since it is so easy. Now, if I had a lot to say and had the time at that moment to say it, I would still also leave a comment because a simple Worthwhile is not enough to express my full opinion. But not everyone has a lot to add all the time more than a simple reaction, and I don't think it is a good idea to put them in a situation where they feel the need to choose between not interacting at all or putting a spammy simple one or two word comment in the thread.

By the way, I upvoted your comment, but this is exactly the kind of comment to which I would give a Worthwhile reaction (along with a small reward with the slider) while intentionally avoiding to give an Approval reaction, had my proposal already been implemented.

great idea for emojie :)

This seems very reasonable. Also, from a UX perspective, the flag button, currently, is so minimized in appearance and affordance that I bet a lot of users miss it altogether. For those who do notice it, myself included, many probably assume that the flag is for really bad content and so would not equate it to meaning "downvote," if that is essentially what it is doing.

Hello @arhag I like your Blog ..
I want to Discuss some special Thing with You If you Have Time contact with me on my gmail account my Email is ( [email protected] )
Am waiting your Email .. Its Good for you Really d'nt ignore my comment.

Wow... What a long post... Did you see my Steemerite name...???
@pocketechange

Interesting read and I share this same view, although I'm a new user and I'm yet to grasp how steemit really works.

That`s really great idea.