Digital Ocean, the cloud services company, runs a marketing campaign every October where they give out T-shirts to people who have opened a certain small number of pull requests on GitHub for any open source projects. It seems that in previous years this has been fairly successful: many projects have gotten at least somewhat useful contributions, and some even new long-term contributors, and DO has gotten people to wear their marketing material.

This year, a lot of people are opening entirely useless PRs, some just adding space characters, in order to get the T-shirts. This has upset some of the open source project maintainers, who feel their time is being wasted: it takes time to reject a PR. I’m inclined to agree with them.

On various platforms that thrive on driving “engagement” (read: controversy and click-bait) there’s a lot of discussion about this now, some of it clearly uncivil.

I don’t think this is a situation where DO is clearly in the wrong, and it would be good if people didn’t claim that. A more nuanced view of this seems to be in order. Here’s my attempt at that.

Disclaimer: I’m not directly affected by any of this, not being a user of DO or GitHub myself.

While Hacktoberfest is clearly a marketing campaign by DO, it’s also clear the they do like to help open source projects. I think that’s nice of them, even if they way they’re doing it has has unforeseen consequences.

There are incentives to open many PRs on GitHub, even without HF. Some employers look at job applicants’ GitHub profiles, and a profile with many PRs opened seems more impressive than one with fewer. HF is merely giving more incentive for this. However, there has been much less of a problem with pointless PRs on GitHub previously. Why is HF having such an effect, and why now?

I think it’s because HF simplifies the equation. The recruiting process is much more complicated than just counting PRs that have been opened, so making a thousand PRs that each only add an empty line would in fact be very unlikely to land you a job, but it might give you 250 T-shirts. While a T-shirt is not all that big an incentive to most people, it’s a fine prize for very little effort. The cost/benefit equation for HF is such that it makes sense to spend a few minutes to open four PRs if you get a T-shirt for that. It may even be worthwhile to automate opening of PRs if you get many T-shirts.

This is of course the classic spam problem: if it the cost of doing something is negligible, but the likelihood of getting some benefit is high, a spammer will do the thing as many times as they can. If it costs the same to send a thousand emails as one, and the likelihood of getting a sale goes up with the number of emails sent, why not send a million or even more? The cost to those carrying or receiving the emails is not included in the equation.

With email the spam problem is currently pervasive and there’s an arms race to filter spam away, and it doesn’t seem like the filters are winning. It would be nice if Hacktoberfest could avoid the arms race.

It seems that this year the HF spam PR problem was triggered by a popular Youtube channel covering HF and showing how easy it is to make a PR. That trigger is, I think, not the real problem. This has been a bomb waiting to explode.

For Hacktoberfest, the equation is largely controlled by Digital Ocean. There are several things that DO could do, all seemingly simple:

  • only count PRs for projects that have opted into Hacktoberfest
    • perhaps the project could define a tag for Hacktoberfest PRs and only PRs tagged with that would be counted?
    • or have projects register to a list maintained by DO
  • require PRs to be accepted, not just opened
    • maybe follow PRs until the next Hacktoberfest starts, send T-shirts over the next year, so that it’s not necessary for the PR to be merged in October
  • instead of just giving out T-shirts, also donate to one or more of the many open source organizations and foundations
    • this doesn’t benefit the projects affected, but would at least mitigate the negative reactions

I’m interested in seeing what happens.