Skip to content
This repository has been archived by the owner. It is now read-only.

Contribution graph can be harmful to contributors #627

Open
mxsasha opened this issue Apr 1, 2016 · 202 comments
Open

Contribution graph can be harmful to contributors #627

mxsasha opened this issue Apr 1, 2016 · 202 comments

Comments

@mxsasha
Copy link

@mxsasha mxsasha commented Apr 1, 2016

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/

@steveholden
Copy link

@steveholden steveholden commented Apr 1, 2016

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.

@cixtor

This comment has been minimized.

@ihsw
Copy link

@ihsw ihsw commented Apr 1, 2016

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.

@yacineMTB
Copy link

@yacineMTB yacineMTB commented Apr 1, 2016

quantity != quality

@darrencauthon
Copy link

@darrencauthon darrencauthon commented Apr 1, 2016

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! 😄

@martindrapeau
Copy link

@martindrapeau martindrapeau commented Apr 1, 2016

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.

@ocdtrekkie
Copy link

@ocdtrekkie ocdtrekkie commented Apr 1, 2016

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.

@nmccready
Copy link

@nmccready nmccready commented Apr 1, 2016

Interesting point, it also should be known that the contribution graph can be completely falsified with tools like gelstudios/gitfiti#30 .

@rickhanlonii
Copy link

@rickhanlonii rickhanlonii commented Apr 1, 2016

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:

Stepping away from our work regularly is not only important to uphold high quality work, but also to maintain our well-being.

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:

  • Contributions in the last year
  • Lines per commit in the last year
  • Words per issue in the last year

@ocdtrekkie
Copy link

@ocdtrekkie ocdtrekkie commented Apr 1, 2016

@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.

@tscizzle
Copy link

@tscizzle tscizzle commented Apr 1, 2016

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).

@rorz
Copy link

@rorz rorz commented Apr 1, 2016

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.

@nwise
Copy link

@nwise nwise commented Apr 1, 2016

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.

@davidcoallier
Copy link

@davidcoallier davidcoallier commented Apr 1, 2016

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.

@TPS
Copy link
Collaborator

@TPS TPS commented Apr 1, 2016

@nmccready I believe @cirosantilli also has quite a bit of experience gaming the graphs, reporting his experiences in #370 & #374.

@untitaker
Copy link

@untitaker untitaker commented Apr 1, 2016

@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?

@neongreen
Copy link

@neongreen neongreen commented Apr 1, 2016

@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?

@nwise
Copy link

@nwise nwise commented Apr 1, 2016

@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.

@untitaker
Copy link

@untitaker untitaker commented Apr 1, 2016

@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.

@lyschoening
Copy link

@lyschoening lyschoening commented Apr 1, 2016

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 (🔥) on them to allude to the fires of hell. As this may be misunderstood by some for political or cultural reasons, the imp (👿) symbol may instead be used by those who prefer it.

@nwise
Copy link

@nwise nwise commented Apr 1, 2016

@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.

@aaron-em
Copy link

@aaron-em aaron-em commented Apr 1, 2016

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?

@josephearl
Copy link

@josephearl josephearl commented Apr 1, 2016

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.

@untitaker
Copy link

@untitaker untitaker commented Apr 1, 2016

@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.

@nwise
Copy link

@nwise nwise commented Apr 1, 2016

@untitaker - Your ability to see only one possibility does not make it the truth.

@xros
Copy link

@xros xros commented Apr 1, 2016

Agree somehow.

Useful codes matter infinite times than shabby enormous codes.

Need quality rather than frequency.

@untitaker
Copy link

@untitaker untitaker commented Apr 1, 2016

@nwise This is why I asked in my first post whether you can see any other interpretation.

@wrq
Copy link

@wrq wrq commented Apr 1, 2016

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.

@rojosinalma
Copy link

@rojosinalma rojosinalma commented Apr 1, 2016

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.

@joantune
Copy link

@joantune joantune commented Apr 1, 2016

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:
Bias towards writing code instead of research/thinking;
Bias towards non DRY code reuse;
Anxiousness when you're doing important 'state of the art like' research instead of writing code as you might feel that you're not progressing (when sometimes it's preferable that you do some research before [the equilibrium of this depends on the task and your experience, and even programming styles]).
These kinds of 'scripts' that I saw references to, and breaking up changes in tiny commits just because of the stats.

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 :)

