-
Notifications
You must be signed in to change notification settings - Fork 129
Contribution graph can be harmful to contributors #627
Comments
Thanks for this. I am encouraging my team to think of work as a part of their lives (and setting a good example by being off email while I am on vacation). Stuff like this helps. |
This comment has been minimized.
This comment has been minimized.
You're absolutely wrong, in fact I think it should be updated to more accurately measure their contributions' size as well as frequency. Let's double the gamification -- lines added and removed should be counted too. The current contribution graph isn't fair and skews it in favour of regular contributions rather than those of significance. EDIT: In all seriousness, if some people are taking the contribution graph so seriously then that's their own problem. |
quantity != quality |
I don't work on the weekend, either. But programming is not always work. It's a fun hobby for some of us, and off-hours is a chance to program things that we'd never encounter at work. Those of us that feel this way may be acting in a healthy manner, so... good for us? Would it make others feel better if those that program so often if we stayed of Github... and binge-watched Netflix or played video games all weekend? If you feel upset about being judged for not having big Github stats... imagine getting judged as some unhealthy workaholic because you enjoy programming! 😄 |
Careful about talking about over-commits. Some people commit few changes often, while others commit big changes less often. The result is the same. It is a question of personal style, preference and sometimes depends on the change. Looking at the number of added and removed lines relative to other contributors in a project, is much more indicative of the contribution. |
I am not really a "developer" professionally, and I find the gamification of the contribution activity graph helpful. I've been working on a side project, and I often get stuck on a problem and set it aside. Then my side projects die. When I started this newest project, I set myself a goal to commit something to GitHub every day. Am I perfect at this? No. I had like an 18 day streak though, and most recently, a 29 day streak. The encouragement that I "need" to look at my code before midnight every day to prevent from breaking a streak has helped me get back to my code regularly, and led me to find solutions to my development roadblocks. After I break a streak, I often end up losing a few days, because the motivation not to break the streak is gone. I've had a lot of fun with it. Monthly, I write a little post summarizing my statistics for the month on GitHub. And nearly every day, my project gets a little bit better. |
Interesting point, it also should be known that the contribution graph can be completely falsified with tools like gelstudios/gitfiti#30 . |
I think that the issue here is strictly the "streak" statistics and not the existance of the graph itself. I don't think there's any issue with tracking and displaying contribution counts since that alone is factual data without any implied interpretation. The issue with showing the two Streak stats (both longest and current) is that they imply that the most important interpretation is the Streak. That assumes that having a streak is a good thing--something to achieve and wear as a badge. That's just not the case, and we shouldn't emphasize it. Experienced people in this field know that:
So I would propose we keep the contribution graph and replace the two Streak statistics with something more meaningful and practical like lines per commit and word count per issue, leaving three graphs:
|
@nmccready I hope nobody's seriously treating this like something worth "cheating" at. If my commit isn't in by midnight, I failed my goal, and my streak is broken. There's no reason for me to cheat myself. Obviously, I could ensure I committed every day by holding over changes from days where I have more than one for a day I'm extra busy or something, but again, then I'm just cheating myself. |
If people want to sacrifice well-being for some idea of progress, it's not necessarily a problem (at least, it's their choice if it's a problem or not). What's troubling is if the idea of progress is somehow misguided, such that people are sacrificing in vain. Because groups of people tend to optimize for whatever is measured, measuring the "wrong" thing can lead to this misguided sacrifice. If committing everyday is not worth the worsened well-being, it might not be because the well-being sacrifice is so bad, but because the benefit of committing every day is not that good. A more appropriate metric than daily commit streak would address this. Perhaps the change you desire could be some way of measuring the actual value of contributions. Not a line-plus-minus (still optimizing for the wrong thing), but a way to measure how appreciative the users of, and other contributors to, the project are of your contributions. Then the decision of "commit today, or nah" is actually weighing people's desire for personal well-being against something worth fighting for. Which in my opinion is a more important outcome than just getting people to work less, since it's debatable whether or not working less is ideal (and is not necessarily the job of GitHub to make that judgment). |
I think it would also be a good idea to give users the option of allowing their private repo contribution graph to be publicly viewable (in an anonymised or obfuscated way so as to retain a level of security). Many contributors, such as myself, work on private repos (for organisations or otherwise) which disproportionately lower the statistics on public profiles and further drive the feeling of needing to be contributing to public repos. |
It's not the metric you care about, it's your opinion of how it's interpreted. I don't think you should care if someone thinks they can determine your value from this metric. A person's commit streak on Github is only that, a commit streak. While it might indicate workaholism/laziness, it is not enough proof to come to either of those conclusions. |
I have a feeling this discussion is going to become extremely subjective. It is based on personal preferences, goals, culture, experiences, and what one considers important. For some, a long stream is directly equivalent to being a dedicated committer, for others they use the graph as a reminder of what they want to build, whilst others simply do not associate any importance to it. I personally find the Github commit graph to be the equivalent of the Fitbit "streak" badge for those who are into health gadgets. I use the streak as a reminder that I have to take a rest day, some use the streak in completely other manners. It's up to them really. Being worried about other people's well-being whilst operating under incomplete information about their lives, struggles, interests, passions, etc. has the downside potential of leading one's perception towards a perception bias. If it came down to it, I'd vote for an explicit "opt-in" mechanism. This would allow someone to buy into the graph, or simply ignore it and continue with what they are doing. When I'm worried about a peer's well-being (in the open source world), I try and refer them to the OSMI website's resources section. OSMI is ran by the most incredible @funkatron and his work around open sourcing mental illness is nothing short of inspiring. |
@nmccready I believe @cirosantilli also has quite a bit of experience gaming the graphs, reporting his experiences in #370 & #374. |
@nwise If you think it's just a metric, and the commit streak is merely a statistical value rather than an attempt at gamification, what would a long/short commit streak indicate? |
@erikr: I'm lazy, and for me the contribution graph is a good way to motivate me to do at least something every day – open an issue I wouldn't have opened otherwise, fix a small bug I wouldn't have fixed otherwise, or simply take a break from binge-reading Homestuck. I don't want the contribution graph to go. Sure, it can be harmful. It can also be good. And it's possible that it does more harm than good, but how would you know when you haven't even acknowledged the existence of people for whom it's good? |
@untitaker - It means that there are consecutive daily commits with dates from that particular user. It tells us nothing about the conditions or quality of the commits. I think there needs to be a lot more data involved to infer anything more than "consecutive daily commits". If we can match this data with code-quality, programmer happiness, productivity or other developer 'values', maybe then some conclusions can be made. However, even with said conclusions, there is always a spectrum. Commit streak alone can not be used as a very strong indicator of anything except exactly what it's measuring. |
@nwise That is my point. The number of consecutive daily contributions is a meaningless statistic, and only useful for luring people into daily use of GitHub. |
The real issue here is that the color of the contributions is green, which is traditionally seen as a positive color. Ideally, good contributions would be marked in green and bad contributions in red. With projects that use CI, a breaking change would automatically be marked "bad". A day with some bad and some good contributions would be a bright orange. Since not all repositories use CI, contributions that cannot be classified as inherently good or bad would simply be shades of gray. A day with a good contribution and some contributions that cannot be classified would be a dark gray with a shade of green. The issue of overexertion needs to be addressed as well. After any six day streak all contributions should be marked red until at least one rest day is taken. The exact number needs to be adjustable to account for other cultures where the working week is less or more than seven days. For strongly religious members of one of the Abrahamic religions, a specific rest day needs to be chosen and any contribution on that day should have a small flame (:fire:) on them to allude to the fires of hell. As this may be misunderstood by some for political or cultural reasons, the imp (:imp:) symbol may instead be used by those who prefer it. |
@untitaker - I agree it's meaningless when it's the only data. However, I don't agree that it 'lures people into daily use of GitHub". If we unpack that statement, I think you are making the assumption that GitHub users care about that metric. Do you have any data that would show to what degree GitHub users care? You might very well be right, but I don't think you have enough data to make that assumption. |
So I wrote a user script. It's very much a first cut at the problem, and only a partial solution, but I guess if it means that much to someone, this is better than nothing? |
Several people have pointed out the personal motivational gains from being able to see their contribution graph, it would be a shame to lose this so perhaps it should just be made private (a user can only view their own contributions. I think the public profile page is probably not the best place to do these sorts of analytics or heuristics, but instead just allow users to manually prioritise and show-case their projects or projects they have worked on. At its best the public profile page could be a "CV" for developers, but it's a long way from that (easy to game streaks, no way to expose private work, GitHub decides how to order things). The problem is that a number of tech/recruiting companies already use at least it partly for that purpose. |
@nwise Do you have any data that Facebook users care enough about game invites? I myself have no data for whether the GitHub contributions graph has that effect. What matters to me is the intention of putting that graph on the profile page in the first place, and I can see only one possible reason. |
@untitaker - Your ability to see only one possibility does not make it the truth. |
Agree somehow. Useful codes matter infinite times than shabby enormous codes.Need quality rather than frequency. |
@nwise This is why I asked in my first post whether you can see any other interpretation. |
A person who decides not to take breaks is responsible for their own actions. It is not the fault of the graphs nor is it the burden of GitHub's to shepherd developers and make sure they are taking breaks appropriately. They are not a nanny. It's shameful and childish that this is even considered a serious issue, I was hoping that this would turn out to be a joke (April fools! ... no?) but sadly, it's true that there are developers who contend that others should be responsible for making good decisions for them, since they are apparently unable to carry out something so simple as working on a project in reasonable chunks of time. Personally, I think that if a graph is enough to drive you to madly commit yourself to a project for unhealthy amounts of time, maybe you should log out and seek a psychiatrist, rather than blame GitHub. |
There's more than just one side to this. While I cannot speak from the contributor perspective as I'm not a contributor of any opensource projects, I do contribute when I can to either private or very minor projects. The graph for me has a whole other meaning, even in my company we use it sometimes as a (very subjective) number to get an idea of how active an applicant was in the recent past. Also as a dev it helps you check your current stats. Obvious ones as "how many times did I commited yesterday?" and "oh... so I'm coding more on tuesdays apparently"... and not-so-obvious ones like "maybe I should start paying attention to my overall contributions on other projects". I think this whole idea of taking it out comes from just one side of the pond, while there's a lot of us using github from very different sides as well. And finally, if you're really getting motivated to work on a weekend because "my graph may look empty", I think there's a serious incentive problem here, which is very particular to @erikr and that's not really Github's fault or any other person's fault. |
Non issue, just stop comparing yourself with others. These streaks and graphs have that negative side, if you choose to use it for comparison like that. @ihsw : Any reasonable software engineer will tell you that the number of commits, or even the number of lines altered does not necessarily reflect the effort that one put behind a commit. Sometimes it takes a lot of debugging to change a couple of lines of code, sometimes the better solution is not to add hundreds of lines of code but do your research and don't reinvent the wheel. Sometimes activity does not necessarily mean progress. Sometimes getting to understand the domain first is a struggle and requires lots of code reading before you can start contributing. And this way of measurement (by number of commits and/or number of lines commited) can be harmful in the following ways: Now, one should be aware of this, and like many posted above, there are advantages to the stats, so, @erikr don't choose the dark side of the stats :) |
@KOLANICH You do realize that you can fake your graph, right? It's not that hard, there are scripts that do it for you. The vast majority of users who create a fancy image on their contribution graph do it with those tools. |
@SEAPUNK Obviously people who care about the graphs as a method of goal-setting are likely going to be honest to themselves. Nobody's suggesting this should be a valid way to compare yourself to others. |
@SEAPUNK, of course I know. Changed that comment to clarify my opinion. |
can't judge someone's work with graphs 😃 |
You think it is a graphic thing, then it is. But I think it is a timeline of my commitment. It's so amazing, it's like a track, I can find what I‘ve done this years or last year. Especially, when you hover on it, it can tell you how many commitments and what you've committed. This function is really helpful & useful. |
But even lines added/removed is another false way to judge the contribution of a developer. It's so easy to just copy and paste code into the project. There's no evidence to suggest the person who committed those thousands of lines know or even understand what it does, just that it solves the problem when they googled it. |
My coding style would also dictate how many 'lines' are added.
8 lines compared to 4 lines
|
That someone commits something every day does not mean they didn't take any break at all. You do not know how they spend their day. Maybe, as someone above mentioned, they just make it a habit of checking their project at least once a day and look for something to improve. Maybe one day they spent the whole day at the pool, and late at night they fix a minor bug just so they keep their hands in it. How can you tell? You can't. If someone used the graph against you, now that is a different matter. But that's akin to… someone killing someone with a hammer. Misuse of tool is not the tool's fault. |
I enjoy trying to get a solid wall of green. I don't work for a company, though, so all my commits are for projects I have fun with. I know writers who write stories everyday, and musicians play music every day. They can't help it. I tried a lot of creative things, and this seems to be the only one I can do consistently. It doesn't feel like work to me (mostly) and I take plenty of breaks. |
The term "work" is used a lot. While some of it may actually be for a job/career, I enjoy writing code as a hobby constantly reading and trying new stuff. I find this more relaxing than sitting on a beech. To each their own! |
Completely agree. A lot of companies that I interviewed with judged me on the basis of my contribution graph. Just because I don't commit everyday, doesn't mean that I suck as an engineer. If any company uses this as a metric, run as fast as you can. |
Research has been done on the influence of the streak feature (and its removal): https://arxiv.org/pdf/2006.02371.pdf by https://github.com/lukasmoldon/GHStreaksThesis |
@mxsasha I understand the intention in your argument, but I disagree with your solution. To me the Github streak feature is an indicator for a great but responsible software engineer. |
That's the thing - working on the weekends is NOT unhealthy, neither is a fully green streak. What's unhealthy is forcing ANY lifestyle on ANYone, whether overtly or by pressuring them to live their life that way. Making someone feel bad for not working on weekends is precisely as toxic as making them feel bad for doing so. |
But what if someone wants to feel bad if he or she didn't work? What if someone had a fruitful lifestyle contributing every day and then someone else just got away his/her goal and motivation? There are two sides to the truth. So why just don't add a setting and allow people to choose their own lifestyle? |
@PhantomYdn i'm fully on board with adding a setting! My comment is about those who ended up hurting people, by judging some lifestyles, in an effort to protect other lifestyles. In other words, a configurable option (for both "what i see" and "what others see about me") is the only equitable solution that allows everyone to decide their own work/life balance, without the need to pass judgement by deciding arbitrary things are "unhealthy". |
What about adding a setting to opt-out of streaks on your profile? That way everyone get's the cake. But I find it ridiculous to force the change to everyone just because someone whined that they wanna have free weekends and not feel bad about it. That's good and all but now Im forced to use an extra browser extension just to enable this again because I want something to keep me accountable and give me the extra push I need. |
+1 for adding opt-out option for the graph as a whole |
Code quality is supposed to be measured with Pull Requests and Code Reviews.Github Insights (contribution graphs) is literally about measuring the amounts. quality != quantity? Yes. That's the point, right? Two different criteria to measure productivity. You need to look at both perspectives to evaluate a team member's productivity. The tool is great by the way.Now one thing that's actually important and is not just biased conversation: |
I wanted to chime in that in defense of @isaacs own contribution graph (as of 051021) he has 2,054 contributions in a year. Of those 2,054 only 61 contributions were made on weekends in 18 days (Saturday or Sunday). A quick calculation shows 61/2054 = 0.0297 or 2.97% of his contributions are on the weekends. I might argue that having two or three percent by volume of his annual contributions are made on a weekend is pretty low. Another count is that 18 times in a year he made a weekend code contribution over the course of 52 weeks which is 18/52 = 0.3462 or 34.62% of his weekends he spent some time working. That might sound a bit high but this might be the price for being an inventor, founder and Former Node BDFL. That number is high only if you do the calculation wrong, as there are only two weekends out of 52 weeks a year where he worked BOTH Saturday and Sunday. So he only works both Saturday and Sunday 2/52 = 0.0385 or 3.85% of the weekends. So it could be said a decent bar for Principal Engineers and Founders is to work both Saturday and Sunday about three to four percent of the time. I think that is a pretty good example of as @mxsasha describes it as being more mindful of "help guard the well-being of the contributors and the communities" Each person needs to define their own level of contribution and safe guard their own mental health. Being self employed I certainly work weekends more than 34% of the time and I have it structured to be in balance where its usually towards the end of the day. So my weekends are spent outside being social and being away from the computer which is sometimes where my best ideas come from. |
I've started a discussion on the formal GitHub's feedback channel. Please upvote it so GitHub will know how much we want our privacy. P/S: Press the actual "upvote" button, not just react by the 👍 emoji. |
A common well-being issue in open-source communities is the tendency of people to over-commit. Many contributors care deeply, at the risk of saying yes too often harming their well-being. Open-source communities are especially at risk, because many contributors work next to a full-time job.
The contribution graph and the statistics on it, prominent on everyone's profile, basically rewards people for doing work on as many different days as possible, generally making more contributions, and making contributions on multiple days in a row without a break.
Stepping away from our work regularly is not only important to uphold high quality work, but also to maintain our well-being. For example, I personally do not generally work in the weekends. That’s completely healthy. I take a step back from work and spend time on other things. But in the contribution graph it means I can never make a long streak, even though I do work virtually every day except weekends. So the graph motivates me to work in my weekends as well, and not take breaks. And when I see someone with a 416 day streak, it means they haven’t taken a break for a single day in over a year. Although everyone can make their own choices, it makes me very worried about their well-being.
Any mechanism in our community that motivates people to avoid taking breaks and avoid stepping back, can be harmful to the well-being of contributors and is thereby harmful to open source as a whole. Even though it was probably introduced with the best intentions. If our interests are really in supporting open-source long-term, this graph should be removed or substantially changed so that it no longer punishes healthy behaviour. For example, what if we would give people achievements for taking breaks instead of working non-stop?
I therefore want to ask you to consider removing or substantially changing the contribution graph and it's related statistics, to help guard the well-being of the contributors and the communities.
I also wrote about this in a bit more detail on my blog: http://erik.io/blog/2016/04/01/how-github-contribution-graph-is-harmful/
The text was updated successfully, but these errors were encountered: