Blockheaded blocking, GitHub style

From WPTavern.com comes this surprising development about the block functionality on GitHub. From the article:

Users who are blocked will no longer be able to open or comment on issues or pull requests, nor will they will not be able to add or edit any of the project’s wiki pages.

…both of these sound reasonable so far, but then there’s this:

Blocked users are also prevented from forking any of the organization’s repositories.

It is this last one, however, that I have a huge issue with. While rare, forking is generally considered the best way to resolve differences of opinion on a project. There are also other valid reasons for forking such as wanting to recode substantial parts of a project for different hardware (anything from a completely different architecture to a newer or older generation of CPU), to satisfy different jurisdictions’ legal requirements (example: a GPLed arcade game software needs recoding for Texas’s somewhat oddball redemption game limits), or even rewriting the original code in a new language or new variant of that language (Inkscape in C++ versus Sodipodi in C).

This problem is compounded by Github’s terms of service A.7 which disallows one person or legal entity from having multiple free accounts. Otherwise, the easiest workaround would be to make a one-off account just for forking a project one has been blocked from, and transfer it to the “real” account. Someone who wished to fork a project after being blocked would either need to form a new legal entity such as an LLC (!) or have someone fork the project on their behalf. I’m not even sure if that would provide full functionality.

I am, however, pretty sure that the vast majority of ghost accounts on online services, GitHub or otherwise, go undetected for years. Outside of legal action, there’s no real way to stop them. (Example: I could get a cheap voice/text only “burner” phone plus $10 worth of airtime, pay for it in cash, go down to an Internet-connected cafe such as a Starbucks like the one I am in now, and set up a new Gmail account within minutes. If there are more than 5 people in that Starbucks at the time the account was created, and/or there’s no reason to suspect monkey business until after the video surveillance system at Starbucks erases/overwrites the video from that time, it’s going to be damn hard to figure out who really made that account. Personally, I’ve never done this, but I’m sure some people have. Bonus points for using Tails/Tor Browser on top of all this.)

Too many people who use platforms like Facebook and Twitter have no idea what blocking actually does. Too many use it as an “easy way out” with regard to avoiding differences resolvable with minimal effort. (As an aside, in the case of Twitter specifically, it has changed over the years. At one time one could still easily read public tweets of a user that blocked them. Now, there’s just a screen that says “You have been blocked from following @skquinn and reading @skquinn’s Tweets. Learn more”. One huge problem I have with this setup is that it is taking the user’s authentication information and using it against them; it’s possible to see the same timeline as a not-logged-in user. Twitter does not even restrict me from making a second account just for the purpose of evading certain aspects of blocking, though things like a prohibition against harassment and stalking are still in play.)

Also, blocking is an all-or-nothing proposition in most cases. There’s no way to line-item block certain posts from certain people that are no longer friends. The closest one can come is, on Facebook, to make a custom filter that amounts to “all friends except Joe Dummy” or similar. Indeed, GitHub’s block function appears to allow no easy way to allow just forking, and was made with the assumption someone would want to prohibit a diverse and far-reaching set of actions with one button most of the time.

So again we have a service which has made the block function far more powerful than it really should be. As unfortunate as it is, there is still time for GitHub to fix this unfortunate mistake, and I am hoping that they do.