@SEAPUNK
Copy link

@SEAPUNK SEAPUNK commented Aug 22, 2017

@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.

@ocdtrekkie
Copy link

@ocdtrekkie ocdtrekkie commented Aug 22, 2017

@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.

@KOLANICH
Copy link

@KOLANICH KOLANICH commented Aug 23, 2017

@SEAPUNK, of course I know. Changed that comment to clarify my opinion.

@naeemrashid
Copy link

@naeemrashid naeemrashid commented Nov 16, 2017

can't judge someone's work with graphs 😃

@CatzillaOrz
Copy link

@CatzillaOrz CatzillaOrz commented Nov 24, 2017

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.

@BigRiceEater
Copy link

@BigRiceEater BigRiceEater commented Jan 18, 2018

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.

@BigRiceEater
Copy link

@BigRiceEater BigRiceEater commented Jan 18, 2018

My coding style would also dictate how many 'lines' are added.

public class Person 
{
    private string _name;
    public Person(string name)
    {
        _name = name;
    }
}

8 lines compared to 4 lines

public class Person {
    private string _name;
    public Person(name) : _name(name){}
}

@georgehank
Copy link

@georgehank georgehank commented Jun 2, 2018

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.

@ddonche
Copy link

@ddonche ddonche commented Aug 12, 2019

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.

@tdelam
Copy link

@tdelam tdelam commented Sep 18, 2019

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!

@FrozenHearth
Copy link

@FrozenHearth FrozenHearth commented May 23, 2020

the issue is about recruiters and other incompetent people abusing the graph. and spreading awareness about the issue, and recognizing it is an issue.

The contribution graph and how green it is used instead of several false metrics. If you like it awesome, but the big picture -> talent and skills for a job post are not being assessed with due diligence. And your love for coding is being a good shield for that.

Imagine yourself as someone starting out from humble beginnings. GitHub and false metrics, can make life pretty crap, if you want to make it big.

Especially from what I've heard from folks in India its depressing. employers separating the chaff using reliable metrics like this.

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.

@rt-hamilton
Copy link

@rt-hamilton rt-hamilton commented Nov 14, 2020

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

@christianrolle
Copy link

@christianrolle christianrolle commented Dec 18, 2020

@mxsasha I understand the intention in your argument, but I disagree with your solution.
You are right with the claim, that a fully green streak is a strong signal for unhealthy behavour. No doubt about it.
But instead of demanding a different kind of measurement we rather should push on the narrative, that working at weekends is unhealthy. And it is also a real harm to code bases.
Sure, this approach is harder, but with having this narrative implemented, the fully green streak is not perceived positively anymore. Instead it is perceived as negative as it is. Maybe weekend dots could be red instead of green?

To me the Github streak feature is an indicator for a great but responsible software engineer.

@ljharb
Copy link

@ljharb ljharb commented Dec 18, 2020

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.

@PhantomYdn
Copy link

@PhantomYdn PhantomYdn commented Dec 18, 2020

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?

@ljharb
Copy link

@ljharb ljharb commented Dec 19, 2020

@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".

@ze-gomes
Copy link

@ze-gomes ze-gomes commented Jan 15, 2021

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.

@amygimma
Copy link

@amygimma amygimma commented Mar 25, 2021

+1 for adding opt-out option for the graph as a whole

@michellemerrill michellemerrill unpinned this issue Apr 27, 2021
@zerobytes
Copy link

@zerobytes zerobytes commented May 21, 2021

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.
If one's manager is using the tool wrong, why is it a tool problem?
Hammers were made to hammer, so If you're throwing hammers at your teammates that's on you.

The tool is great by the way.

Now one thing that's actually important and is not just biased conversation:
Do the lines added/removed counter take images into consideration? If so, then it might cause problems and lead to unrealistic results. If anyone can answer this I would be glad

@datatalking
Copy link

@datatalking datatalking commented May 30, 2021

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.

@grashaar
Copy link

@grashaar grashaar commented Jun 3, 2021

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.
github-community/community#4098

P/S: Press the actual "upvote" button, not just react by the 👍 emoji.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests