# Plugin: Feature voting separated from Likes

**URL:** https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772
**Category:** Feature
**Tags:** rfc, spec
**Created:** [January 30, 2016, 3:34pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772 "2016-01-30T15:34:45Z")
**Posts on this page:** 20
**Page:** 2

<div class="post-metadata">

### Author: ![erlend\_sh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/erlend_sh/32/119475_2.png) [@erlend\_sh](https://meta.discourse.org/u/erlend_sh)
#### Post date: [February 15, 2016, 9:47pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/21 "2016-02-15T21:47:14Z")

</div>

[quote=“joebuhlig, post:20, topic:38772”]  
is there a custom field option available on the Topic-User relationship?  
[/quote]Hopefully someone from [@team](https://meta.discourse.org/groups/team) can chime in here to get the ball rolling.

> [@joebuhlig](#):
>
> Do you have plans to start a GitHub repo for this?

Nope. This plugin isn’t an official thing, so if you do work on this you should have complete ownership over it. I do hope we’ll put it to use on Meta though.

---

<div class="post-metadata">

### Author: ![joebuhlig](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joebuhlig/32/193054_2.png) [@joebuhlig](https://meta.discourse.org/u/joebuhlig)
#### Post date: [February 16, 2016, 4:03pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/22 "2016-02-16T16:03:05Z")

</div>

> [@erlend\_sh](#):
>
> This plugin isn’t an official thing, so if you do work on this you should have complete ownership over it.

I’m thinking I’ll start one then. I looked but couldn’t decide which category WIP plugins typically land here. I assume I should start a new topic for build itself. I’m still a bit new to the dynamics of the community here.

---

<div class="post-metadata">

### Author: ![commonpawn](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/commonpawn/32/50792_2.png) [@commonpawn](https://meta.discourse.org/u/commonpawn)
#### Post date: [February 16, 2016, 4:07pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/23 "2016-02-16T16:07:53Z")

</div>

I agree it would make sense to use the already existing like system and simply highlight the likes on the first post.  
On Facebook the main action is to like or comment on posts and the ability to like the original post is highlighted more than the ability to like the individual comments.

---

<div class="post-metadata">

### Author: ![erlend\_sh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/erlend_sh/32/119475_2.png) [@erlend\_sh](https://meta.discourse.org/u/erlend_sh)
#### Post date: [February 17, 2016, 10:57am UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/24 "2016-02-17T10:57:48Z")

</div>

> [@joebuhlig](#):
>
> I looked but couldn’t decide which category WIP plugins typically land here

I don’t think you need a centralised topic for it until it’s an actual plugin people can install and test. In the meantime just do your troubleshooting on #Development.

Best of luck to ya! Will be following this with much excitement 😄

---

<div class="post-metadata">

### Author: ![joebuhlig](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joebuhlig/32/193054_2.png) [@joebuhlig](https://meta.discourse.org/u/joebuhlig)
#### Post date: [February 17, 2016, 7:14pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/25 "2016-02-17T19:14:16Z")

</div>

Sounds good. I had a major cancellation today so I took it as a chance to get started. I have the category setting working and the boxes added to the UI. Just need to do the wiring behind the button. So the majority of the work is yet to be done. 😉

[https://github.com/joebuhlig/discourse-feature-voting](https://github.com/joebuhlig/discourse-feature-voting)

---

<div class="post-metadata">

### Author: ![commonpawn](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/commonpawn/32/50792_2.png) [@commonpawn](https://meta.discourse.org/u/commonpawn)
#### Post date: [February 17, 2016, 8:36pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/26 "2016-02-17T20:36:33Z")

</div>

Awesome! Very excited about this. We would love to use the plugin to [build a hackernews like site](https://meta.discourse.org/t/wanted-discourse-hacker-news-plugin/37620/1) on Discourse as outlined here!

Let me know if you need any UX/UI help

---

<div class="post-metadata">

### Author: ![joebuhlig](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joebuhlig/32/193054_2.png) [@joebuhlig](https://meta.discourse.org/u/joebuhlig)
#### Post date: [February 19, 2016, 7:06pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/27 "2016-02-19T19:06:21Z")

</div>

I’m working on an active votes release mechanism when a topic has been closed. I’ve been able to add/subtract votes and store everything in custom\_fields for both the Topic and the User. I’m debating the use of a sidekiq job that does the release of votes but the votes themselves are in a array within a custom\_field. Can you search for users based on the value of a custom\_field? I haven’t been able to find an example that does that. That would allow me to search for users that have voted for the topic and remove that vote from the user.

---

<div class="post-metadata">

### Author: ![erlend\_sh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/erlend_sh/32/119475_2.png) [@erlend\_sh](https://meta.discourse.org/u/erlend_sh)
#### Post date: [April 4, 2016, 9:48pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/28 "2016-04-04T21:48:10Z")

</div>

@joebuhlig we’re considering sponsoring some work on this plugin. I wonder what your thoughts are on this feature:

> [@erlend\_sh](#):
>
> ### Votes as an archetype of Likes
> 
> Votes could piggyback the Like design, but the two would be treated as completely separate entities, so that votes on features don’t count towards Trust Levels and such. So while the average post can have “Likes”, a special category could allow “Votes" as an additional metric, applied to the topic as a whole.

Any cursory ideas on how you might go about implementing that? @sam & @eviltrout would we accept PRs to core to accommodate such a feature? The feature being “alternative Likes systems built on top of likes”.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [April 4, 2016, 9:57pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/29 "2016-04-04T21:57:12Z")

</div>

Not following @erlend_sh why is this necessary?

---

<div class="post-metadata">

### Author: ![joebuhlig](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joebuhlig/32/193054_2.png) [@joebuhlig](https://meta.discourse.org/u/joebuhlig)
#### Post date: [April 5, 2016, 1:44am UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/30 "2016-04-05T01:44:07Z")

</div>

I would definitely take on a sponsored add to core. I could easily see moving the voting plugin over to use it. I would be curious about using the existing archetype class on likes but would need to think about it a bit more.

But outside of using it for plugins, I don’t see where it would be useful to the master codebase. That might be what Sam is getting at. Unless there’s a desire to implement something similar in multiple ways, I’m not sure it’s worth it.

---

<div class="post-metadata">

### Author: ![erlend\_sh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/erlend_sh/32/119475_2.png) [@erlend\_sh](https://meta.discourse.org/u/erlend_sh)
#### Post date: [April 5, 2016, 8:08am UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/31 "2016-04-05T08:08:54Z")

</div>

Yes I don’t think any part of this belongs in core either. I was just wondering if the addition of a new points type in addition to Likes might necessitate changes to core.

And to reiterate, the reason I believe a completely separate points count is necessary is because the feature-voting model encourages [votes in the thousands](https://roblox.uservoice.com/forums/158291-roblox-features/suggestions/1814739-more-rewards-for-veterans), which can mess with the otherwise safe averages of badges and trust levels.

This becomes even more important if we ever figure out “Votes by unregistered users”, which would further add to a feature’s average vote count.

> [@sam](#):
>
> Both liking and voting on a feature is equally confusing.

The safest default would probably be to hide the Like option on the Original Post. Other replies should still be likeable though.

---

<div class="post-metadata">

### Author: ![joebuhlig](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joebuhlig/32/193054_2.png) [@joebuhlig](https://meta.discourse.org/u/joebuhlig)
#### Post date: [April 5, 2016, 2:21pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/32 "2016-04-05T14:21:47Z")

</div>

> [@erlend\_sh](#):
>
> And to reiterate, the reason I believe a completely separate points count is necessary is because the feature-voting model encourages votes in the thousands, which can mess with the otherwise safe averages of badges and trust levels.

That makes perfect sense to me. I looked into adding a like archetype as part of the plugin and it would be way too complicated and add a bunch of monkey patching which I’m not a fan of.

This makes me think about a slightly different question; would this voting feature be something the team would be interested in having within core? I could take the plugin and port it over to a PR. It would require some changes to the way the data is stored but I would be willing to do it.

If the number or product and tech websites using Discourse is high, I could see it being a big deal for a number of instances. But you guys will know that much better than I will.

---

<div class="post-metadata">

### Author: ![erlend\_sh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/erlend_sh/32/119475_2.png) [@erlend\_sh](https://meta.discourse.org/u/erlend_sh)
#### Post date: [April 6, 2016, 8:11pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/33 "2016-04-06T20:11:28Z")

</div>

> [@joebuhlig](#):
>
> This makes me think about a slightly different question; would this voting feature be something the team would be interested in having within core?

Hmmm, as much as I love this feature I don’t see that happening. I don’t think the _majority_ of forums out there require feature voting. I can definitely see it as a bundled plugin though.

If we’re in a gridlock as far as “separating voting from likes” goes though, we could just bypass it for the time being and focus on other features for starters. I’ll PM you.

---

<div class="post-metadata">

### Author: ![commonpawn](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/commonpawn/32/50792_2.png) [@commonpawn](https://meta.discourse.org/u/commonpawn)
#### Post date: [April 7, 2016, 2:37am UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/34 "2016-04-07T02:37:25Z")

</div>

I think having two systems is confusing - when do you like something vs voting on something? Would the _like_ be a reaction to a post/reply? Can easily get confusing! 🙂 I think voting should replace the like system, when installed.

**It could look like this (like Quora)**

 ![](https://global.discourse-cdn.com/meta/original/3X/b/3/b35ee08dbeef097146699a49e73288968580f0f7.png)

**Alternatively, with number of votes in button**

 ![](https://global.discourse-cdn.com/meta/original/3X/6/d/6d662cb604bd911c200a182ceb9b8d13f1f42026.png)

**Or like this (Reddit style)**

 ![](https://global.discourse-cdn.com/meta/original/3X/6/2/626f992cd00098e44ee1298bb6f8c938b1ae231c.png)

 ![](https://global.discourse-cdn.com/meta/original/3X/b/e/bef0e18b0971f7c7eb48c5c624c71d1d9b9dd816.png)

---

<div class="post-metadata">

### Author: ![erlend\_sh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/erlend_sh/32/119475_2.png) [@erlend\_sh](https://meta.discourse.org/u/erlend_sh)
#### Post date: [April 7, 2016, 12:00pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/35 "2016-04-07T12:00:00Z")

</div>

> [@commonpawn](#):
>
> I think having two systems is confusing - when do you like something vs voting on something?

It depends on the community. The [need to draw a line between (analytical) Voting and (personal) Liking](https://meta.discourse.org/t/is-liking-a-post-too-intimidating/37695) is how this plugin proposal came into being in the first place.

We’re gonna be testing Feature Voting here on Meta, and in the context of this community we definitely want to keep the concept of Votes separate from Likes, because Votes behave differently, most importantly:

- Can be retracted at any time
- Much lower max-cap than Likes (also separate from Likes\*)

If we kept the concept of likes throughout the forum, except they’d behave differently in #Contribute > Feature, I think this would confuse users way more than having two distinct points systems. I can definitely see how the uniform “Upvote” concept would make sense on _your_ forum though, and that’s your prerogative.

\* Actually @joebuhlig, I guess the way the plugin currently works, if I hit my _Like_ limit for the day, that would effectively prevent me from casting any further votes as well, right? Shouldn’t be a big deal as users hardly ever hit their Like caps, but worth making note of in a “Known Issues/Limitations” .

---

<div class="post-metadata">

### Author: ![joebuhlig](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joebuhlig/32/193054_2.png) [@joebuhlig](https://meta.discourse.org/u/joebuhlig)
#### Post date: [April 7, 2016, 12:19pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/36 "2016-04-07T12:19:20Z")

</div>

> [@erlend\_sh](#):
>
> if I hit my Like limit for the day, that would effectively prevent me from casting any further votes as well, right?

Nope. It’s not using the current like functionality in any way. It uses custom fields to store the data. So any feature that uses likes isn’t touched by the plugin. The whole structure is standalone.

---

<div class="post-metadata">

### Author: ![erlend\_sh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/erlend_sh/32/119475_2.png) [@erlend\_sh](https://meta.discourse.org/u/erlend_sh)
#### Post date: [April 7, 2016, 1:53pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/37 "2016-04-07T13:53:47Z")

</div>

Oh! All this time I thought you’d gone with this first-pass approach:

> [@sam](#):
>
> I wonder if “Limit likes on OPs in a particular category” is a good enough first pass at this without needing tons of work. You miss out on “supervote” but still, very easy first pass.

I see you actually mentioned the use of custom fields several times; my bad!

With that out of the way, let’s tackle Super Votes. As you’ve considered yourself, I think a modal would be the simplest approach. On that note, I don’t think the “Unvote” state is necessary.

[![](https://global.discourse-cdn.com/meta/original/3X/b/9/b96878f799571b4cee634f1aa986562724858f52.png) ](https://global.discourse-cdn.com/meta/original/3X/b/9/b96878f799571b4cee634f1aa986562724858f52.png)

I think a clear “Voted” status works better. If Super Votes are not enabled, it’d work the same way as before: Clicking again removes the vote. But when Super Votes are enabled, you get modals:

**The modal you get right after having clicked to vote:**

 ![](https://global.discourse-cdn.com/meta/original/3X/5/8/5842d9d8f831f078770ff3be75ac7fcb6052433e.jpg)

**The modal you get if you click on an already super-voted vote:**

 ![](https://global.discourse-cdn.com/meta/original/3X/1/d/1d81f3a682abf04be2d4bcfa8c4012222a895c72.jpg)

**The modal you get if you click on an already voted vote:**

 ![](https://global.discourse-cdn.com/meta/original/3X/9/4/943577b4a6865bd1e4f5547e773b7a2f54c48932.jpg)

That’s some weird use of the English language. I hope I’m making sense. Any other ideas @commonpawn?

---

<div class="post-metadata">

### Author: ![joebuhlig](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joebuhlig/32/193054_2.png) [@joebuhlig](https://meta.discourse.org/u/joebuhlig)
#### Post date: [April 7, 2016, 2:49pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/38 "2016-04-07T14:49:27Z")

</div>

I really like this. It solves a lot of the issues I was having with “super votes”. A few questions:

1. Would you revoke the regular vote when a super vote is added? Or would both remain? If a super vote is worth 10 votes, that would mean the user actually has 11 votes on it if they both remain.

2. My assumption is that we would add another section on the user profile that shows a list of your active super votes like we’re doing for regular votes right now. That way you can find your votes easier. Or would we consolidate them into one list and simply put an indicator on them? I would lean towards the latter.

3. The defaults I’m thinking would be 3 super votes with the value of each being 10 regular votes. Is that fair?

Sidenote: Those mockups are really nice! 👏

---

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [April 9, 2016, 6:26am UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/39 "2016-04-09T06:26:40Z")

</div>

> [@erlend\_sh](#):
>
> The modal you get if you click on an already voted vote:

There should probably be a hover/focus state there, too, Either hinting that the menu exists, or showing the menu.

---

<div class="post-metadata">

### Author: ![erlend\_sh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/erlend_sh/32/119475_2.png) [@erlend\_sh](https://meta.discourse.org/u/erlend_sh)
#### Post date: [April 9, 2016, 12:09pm UTC](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772/40 "2016-04-09T12:09:40Z")

</div>

> [@joebuhlig](#):
>
> Would you revoke the regular vote when a super vote is added?

My thinking is that the normal vote would remain. The “super vote” isn’t an _extra_ vote, it’s just a normal vote that got promoted to **super**. As far as showing this in the interface goes I haven’t tackled that bit yet, but I was thinking it could be something similar to what we do in the standard topic index with Like ratios, i.e. a topic with a high likes-to-replies ratio will show a red replies count.

> [@joebuhlig](#):
>
> My assumption is that we would add another section on the user profile that shows a list of your active super votes like we’re doing for regular votes right now. That way you can find your votes easier. Or would we consolidate them into one list and simply put an indicator on them? I would lean towards the latter.

I think the latter sounds best. If possible it’d be nice to have a simple “Only show super likes” toggle, but that’d just be a bonus.

> [@joebuhlig](#):
>
> The defaults I’m thinking would be 3 super votes with the value of each being 10 regular votes. Is that fair?

So, as i alluded to when answering #1, I don’t think super votes should add _more_ votes. This wouldn’t be quite like UserVoice.

The closest real-life version of this I can think of is actually Tinder. So, if you’re at all familiar with how it works (you know, like, you have a friend who uses it or, like, whatever), you can _Like_ someone and you can _Super Like_ someone. A Super Like is just a Like with some additional perks. And while you can dish out a whole bunch of Likes every day, Super Likes are very limited. I think it’s 1 per day.

So when you get Super Liked, it’s pretty exciting, because “ooh, this person used their oh-so-precious Super Like on _me_? I’m intrigued”. And you’re counting on that same effect if you’re sending someone else a Super Like.

I want to replicate a similar effect with Super Votes. And I also think it’s a cleaner separation of data. You get to easily count:

- Number of voices
- Number of passionate voices

In default UserVoice, you can give an idea 1, 2, or 3 votes. I don’t think I’ve ever given an idea 2 votes. I give my 3s to my top priorities, and then I spread some 1s around mostly just to keep track of some other Nice-To-Haves. That’s one extra thing I didn’t want to have to figure out for myself. And if there are people out there using their 2s, how in the world am I supposed to interpret that? In my world, “medium priority” is the same as “low priority” because they both get trumped by “high priority” every single time. Lastly, if a UV idea has 900 votes, that means somewhere between 300-900 users voted on that idea. I’d much rather see up front how exactly many people could be bothered to +1 this idea. Then, layered on top of that, tell me _how many of these users consider this a top priority_.

[Previous page](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772.md?page=1)

[Next page](https://meta.discourse.org/t/plugin-feature-voting-separated-from-likes/38772.md?page=3)
