Add Reactions to Pull Requests, Issues, and Comments
github.com
github.com
This will (indirectly and directly) lead to populism, where unpopular opinions get dismissed out of hand without even considering them.
Seriously, GitHub, this is rule one of designing constructive social platforms: you never ever ever implement a downvote button of any kind.
It seems ironic you'd post this on a platform that has a downvote button.
We are not just using the system, we use the system here to improve the system itself that's why people call it constructive community.
That seems like an odd assertion. Are you looking for the worst content then, or...? I can see an argument that voting would not highlight the best content, at least in some cases; I don't understand an argument that we aren't looking for the best content.
Conversely, HNews is intended as a constructive platform. Should the tools we use here not be designed to foster collaboration and constructive debate?
Disclaimer: I'm skeptical of voting both here and on Github. But I feel like the argument that the differences between the platforms are major and fundamental needs a lot more fleshing out.
On Reddit, downvoting just encourages group-think as you will get downvoted for voicing an unpopular opinion.
Nevertheless, some people find them useful.
I don’t think it’s 100% clear-cut that you should never ever implement downvotes. I’d say that downvotes need to be implemented in conjunction with a bunch of other features and active moderation policies to work well. I don’t know if HN has done so, or if GitHub has done so. But... I wouldn’t dismiss them out of hand.
(FWIW, I follow this policy: I either downvote, or reply, but never both. In this case, I disagree with you, but think the conversation is useful, so I reply. Other comments might be wildly off-topic or deeply non-constructive, and those I down-vote. But to each their own.)
Yes. And if I was a HN developer, which I am not, I would immediately remove that functionality - but even then, my argument doesn't really apply here, because HN isn't really meant to be a constructive platform to begin with.
> I don’t think it’s 100% clear-cut that you should never ever implement downvotes.
For constructive platforms: absolutely, 100%. It's well understood what kind of behaviour is driven by the availability of a semi-anonymous "disagree" button. There's not really any gray area here.
> Other comments might be wildly off-topic or deeply non-constructive, and those I down-vote. But to each their own.
On a constructive platform, that is a matter for moderation, not opinion. The problem of downvotes is that it combines the two, even though they are fundamentally different concepts.
As for "I don’t think it’s 100% clear-cut that you should never ever implement downvotes," perhaps. There's still probably better ways to flag inappropriate comments though. Like a flag button. Downvotes are far too general and ambiguous in comparison.
Thank you for that insight, never thought about it that way (alas, I'm not allowed to downvote). That approach seems very reasonable.
Reminds me of the rule in programming with exceptions, either handle and log or rethrow.
But I guess it's a size and topic thing. If your site has a mature userbase, a limited topic or is mostly a pretty tight knit community, adding a downvote button tends to be a decent enough thing to do. Same if you have to acquire the privilege to use it.
People who don't agree with something should have a way of expressing their views. Why is it acceptable to have a +1 button but not a -1 button? Why can people agree without giving any reason for their agreement but they can't disagree without giving any reason for their agreement? It's crazy that society works in this way and that people have such an irrational response to disagreement.
Because when you agree, that means the argument has already been presented - specifically, it's the argument that you are agreeing with. That is not the case for disagreement, where a counter-argument must exist, but has not been voiced yet.
Agreement and disagreement aren't superficial opposites like you're presenting them to be.
The reason why Github added these votes in the first place is so that people can give a signal of how welcome or not a certain change is to the project. If you only provide the signal for agreement but remove the signaling for disagreement and make it costly, then you'll get more people voting one way than the other. If it costs more to disagree then you're already rigging the game towards agreement.
That's not to say that I wouldn't like that bias resolved, but it's a bias that exists precisely because of the difference between 'agreement' and 'disagreement' that I described, and I'm not sure it can be solved in a technical manner.
...
If I left the above with no further explanation, it doesn't give you any signal as to why I disagreed with you. One the other hand, if we were having this conversation on GitHub, people who agreed with my counter-point could react with a +1, giving you a much stronger signal about what exactly the disagreement is about.
And once someone provides a valuable counter-argument, it's no longer "rigged toward agreement."
Compared to an explanation with several +1's, a drive-by -1 adds virtually nothing to the discussion because they carry so little information.
On GitHub? They absolutely do. It's a platform for collaboration, not idle chatter. If you do not wish to support your disagreement, you probably shouldn't be posting anything there to begin with.
EDIT: I've also already explained to you why 'agreement' and 'disagreement' are held to different standards. I'm not sure why you keep repeating this point.
Because your distinction is wrong.
A drive-by -1 is in no way different from a drive-by +1.
Both are equally useful. Both indicate how many people agree or disagree. Neither explains why someone agrees or disagrees.
If the explanation for +1 is in the post you are upvoting, then the explanation for -1 is just as well in the post you are downvoting.
They absolutely do.
No, they absolutely don't--GitHub says so. You think they absolutely should have to, but they do not.Here's an example: Alice posts a feature request on the issue tracker for Project Awesome saying that the project's mascot should be changed to a unicorn. Bob downvotes it. Neither person has provided an argument for their position.
According to you, Bob is required to explain why he doesn't want a unicorn mascot, but Alice doesn't have to explain why she wants one.
You are assuming that a positive argument will always be made in support of an assertion, and that therefore a negative argument must be made against it rather than merely a contrary assertion.
But it often happens that the pro side of an issue makes unsupported assertions and unreasonable claims, then the con side makes reasoned arguments, and the pro side proceeds to ignore the points raised by their opponents.
The real problem is anonymous voting. Anonymous votes are not very useful, because for all you know, the person voting doesn't even use the software in question. Voting within a team of collaborators could certainly be useful, even without substantiation, but "drive-by" votes by random Internet people are the problem.
EDIT: Ironically, this downvoting of moe's and my comments proves our points and demonstrates why anonymous downvoting is a problem. "We should only have reasoned arguments!" they say. But when reasoned arguments are presented in opposition to their claims, they merely downvote rather than making a reasoned counterargument. They do not do as they say.
And since the cost (in time and effort) of their anonymous downvote is far less than the cost of writing a rational counterargument, the level of discourse is driven further and further down as those who are willing and able to argue their positions rationally are discouraged from doing so. Why waste your time arguing with people who do so in bad faith?
Also, as others have mentioned, it only takes one person to write a negative comment, then others could +1 that.
Someone shouldn't have to expect to come up with an alternative just to voice the idea that something sucks.
This idea leaves you vulnerable to the "something must be done, this is something, therefore we do it" problem by unfairly biasing positive votes rather than negative ones. Yes, I read your rationale. I don't agree with it.
I'm not nearly as adamantly opposed to a downvote button, but I can understand the argument.
Sometimes people make silly claims or requests or demands. In such cases, one shouldn't be required to write a reasoned counterargument. A simple "nope" should suffice.
"This is why we can't have nice things." People assume the status quo is bad or wrong and that change is necessarily progress. It begins to take more effort to keep the good things that have been achieved than it does to break them and replace them with regressions. It requires more time and effort to defend them against the onslaught of unreasoned demands because of irrational bias against the status quo.
This is true not only in software but in politics and society. But for a simple example in the software world, just look at the Metro UI: it's awful for a million reasons, a regression even from Windows 95's UI--but to some people, it's change, therefore it must be progress, therefore it must be done.
What about a comment? Once someone elaborates why they disagree, others can trivially +1 it to show support of a specific disagreement.
On the other hand, you can disagree with both the original comment and someone's disagreement, prompting an additional "disagreement" reply.
Note that -1's don't carry as much information as you'd think. It could mean any one of these:
- Someone disagrees with you
- Someone doesn't like you
- Someone is angry or having a bad day
- Someone is retaliating or holding a grudge
Without any rationale, there's absolutely no way to tell the difference between a useful disagreement and juvenile aggression.
-Someone agrees with you
-Someone likes you
-Someone is happy or having a good day
-Someone is repaying a favor or maintaining a friendship.
Negation is different because it's entirely ambiguous. You can dish them out freely and retroactively rationalize your intention. -1's are way more susceptible to knee-jerk emotional reactions than +1's.
A relevant example. Think of the political candidate you like the most. If someone you really like asks you to +1 a persuasive argument about their competitor, would you? On the other hand, if they asked you to -1 someone, you probably would. Even if you knew very little about them.
Nobody really cares if you +1 something crazy, maybe you were just feeling agreeable that day, or you misunderstood the comment. But if you -1 sensible things you're going to get a bad reputation pretty quickly.
That's because people don't tend to write "-1", but rather disagree with a comment explaining why. GitHub is full of disagreement. We'd be in a much worse place if that was all expressed through downvotes instead of comments (unless of course, an issue is explicitly opting in to a vote).
> people will +1 something that they 90% disagree with because of who's saying it, don't kid yourself otherwise.
Ok yeah, you're right about the politics. Bad example. But in open source, I've seen much more comment-based pushback regardless of author.
That's like 90% of the PR's I look at.
Those downvotes would soon be corrected by other people reading the thread, and we wouldn't have to read bad tempered bickering.
Downvote for disagreement has been on HN for longer than you've had your account.
If you actually wanted a discussion of political philosophy or to discuss other less popular candidates, there's other places for that.
If you ask "Should we add this feature?", it's hard to understand what favorites mean if you don't have an anchor. Does 10 thumbs-up mean unanimous support, or is it just a small minority? It'd be nice to say "Oh, 10 upvotes... but there's 90 downvotes, so we won't do it."
FB and Hacker News are a marketplace of relatively-inconsequential ideas and thoughts. However, changes discussed on GitHub Issues can potentially have an impact on your company and livelihood.
just write:
thumbs up if you want A smile if you want B
problem solved
Feel like that would be very useful
+0 -> support from the sidelines (like for a change that doesn't directly affect you)/something that's not urgent but would be nice
-0 -> disagree from the sidelines/disagree with the solution but can't think of a better one
Also, my inner mathematician understands that function limits can tend towards zero from above, or from below.
Zero ain't always just a big fat zero.
+0: 'I don't feel strongly about it, but I'm okay with this.'
-0: 'I won't get in the way, but I'd rather we didn't do this.'
(These votes are strings, not numbers, though they closely resemble numbers. See also the existence of a "++1" vote.)
But making an opt-in, allow-negative-feedback control is not feedback I think they'd be wise to listen to. Users can edit issues. I'm finding it exhausting just to think through the implications of either allowing editing of the flag, or deciding that users have to get it right the first time. I can't imagine I'd find it easier to use - in fact I am sure I would be intimidated, plain and simple, by the fear of who-knows-what happening if I did the wrong thing.
(...but then, that's the most git-like thing I can imagine doing! something-like-a-VCS that you can build entire new companies' worth of brand-new development practices around and still be utterly impenetrable without first unlearning 30 years of perfectly functional version-control experience and collective wisdom. I can't express how glad I am that I don't make things for developers. Truth is, most user bases are a joy to work with. Developers... insist on dysfunction, it's non-negotiable. I think it's part of the whole, "we still don't know how to do good software engineering" schtick. It wouldn't matter if it were a solved problem to the point of a mathematical proof, nobody would allow it anywhere near their mysterious uncharted edge-blurring code artisanship. We really, really suck, both professionally, and at being adults. For the most part, anyway.)
While we can agree about what users should do, users not behaving as we think they should is the whole point here. Removing the -1 reaction won't encourage people to articulate their concerns. Nor will it discourage people from writing comments that explain why something is not a good idea. It simply provides a mechanism for people to register disagreement that is less obtrusive than the mechanism they would otherwise use. A cavalcade of -1's as comments obscures and thereby prevents substantive discussion.
Also, it's really easy to disagree with what I wrote without suggesting I am naive.
Hence proving the commenters point about negative comments :-/
Instead we got reactions, and it completely missed the mark. They've made it easier to be passive aggressive. Also it lingers on your post, instead of having the unconstructive comment stand on it's own. How does one respond to a down vote, make another comment saying "... hmm?"? It's weird.
I guess for the 90% it's ok. It'd be nice to be able to turn off.
"Issue 1234: We need this feature because reasons A, B and C."
If you don't think that A, B and C justifies the change, send a downvote and/or explain why A, B and C aren't good enough reasons.
An upvote is sufficient to say that "Yes, I agree with A, B and C. Do it."
Of course, if you agree with the change but for reasons other than A, B or C, you can leave a comment to start a discussion. It has nothing to do with culture. It's just a way to minimize the redundant "Yes, I agree with what you just said".
I use Github a lot for discussing future feature development, and in that context it is really valuable to see how many people think a feature is useful or not.
Github isn't primarily a social network. In a professional context it is essential that you can also express disagreement, or that you think something is a bad idea.
You know, "+1" usually has only one meaning:
- "I agree with whatever you're saying".
"-1" has however two separate meanings: - "I disagree with whatever you're saying because I believe that blah-blah-blah (reasons here)"
- "I disagree with whatever you're saying because fuck you that's why"
And "-1" button doesn't distinguish between those two cases.I'm not sure why this is such an emotional topic. Maybe I just have thick skin, but some random stranger on the internet giving me a down vote is not really even going to give me a moment of pause. Let alone so much that I feel that I have to demand rationalization from every person that cares to disagree with me.
Nonsense.
- Agreement: "I agree with whatever you're saying"
- Contributory : "I don't agree with what you're saying, but you elaborated your point *very* well and contributed to the discussion"
- Mercy: "I don't agree with what you're saying, but the hivemind punished you for no good reason, have an upvote"
- Popularity: "I like you and will +1 anything you write"
- Thanks: "I like what you did even if this post isn't relevant"
The second and third one are very common on sites like HN, certain places on Reddit, and Stack*Downvotes have:
- Disagreement: "I disagree with what you're saying"
- Anger: "Fuck you, have a downvote"
- Doesn't contribute: "I might agree, but you're not helping the discussion"
- Incorrect: "This isn't about agreement, your advice is wrong and/or harmful"Always maintained that this would make Reddit a much nicer place. Implement the vote tags, and then give people the ability to sort by votes, filtering out votes for disagreement.
"Mercy" is a very popular way to counteract -1's, but it disappears if we get rid of the ability to minus a post.
I believe "Contributory" is very rare as is. Hard to distinguish it from "Agreement" though.
One thing I’ve never seen is a vote that accounts for the number of unique visitors, or the total time that visitors spend on a page, or even contributor status, before weighing feedback. An issue that isn’t immediately important to a lot of people should require some time to decide popular/unpopular status.
A page shouldn’t show up/down status to anybody* until a significant amount of feedback has been collected, either. This would prevent knee-jerk down-votes of ideas that seem unpopular to everyone based on a few early down-voters. A proposal should stand on its own, at first. After a certain time period, the page could reveal whether or not an idea has really turned out to be popular, and at that point the cost of up-vote/down-vote could change (e.g. maybe only comments are allowed at that point, and no simple clicks).
Downvotes are particularly relevant for feature requests that may have substantial negative impact.
I'd actually implement downvotes/upvotes as zero-length comments so that they can be moderated and replied to.
It's 2016, can we stop worrying about if someone disagrees with you and just accept the fact they wanted to down vote on an issue rather than say nothing or leave a comment.
Haven't you had feedback along the lines of, "but did you take into consideration what impact the heat death of the universe will have on your design?" ?
GitHub should have done the same here.
With a tallied up/downvote system a la HN you can't tell, numerically, if a score of 1 meant "only one person cared" or "hundreds cared and there was furious disagreement".
Actually I'd be interested in a "top 100 most polarising comments" feed :-)
Imagine this scenario. Linus Torvalds posts an utterly inane pull request. Who is willing to deal with the backlash of "disagreeing with Linus". Sure, many are, but many are not.
https://github.com/FortAwesome/Font-Awesome/blob/master/CONT...
https://github.com/FortAwesome/Font-Awesome/issues?q=is%3Ais...
Would also be nice to see these reactions on the issue list so you can get a feel for the issues at a glance without digging deep into each one.
[1] https://github.com/dear-github/dear-github
[2] https://github.com/blog/2111-issue-and-pull-request-template...
So there is a quick reaction, but work on the idea may have been hidden from the public for a long time.
* '+1' to mean I like this feature or this issue affects me.
* 'heart' to mean I agree with a proposed solution, or pull request.
* 'hooray' when a solution is marked as fixed or a fix version has been posted for the issue.
There are no rules though, so we'll see.
This is probably an attempt to break that "user habit" by providing a tempting alternative to the type of person who spams comments in issues.
Additionally, by using emojis for voting maintainers get slightly richer data about how users feel about something. A user story with 1000 thumbsups might fall lower in the backlog than a user story with 1000 hearts.
> Have feedback on this post? Let know on Twitter.
Not everyone uses Twitter. It would be awesome to give feedback using the one account I'm guaranteed to have: a GitHub account. Otherwise I have to ask my question on HN...
(Not that I do :+1: comments, but the above is a scenario where automatically converting wouldn't work.)
Or just wait for people to learn the feature over time.
It definitely solves the horrible problem of too many +1s everywhere, but there are times when getting those emails are helpful.
e.g., top right corner on https://github.com/facebook/react/issues/6239
And yet... the header for that text says "lostthetrail commented 7 hours ago". Github repurposed the commenting system to stand in for the issue text itself. Side effect of a lazy implementation.
tldr; The first "comment" isn't a comment. It's the issue itself, and is where you add your reaction for the issue.
Or please don't. Part of the problem with the +1s is that they add noise. How are reactions going to cut down on the noise? Telling people to go ahead a +1 an issue (increase noise) is the opposite of what the "Dear Github" maintainers want.
Many projects do not use +1 or any other voting scheme to illicit priority from the general public. +1 comments and reactions provide little value. I have seen Github issues where people +1 already closed issues because they do not bother reading.
Reactions let you know the impact an issue may be having. I suppose it may not be good for every project, but dismissing it as "providing little value" seems a bit too much considering it was among the most often asked features by maintainers...
These are the following reactions:
1. +1
2. -1
3. smile
4. thinking_face
5. heart
6. tada
Do they capture the necessary expressiveness for the context? Facebook's reactions cover more emotions, but FB is trying to support reaction to anything that can be posted....which I just did to my team's Slack.
[edit: at least that's who I presume the GP meant]
GitHub actually has both +1 and -1, which satisfies me. But there's not much productive purpose with a smile/heart/tada other than to be quirky. (The thinking_face is neutral and adds nothing in this aspect)
Where is the sadface to go with smile? The warface to go with heart? Or the facepalm to go with party?
It'd be cool if they added a way to search through your list of reactions. This would allow you to effectively comment on an issue in an OS project, while simultaneously bookmarking it, so that you can go back and commit a fix when you have a free moment.
*Or at least the first time I've seen them used as an important feature.
- Don't allow a user to rate his own posts.
- Don't allow a user to issue contradicting votes like +1 and -1 at the same time.
- Use image emoji like everywhere else on the site for compatibilty.
But seriously, it likely means the person up voting the issue has also had the same problem and wants it fixed as quickly as possible.
I don't really get how I should "love" an issue, or "this issue makes me happy". Or the relevance of a "thinking face". The ui would be simpler with only 1 or 2 icons.
At least there's no "this issue makes me sad/angry" buttons.
^\s*(:\+1:|\+\d+)\s*\!*\s*$
Even something as simple as this would clean up most of threads like these: https://github.com/elastic/kibana/issues/1084I wonder if they will allow for repository owners to select which reactions they will allow? I think that would help with the limited selection but still allow owners to select what they consider useful to them.
This way you get better feedback.
That said, it'd be interesting to see a breakdown by age and background in terms of supporting or not supporting this addition.
One thing I don't like is that you're able to add multiple reactions to the same item, it sends mixed signals.
Deleted comment
In all seriousness - thank god. Hopefully it won't take Google Code issue tracker like levels of effort to get people to "please star the issue if it is important to you rather than commenting with +1".
cleans up the existing issue threads.