isaacs/github

Contribution graph can be harmful to contributors

mxsasha opened this issue Β· 202 comments

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/

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.

πŸ‘πŸ‘ŽπŸ˜„πŸŽ‰πŸ˜•

ihsw commented

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:

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

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

rorz commented

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 commented

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.

TPS commented

@nmccready I believe @************ 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?

nwise commented

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

nwise commented

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

nwise commented

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

xros commented

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.

wrq commented

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

@wrq You are implying that humans can isolate and protect themselves from all kinds of psychological manipulation, and that people who somehow let other parties influence their decisions are considered "weak" and should, as you say, seek a psychiatrist.

  • If I call you an asshole, would you blame yourself for being offended?
  • If Wall Street causes the next financial crisis, would you blame the 99% for "submitting to the system" in the first place?
  • If Facebook makes modifications to their UI in an attempt to make usage addictive, would you only blame the user?

I don't even disagree with you that people are responsible for their own actions, even in this case. But I don't think they're the only ones responsible.

ihsw commented

@joantune You have a point, even lines added/lines removed count is not appropriate for this situation.

The problem is people are using it as a signal for measuring someone's worth.

There are so many other signals -- learning new programming languages, fixing broken tests/increasing test coverage, creating awesome new features, cleaning up crufty API libraries, and so forth -- but GitHub isn't showing them on profile pages.

Clearly there is a desire for such signals as people are either 1) using it to elevate one's perceived stature 2) using it to measure other people's perceived stature.

Personally I think this is an opportunity for GitHub to obviate such a signal, one that accurately measures someone's quality of work.

Commiting (and writing) code is just a very small part of our jobs. Maybe 10%. Sometimes I am weeks offline living in a cave designing, prototyping and thinking about how I should write and structure my projects. I've thrown away millions lines of code. I am not a active github user on public repos and don't care about github a lot, but thinking that a graph can be harmful is just sad. Who cares? You have to outgrow. Our juniors are commiting/pushing their code every day, if some graph tells you that they are better/more productive programmers so be it..

wrq commented

@untitaker Yes, to all.

I'm not absolving Github of blame, and nobody can do it, because NO system is perfect. Rather, each has individual flaws and drawbacks, as well as advantages, etc.

It is the user's responsibility to look at a system they use and ask themselves:

"Is this beneficial to me? Am I completing more work, or producing better work, or completing tasks quicker, because of this system?"

That's more than one question, but anyways, you catch my drift.

I don't want to sidetrack onto what is offensive and what isn't, as in your first point, but I hold myself to the standards that I preach and defend. I would never ask someone to consider a standard of operation that I could not myself reproduce. That would be dishonest.

Thusly, I can't sit here and say, "Oh, well it's definitely Github's fault for putting this ADDICTIVE graph right where my eyes look. How dare they try to DISRUPT my workflow by providing more information about the project for free! Those animals, have they no humanity?"

I just can't. The furthest I'd be willing to lean in that direction would be user settings to hide/show graphs. I think that'd be slick anyways, to get more control over what data we see and whatnot. But I won't claim that it's GitHub's responsibility to provide that, and it won't break my heart should they choose to ignore this issue entirely and focus on actually getting work done rather than complaining about features that other people use to get work done, and complaining that these same features are somehow responsible for choices that other users VOLUNTARILY make.

If I don't sound exasperated, please know that I am, and that I chose to be.

@ihsw : I agree with most of what you said, minus with the part that 'Github should obviate such a signal' people that judge based solely on Github graphs are not making good judgements, and for some folks, like @ocdtrekkie the stats have a positive effect, so, I would maintain them

Help, stuck in a Github streak and can't get out.

This is a tool, and I don't think that this is a bad tool though. If it does encourage a way of working, that's more frequent/smaller commits, and I'm not so sure that's a bad thing. Landing huge diffs that are extremely hard to review is a big problem in the industry.

If you don't like the tool, perhaps just hide it with a user script?

Fact: this is an april fools' post

Fact: the contributions graph is designed for petty bragging, scouting vulnerable junior employees and reinforcing the 'work for free while our company gets rich' culture of open source

Fact: my entire contributions graph is comments on pedantic github issues because I moved all my projects off github

wrq commented

@johnstt Did you read OP's accompanying blog post? I fear that it may be serious, to him.

I hope it is, since I agree with it. The fact that it could be a joke and you guys are all diving on it to write tryhard essays only makes it better.

Help, stuck in a Github streak and can't get out.

@KevinGrandon heh, yeah - this is a legitimate issue. I started, worked for it, and now don't have a good reason to stop :P

Seriously though I am on a streak and it's fine - it's been challenging, fun, productive, and sometimes hard (in a good way). No bragging rights claimed, all recruiters ignored, and no cheating.

TL;DR the contribution graph can be good or bad imo - depends entirely on what you, yourself, make of it. I've enjoyed it.

My contribution streak is a personal thing and I've learned a lot. I don't recommend it to anyone else, unless they find their own reasons to pay attention to the graph, and are happy with those reasons.

One personal anecdote - in the early days I did it because I wanted people to feel confident using a particular project I was working on. Having no profile can make it hard to get feedback / engagement / users, so I saw maintaining a streak as a public way of saying "hey - I'm serious about this, it's not going to get dropped next week".

Therefore some days I'd be working on other stuff and still pick up an issue or two that I could fix quickly, that someone else cared about but otherwise might not matter to me. Discipling myself to do little fixes because "I have to do my streak" was actually great for my project, and again - I learned a lot along the way.

I haven't made my first commit to a public Github however, it seems to me you can easily keep your streak with minimal effort. Why not just stash a small commit during the week and have a cronjob commit it for you on Saturday and another Sunday?

As you can see on my profile for a while I was trying to keep my strike. I had it for close to a year.

It was extremely unhealthy. The moment I decided to break it was when I was with my family in Costa Rica to relax and I was trying to find internet connection so I can push at least one commit. Everybody was at beach enjoying their time but I was begging for WiFi!

It was my fault to do this but this graph helped me to have the idea that keeping the strike going is more valuable than enjoying my vacation.

screen shot 2016-04-01 at 9 46 38 am

[spills Soylent on standing desk]
b-b-b-but the big data guys told me more data is always better

Gamification!!!!

the fact that there are multiple people in this thread either advocating (or actually creating and using) scripts to push small commits once a day or change commit timestamps just to "win" at this "game" is reason enough to not only remove this feature (which won't happen), but more importantly, to not use or associate with this website at all!

@mzehnich That's ridiculous. A small number of people choosing to doctor a meaningless fluff metric isn't a good reason to remove a feature many people find appealing and/or useful.

The graph is for fun. If you want a streak and you work hard Mon-Fri I don't think a small commit even scripted is seriously cheating to win a game. I was thinking they should do this to preserve their sanity and fullfill their anal retentive desire. Obviously if you are competing with others then that's your game and you shouldn't cheat.

Why not just let users disable the visibility of their contribution graph? If they find it annoyingly distracting or they don't like what it tells other people about their GitHub usage, let them turn it off.

The contribution graph is a signal, both a social one and a personal one. It is communicating something both to others and to the person. People care a lot about communication, so why not just give them a little more control over it?

(Of course, this does lead to the follow-on problem that choosing to disable or enable your contribution graph is itself another signal and another thing that may acquire social meaning, but there's only so much you can do.)

Why not put an off switch on this? There are things people would rather not see as a measure of their work.

One kind of developer may need the kick in the pants to get going each day, while to another, it would be needless pressure.

I definitely see no reason not to provide a user-specific off switch for this.

The contribution graph is a signal, both a social one and a personal one. It is communicating something both to others and to the person. People care a lot about communication, so why not just give them a little more control over it?

Because most of what's being communicated is worthless consensus-building hugbox nonsense. Forking repositories and posting comments on everything in sight (about codes of conduct, names of repos, licencing etc) isn't software development.

(Of course, this does lead to the follow-on problem that choosing to disable or enable your contribution graph is itself another signal and another thing that may acquire social meaning, but there's only so much you can do.)

Right. It adds another way for people to distinguish themselves that has nothing to do with actually being a good software developer. This is the part of the contributions graph that resonates with people - they can look productive and interesting without being productive or interesting.

That's ridiculous. A small number of people choosing to doctor a meaningless fluff metric isn't a good reason to remove a feature many people find appealing and/or useful.

What about all the people who don't doctor it, but are obsessed with constantly comitting to their *JS projects like a neverending cry for attention? There are people in this thread describing their github experience like it's a drug addiction.

Who fucking cares

I agree with @wrq:

Key points:

  1. Don't blame others for problems you incur
  2. Having a problem is not a bad thing in and of itself
  3. How is this any different from other websites with up/down votes like reddit or HN?

I would support removing it not for any of the reasons in the original issue, but rather because it's useless. But, then again, seeing people hack away at the contribution graph to make it show images or names is pretty cool.

Have a setting where a 'streak' becomes redefined as doing commits on M-F and not doing commits on Sat/Sun and any commit on the weekend will break the 'streak'. Someone could probably write a greasemonkey script to do that.

Forking repositories and posting comments on everything in sight

https://github.com/johnstt?tab=activity

@grahamannett
I already explained that I've moved all my projects off github. I'm capable of hosting my own scm repo :)

But what I'm referring to is easy to find if you glance through most of the profiles on this page. The vast majority of people in these policy-related threads have like 100 repos forked and their contributions (if any) are always one liners in documentation and issue posts.

The element hiding / blocking rules are:
##.contributions-tab > .flush.boxed-group
or
###contributions-calendar
;-)

I think it's important to frame conversations like these in terms of values, because (a) it's the only productive way to talk about this, and (b) critically, this isn't about the contribution graph itself, but how the contribution graph makes some people feel.

So, for example, I value humility, and healthy interpersonal boundaries. Humility means that I have an accurate assessment of myself; neither regarding myself too lowly or too highly. Having healthy interpersonal boundaries means that I don't allow other people's needs or feelings to control my behavior or sense of self-worth.

Expending energy worrying about what other people think of me as a result of my contribution graph runs counter to both of these values. Maybe our efforts would be better spent working to instill good values into the community, and reminding each other that our identities aren't tied to a series of colored squares. I'm pretty confident that approach would be more sustainable, scalable, and more personally healthy than needing to impose our own sensibilities on our external environment in order to feel okay.

Personally, I don't think I've even noticed the contribution graphs since that week people figured out how to make pixel art with back-dated commits, although I'm sure it's useful for some people in a Jerry Seinfeld "Don't Break the Chain!" kinda way.

It's not harmful. You just need to interpret it correctly.

If you use it to compare contributors: it's like judging truck drivers only from their truck odometer, without considering fuel utilization, wear and tear of trucks, trips completed, how they treat customers, etc.

If you use it to measure your performance: if for you being in a 20 days streak is a good thing, that's your opinion. For others it might be a sign that it's time to take a break.

GitHub has a strong responsibility to the programming community and they should be doing everything they can to protect developers. Too many developers have already lost their sanity to green bumps on a contribution graph. Many people don't know how to manage their own time, lives, and stress, and as a result are subject to all of the immense social pressure of being a developer. This has to stop now before more people are pressured into working when they don't really want to.

We should take this initiative even further, and block code pushes during certain times. Blocking code pushes between the hours of 4pm and 10am, and on the weekends, would go a long way to helping programmers regain their sanity.

I think GitHub could be doing more for developers health and well being, by getting more involved. They should sponsor vaccinations for open source contributors, and provide helmets for us to wear so that we don't accidentally bump ourselves. They should institute a sick day policy and "personal wellness days" that provide opportunities for open source contributors to get much needed rest.

I look forward to seeing GitHub step up its position on social responsibility in the community. Thank you.

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

I think @erikr is incorrectly assuming that all commits are work.

I use the contribution graph to help motivate myself to contribute to side projects. Outside-of-work programming is important for my own well being, so this feature actually helps me if anything!

The problem is that the graph is so prominently displayed on user's home page. If that graph existed hidden on some stats page it wouldn't be so much of a problem. When people land on my github page, one of the first tings that their eyes get drawn to is the green contributions graph. Sort of like how when eople fist look at me, they see my clothes. I want to wear good clothes to make the best impression the same way that I want my github profile to look as best as it can for when people land on it.

The current graph works in such a way that having streaks makes your profile look the best. People who don't work in a "streak happy manner" are at a disadvantage. The solution is to have other graphs that emphasize other aspects of programming, and let the user choose which one that gets displayed on their profile page.

For instance, a lot of github superstars that I've seen have a very narrow (but vast) field of contributions. I remember browsing through a list of the top 100 github superstars. A lot of the top guys only contributed to one community. The number 1 guy had a bunch of node projects, but nothing else. The number 2 guy had a bunch of wildly popular java projects, but nothing else outside of his java niche. The number 3 guy had 10 really popular python projects, and nothing else, etc etc etc.

My programming habits are not like this at all. All of my popular projects exist under completely different, non-overlapping communities. If I were to choose a contribution graph, I would choose one that emphasizes this aspect of my contributions. Another programmer who codes every day might choose to use the existing contributions graph on their profile page.

@pkallos
As you can see on this website GitHub is not taking their responsibility at all: https://afsp.org/about-suicide/suicide-statistics/

It's good to see that so many of you care about this issue! I am definitely serious - this is not an April fool's joke. Nice to read various different views on this issue. Sadly there are also quite a few very disappointing comments, that make clear just how important it actually is to continue spreading awareness about mental well-being.

I'll write something in the next week or so, addressing a range of questions and comments from this thread.

wrq commented

LOL @ people literally implying that GitHub is responsible for suicide.

The neoliberal-emotional-jihadism is absolutely outrageous. To sit there and then outright say that other views are just categorically wrong, views that you haven't really even thought through yet, is the caliber of logical conversation I would expect from a toddler; "You're different, and I'm right, so you must be wrong."

Then the original author @erikr of this issue actually chimes in with "Oh, yeah there were different views on this issue, but the ones that don't line up with mine are disappointing and wrong."

As a sidenote: that people have scripts and cron jobs set up to spoof commits so that their streak is maintained is a bit ridiculous in itself, as well. I'm a practical guy, myself, so maybe I just don't find GitHub commit-everyday streak a valuable metric, especially pertaining to whether someone can do their work or not. Further, the diligence required to just log in and commit something is minimal, so is it even necessary to do that anyways? If you care enough to automate the falsification of the streak, why not just write a real commit? Clean your code up or write some tests or something. It's not that hard, and it would look better than when the one guy who actually does care about your streak looks through and realizes all the commits were faked.

Ultimately, that's all a moot point because it doesn't really make a difference, and only a fool pays anything more than a glance at it. If it controls your life, your thoughts, your emotions, you have got to realize that it something that you decided on your own, and something that only you can resolve. I don't need to reiterate that it's not GitHub's responsibility, or at least I shouldn't have to, but I'll add that it's not within their power to repair their users 'mental well-being' if that person has sunk to the point where small, green squares on a screen affects their day in a significant way whatsoever.

There are people out there with actual mental disadvantages who are still able to get work done despite themselves, and this thread is a monument to their continued disrespect throughout the entire industry. It's absolutely shameful and barbaric to even think about comparing the problem of this stupid graph to the issues some of these other developers face. There's people out there writing code with no hands, without the ability to see, without the ability to hear, and some even worse off than that, so there's absolutely, positively no excuse for developers who choose to claim that a graph is the reason they aren't happy, or aren't able to work, when they know full well that if these crocodile-tear campaigns succeed and rip away another feature, there will be something else to complain about while other people get work done.

I can not bring myself to calmly write on, so I won't.

Actually, this kind of analytics makes more sense as a separate SaaS offering in any case. The social code gamification industry is ripe for disruption.

The social code gamification industry is ripe for disruption.

Beautiful quote from that satirical show "Silicon Valley"!

This is not at all about the graph, it's about how the graph makes you feel. Changing some neutral gamification metric because it affects your feelz is an odd way to view the world. When digitalocean holds their annual t-shirt competition, would you complain that it's affecting your mental health to get all those PRs and you should just be given one for free because feelz?

If github really wants to entertain this, why not provide an off button for all the sensitive developers whose self worth is wrapped up in stars/green squares? Turn off your commit graph, the stars on all your projects, etc. The rest of us can enjoy the features of this website and you won't have to feel any way about it.

@leshow
What about people who don't want to work in an industry built on fake garbage like the contributions graph? More and more people have resumes that read like an advertisement for github (in fact the personal 'github pages' stuff is made to encourage this), so recruiters are obviously going to look at contribution graphs and it will affect how they rank people (even if it's all meaningless).

If it hasn't happened already, it's only a matter of time before someone gets passed on a job opportunity because their github fronting game wasn't as strong as somebody else's.

nv-vn commented

I really agree with @ocdtrekkie here, the gamification of commits is something that pushes me to actively work on side projects/personal projects when I would otherwise hold off on working on something for a few weeks and then come back and have to find all the things I was working on before that I didn't get to finish.
Also, as someone who programs as a hobby instead of as a profession, working on the weekends is a lot of fun and probably where most of my work comes from. When I have extra time, I'll start a project on Friday or Saturday and then do some small touches here and there over the week before going back to doing major changes on the next weekend.

@johnstt I don't think the industry is built on the contributions graph. The world is not going to end because there's some green boxes on GitHub profile pictures, and some people care for them.

I had no idea people took their streaks so seriously. FWIW, an inactive contribution graph does not negatively affect my opinion of someone when viewing their GitHub profile, for all I know they could be very active on private repositories or on another hosting service. I also don't see long streaks as impressive because they can easily be gamed or can be a signal for unhealthy behaviour.

@wrq I gave your post a -1 because even though I think you make some great points, it's too disorganized, emotionally charged, and negatively toned to be a valuable contribution to this discussion.

Folks, what about stackoverflow stats instead of Githubs' charts and
streaks. I'll tell you that IMHO recruiters or professionals that look to
Github stats instead of Stackoverflow aren't doing it right, and you
probably don't want to work for idiots.

On 00:19, Mon, Apr 4, 2016 Rick Hanlon II notifications@github.com wrote:

@wrq https://github.com/wrq I gave your post a -1 because I think it's
too disorganized, emotionally charged, and negatively toned to be a
valuable contribution to this discussion.

β€”
You are receiving this because you were mentioned.

Reply to this email directly or view it on GitHub
#627 (comment)

@joantune From my short experiences on Stack Overflow, I wouldn't want to work for a company that cares about Stack Overflow stars either. I've found that community often outright hostile to anyone who isn't a regular there.

@ocdtrekkie
Do you have any examples handy?

@johnstt This was me trying to figure out some code: http://stackoverflow.com/questions/33904788/replacing-me-begininvoke-when-refactoring-to-a-module

I got a downvote on my question before anyone trying to answer it even understood what I was asking. As requested by general Stack Overflow conduct, I edited my question to add more information as much as possible. I found the one guy with over 10k points or whatever to be pretty useless, and then was really short with me when I tried to explain that what he was suggesting wasn't what I needed. (It seems the attempts to answer were focused on synchronizing back to the UI thread, even though I stated repetitively that wasn't necessary, nor the goal.)

I ended up solving the problem myself.

Most of the rest of my opinion is based on seeing other threads and conversations I've read there over the years. I haven't a lot of direct links I can provide you. I've found a lot of communities with downvoting capabilities tend to breed overuse of them, and people who tend to be short or vindictive often gravitate to them.

There are definitely people who rush to answer questions or have a big ego because they have a lot of gold stars. On the other hand, the user profiles don't show something like the contribution graph that can be used to (incorrectly) judge someone's work habits at a glance.

What profiles on stackexchange do provide is a history of real honest activity: answers, posts and so on. There's no equivalent to the people on github who fork 200 javascript projects and say they're contributing to open source.

You can't expect every question you ask to turn out nicely, just like you can't expect everyone hiring new programmers and inspecting github profiles to view the contribution graph the same way you do. A good design approach would be to ask 'what are the positive benefits of the contribution graph?' and act accordingly.

nv-vn commented

On the other hand, the user profiles don't show something like the contribution graph that can be used to (incorrectly) judge someone's work habits at a glance.
There's no equivalent to the people on github who fork 200 javascript projects and say they're contributing to open source.

Actually, Github won't count these changes if they're not merged into the main repository and on the master branch (as well as some other constraints). I assume this is to differentiate between legitimate contributions and "I edited a few lines of the README" changes. Source.

On the other hand, it might be both more interesting and beneficial to show involvement with projects not owned by the user, in terms of a couple of combined metrics like:

  • Whether they have write access/are in the organization
  • Number of commits
  • Total number of changes by line count
  • Number of issues opened, commented on, or closed
  • Number of pull requests opened, commented on, merged, or closed
  • Number of changes made to the wiki

That way, you'd have easy access to a page showing how well the user is able to work with others and contribute to large projects rather than just showing that they do, in fact, write a lot of code (which is what the current system does). This would be more of an employer-targetted metric than a personal goal metric.

@johnstt The industry is not "built on a contribution graph". You're making a untrue statement based on how you feel about a neutral metric.

@rorz

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.

+1

Judging others based on their graphs aside, here's some good counterpoints from an old John Resig post about why it can be good to code every day: Write Code Every Day.

The contribution graph is a builtin Seinfeld Calendar (as previously mentioned), which can help motivate you to become a better programmer who ships more often. This can be especially helpful if you sincerely feel like you're making very little progress on your side projects, but would like to.

Of course, whether or not you publicize this information is what this discussion is really about. Just thought I'd share some tangential thoughts here.

I've noticed that the streak information is gone (at least here, not sure if github does a/b testing of UI changes), only showing total number of contributions in the last year, above the graph:

screenshot

I think this counts as fixing this issue since it stops encouraging long uninterrupted streaks.

Gone for me too. Very sad that whiners won out here.

ihsw commented

My request to count lines added/removed instead of commits, sadly, went unfulfilled.

Did an Opinion-based blog post with ZERO Empirical Evidence get the Streak feature disabled for everyone...? Why not just let people _opt out_?

595 up-votes of people who prefer to not write code on their "days off" have "spoken" for a community of _MILLIONS_ of Developers? Wow ... the "Democracy" of the 0.0001%.

I don't have anything against people who don't want to code on weekends, because they prefer to have other hobbies, go to church or spend time with family or what-ever. I have an issue with a vocal micro-minority who impose their opinions on the 99.999% who had no idea this repo/issue even existed.

The _science_ around (good) Habit Formation is well documented, people who want to make positive changes thrive on "streaks". Are you saying that writing code (for fun) is a bad thing...?

Congratulations @erikr @steveholden and all the up-voters who cannot stand to see other people enjoying their spare time by coding and cannot conceive of the possibility that other people could find the craft of coding to be as relaxing as playing an instrument or going for a walk in the park.

I'm committed to getting to my 10,000 Hours as a coder and feel sorry for those who have given up and instead want to spoil it for others.

I want to work with the coders who have a (real) GitHub streak because it shows clearly the people who are dedicated to achieving mastery vs. those who just go home and play video games and have not evolved their skills since they left formal education. I want to work with people who are _intrinsically motivated_ by writing code.

So what if you don't have the "high score" you don't have whine about how others don't have a "_work-life balance_" just because they have chosen to invest their time in a particular way.

You are the _spectator_ sitting on the couch complaining
that the athlete/musician/artist makes too much money.

If you don't want to invest 5 minutes each day to levelling up your skills that's fine,
just ignore the contribution streak feature and go back to your other hobbies.

@github how many _PAYING Customers_ upvoted?

Dude calm down

Speaking of empirical evidence - have you read the paper the 10,000 hours concept comes from? How about the ones challenging and refuting it?

Spending every waking hour contributing random bits and pieces to javascript projects and hoping some san francisco senpais will notice you does not qualify for "forming good habits"

I would like to think it's possible to achieve mastery without staking my entire reputation on how github perceives me. You might want to get on this level :^]

@johnstt It's not about being noticed in Silicon Valley. It's not about competing. That's what it seems hard for some of you to understand. It's entirely about self-measure and goal setting for yourself.

It definitely is about building (weak) street cred for a lot of people, though.
I understand wanting to measure your own progress, but you can do that without github making it a normative behaviour.

Why not program yourself a little javascript thingy to fill in green squares? See how long you can resist uploading it to get attention from people? Sounds like a good personal test.

@nelsonic did you ever find out what's wrong with email?
Seriously what even are these projects? This is the type of stuff only my most exaggerated troll posts could point at..

I don't think this is what github is meant to be used for. I must just be some kind of anti-programming jerk right?

@nelsonic If it's all about intrinsic motivation, why get so exercised about extrinsic validation?

@aaron-em good question. intrinsic motivation is while you are performing the task/activity.
but if you look back on your week/month/year and cannot chart your progress motivation can easily fade.
for people who want the added incentive a "streak" provides it is (was) a great feature.

Why is it only the people without a streak who want to get rid of the feature...?

@johnstt lol. Why do you even have a GitHub account...? πŸ˜†
so you can complain and make zero valuable contributions to the community...? :trollface:
nothing-of-any-value-to-share-with-the-community
Grow up.

@nelsonic That's not intrinsic motivation, then. If it were, you wouldn't need little colored boxes and streak counters to make you want to write code.

Speaking of writing code, why don't you put your money where your mouth is? A little while back, I wrote a user script to make the gamification stuff go away, for those who didn't want it. Now you can write one to analyze the little colored boxes and put the streak information back. That seems like going some way to relieve your cause for complaint, and it's a chance to satisfy an intrinsic motivation to write code. What's not to like?

@aaron-em you've missed the point and are now just trying to be clever (and failing).
So let me reiterate one last time: The point is that feature existed and it was removed without any consultation with the community (or paying customers) because a microscopic minority of people did not like.

If you want to attack me personally because you don't know how to conduct a civilised debate, go for it. But you're not the one volunteering to mentor the next generation of coders, putting your actual money where your mouth is to the tune of tens of thousands of dollars ... are you? http://www.foundersandcoders.com/about/

skittles

Lighten up. it's the weekend. you can go and do your non-coding hobbies! ✨

good question. intrinsic motivation is while you are performing the task/activity.

No. Which Malcolm Gladwell TED talk taught you this? Shame on that man..

lol. Why do you even have a GitHub account...? πŸ˜†

I used to have a bunch of private projects that I paid for and worked on a lot. Then I learned how to make my own SCM repo on a VPS box and didn't need to pay for them anymore. Also I can set up commit permissions and all sorts of other basic things now that I don't use this website for that.

I still contribute fixes and ideas to repos related to the programming I do outside of github. That's the key thing here - I do a lot of programming that I don't put on github, and I'm miraculously able to measure myself doing it.

so you can complain and make zero valuable contributions to the community...? :trollface:

Nope. That's you with the zero-information projects where you write stream of consciousness stuff like "What does it take to make a great leader?" and quote Peter Thiel / Paul Graham like they're somebodies.

You spent extra time highlighting '0 starred' on my profile like that means anything. Would you like me to click the star button on all your little worthless projects? Because I'm not going to.

Let's do some more since your profile makes my point so clearly.
Cool repo where you wrote 1 json file and never looked at it again.

Cool binary files for a paid desktop publishing program. Is github for programming or just storing your stuff?

deq (dequeue) places records in a redis queue for high throughput and dequeues them into your choice of (slower) write-speed datastore. Does it? It seems to just be a barren repo with a little json file in it.

This one is just you blogging using the issues page of a github repo.

This is just a readme file telling people how to use github.

I feel like I could go all day..

Here's a funny thing to consider: github does not provide a way for me to render my profile private, so I can't stop people childishly stalking me when I call them out in threads like this. It's so built on gamification and competition (whether you admit it or not) that you can't turn it off. I used to be one of the 'paying customers' you're talking about, and this wasn't available to me then either. Not only that, but all my precious contributions to my old private repos don't show up. I don't get to have the green squares I worked so hard for! Luckily I have (and understand the definition of) intrinsic motivation..

If you want to attack me personally because you don't know how to conduct a civilised debate, go for it. But you're not the one volunteering to mentor the next generation of coders, putting your actual money where your mouth is to the tune of tens of thousands of dollars ... are you?

or

It's not about competing.

Pick one?

@nelsonic Wow. OK, you want to go ad hom? Let's go ad hom. I absolutely do mentor junior devs, both on a volunteer basis and as part of my professional responsibilities. What I don't do is boast and brag about it, because I'm perfectly satisfied to be judged on the basis of the work I do, rather than the way I talk about myself. What I don't do is generate a lot of useless drama when a private company, which is in no way to me beholden, makes a decision I do not happen entirely to like - rather than take the obvious action to resolve the problem I claim to have. And what I definitely don't do is run a "bootcamp" that funnels half-trained naΓ―fs, too inexperienced to know what I'm doing to them, through the disposable, prospectless programmer roles that prop up my tax-funded consultancy, so I can spend my time making myself out to be some kind of bold, italicized, self-quoting big deal instead of actually competing on merit in industry.

Too, it's very strange to see the kind of rhetoric you're spouting from someone whose own Github profile reflects such a high ratio of abandoned and unstarted projects to completed and substantially built-out ones. One might begin to suspect that the removal of the streak counter will if anything work out for such a person as a net positive, because it reduces the likelihood that you'll spend effort optimizing for maximal streak length rather than, you know, actually getting shit done. There's still the contribution chart, of course, and I really doubt GitHub gamification is the root cause here, but it's a beginning.

And, as I said before, if you really want the contribution figures back, they aren't hard to add. If you're satisfied with the information available from the chart, it shouldn't take more than a few hours for a competent Javascript dev to write a user script which will restore the figures. If it means that much to you that your "streak" be accurately represented, spend a few more hours on calling the Github API to fetch your commit list and parsing it out by date. And there's nothing stopping you from publishing a user script, or a Chrome extension, or both, that will restore those figures for anyone who wants to see them. It's a great solution to the problem you claim to see here - namely, the loss of extrinsic motivation for self-improvement which you argue was formerly provided by the streak figures. And, hey, none of this should be hard for a rockstar like you, right? Somebody who solves problems, instead of whining about them. Right?

@aaron-em @johnstt Thanks the therapy/vent session. πŸ’­
I'm over it now. πŸ‘
You're right. βœ…
Much ❀️ guys!