GitHub kinda sucks

First, GitHub isn’t that bad. I was tempted to go away from it completely, because of reasons I will explain below, but it does a simple job and does not screw up too much.

It’s fairly slow and unreliable, especially compared to my cheap server (Roubaix, while located in the Far North, is after all much closer to me than the United States). Yet, most of the time it does its job and does not bother me. Creating a new repository is annoying, though after years GitHub developers finally realized the page had to be accessible in more than one obscure way, compared to just pushing to my server (thanks to a Gitolite rule, it creates the repo automatically). git-daemon and cgit are fast, but GitHub sure would handle heavy load better than my server.

The fact that GitHub is insecure and use stupid frameworks isn’t the issue either. It’s hard to miss rogue commits since it means non-fast-forward push, and PGP signatures are the real solution for authentication. I don’t care if they have proper backups either, I have mine: I now push to my server directly, which then pushes to multiple mirrors (this is easy to do with gitolite).

The real issue is mostly GitHub refusing to acknowledge one size does not fit all, and a lot of obnoxious GitHub users.

My biggest issue is “pull requests”. The thing is, you can’t disable them. You can disable issues, wiki (and I do, since they pretty much lock you to GitHub; you don’t own the data anymore like you do with git), but not pull requests.
It already has been explained by other people ([1] and pretty much all other PRs, [2]), and probably better than I will. The reaction of GitHub developers was, roughly, “Linus is wrong“. I’m pretty sure the opinion of the creator of git, and the manager of one of the biggest software project ever, isn’t all that wrong.

As a manager, pull requests are annoying, because they require you to add a remote for every user sending a PR. Even for a 2 line patch from an user that will contribute once. The remote URL isn’t displayed straight on the PR, of course.
Actually, I learned you can get a patch by adding .patch to the URL, but it isn’t advertised anywhere. Maybe some GitHub developer actually has sense and snuck that feature in.
Or of course you can merge the commit from the web. Seriously, you can merge it, without even getting it on your machine (to, you know, test it, read it, etc.), from your web browser. That’s stupid, right? Well, it’s even worse: it makes a silly merge commit, even if it is fast-forward.

As a contributor (and this is the part that wasn’t covered by the other critics), pull requests are even more painful.
GitHub projects usually expect pull requests, and only them. So you
have to do it the GitHub way: “fork” it (from the web),
commit, push on your repo, and make the pull request (from the web). The web interfaces are, as most of them are, slow and annoying. Pull requests are from a branch to a branch, so you have to create a branch if you want to continue working on it without updating the PR automatically. Since I tend to do a lot of small contributions, it spend more time fighting with GitHub than actually altering the code.
On sane projects, you send a patch to an e-mail address. Two simple git commands, and you’re done. Oh, and there’s no way of attaching files to GitHub issues, so don’t think about it.

When the pull request is closed, you don’t receive anything. No notification, no mail. There is no way to list your past or pending PRs (or issues).

To sum up, GitHub restricts your workflow, while git is all about flexibility.

The last issue is GitHub users. It’s not much of a pain because it’s easy to ignore them, except being on GitHub could make you likened to them, like having a MySpace page kind of makes you lame too.

Poor commit messages, custom smileys (even in commits!) and unfunny tired memes. A lot of discussions look like there are two intelligent people, and ten others “me too” trying to look good. A lot of projects seem to spend more time advertising themselves than actually trying to work. At least they’re publishing code?

Project forks and watchers mean nothing. Some people will “fork” projects before having done anything, and will likely never commit on it. Yet, it will get listed. Watchers do not mean potential contributors either, or even… users.

I heard some people actually pay that much for sub-par git hosting. I think it tells something about GitHub users.

GitHub could listen to the critics of pull requests, or just acknowledge other ways of contributing, but I doubt it will happen.

This entry was posted in Development. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

14 Comments

  1. Matt
    Posted 2012-06-12 at 0518 | Permalink
    Google Chrome 19.0.1084.52 Google Chrome 19.0.1084.52 Mac OS X  10.7.4 Mac OS X 10.7.4
    If you have the time, I would like to hear what you want from PRs. I realise that GitHub has some short comings but what would make PRs awesome for you?
  2. Tassilo
    Posted 2013-01-26 at 0247 | Permalink
    Google Chrome 25.0.1324.0 Google Chrome 25.0.1324.0 Windows 7 x64 Edition Windows 7 x64 Edition
    Thank you so much for this article. It bugs the crap out of me if I try share code, enter an issue with an attached patch and whoever owns the project asks me to submit a pull request.

    I mean, seriously? Instead of piping the patch into ‘patch’, they seriously want me to fork their project, check it out, fix it, commit my patch to my branch, then create a pull request?
    Speaking of looking a gift’s horse in the mouth…

    If a random developer asks me to do that, I’m annoyed. If a company does that, I think it becomes close to being insulting. RightScale’s support asked me to do that, and the patch in question was literally a 2-byte fix to a ruby script. The patch itself already appeared to be overkill to me. And my employer even pays for their support.

    Trying to be nice, and not just pointing out bugs, but actually debugging code, then submitting a patch along with the report, seems to be not comfy enough for github users…

  3. georges jean-denis
    Posted 2013-08-03 at 2034 | Permalink
    Firefox 22.0 Firefox 22.0 Windows 7 Windows 7
    “The fact that GitHub is insecure and use stupid frameworks isn’t the issue either.”

    what would you recommend as a good framework?

  4. Max Rydahl Andersen
    Posted 2013-12-18 at 1058 | Permalink
    Firefox 26.0 Firefox 26.0 Mac OS X  10.9 Mac OS X 10.9
    Your issues about having to use web and setup manually remotes goes away if you use something like hub.github.com.

    Makes it possible to checkout and apply pull requests without ever using the web ui.

    Also you can get a patch for every pull request by simply adding .patch at the end.

    i.e. https://github.com/jbosstools/jbosstools-server/pull/185 -> https://github.com/jbosstools/jbosstools-server/pull/185.patch

    I think there are bigger problems with github though – like showing the “big green” merge button without option to say “I prefer to rebase before you merge”.

  5. Posted 2013-12-18 at 1116 | Permalink
    Firefox 17.0 Firefox 17.0 GNU/Linux x64 GNU/Linux x64
    I discovered the .patch to URL feature some time ago and now use it all the time. It’s really weird it’s not shown more. Gitorious has the same feature as well. Solves most of my annoyances though.

    I have to agree on the merge – but in all cases, merging from the web makes no sense and creates an ugly Github commit. Why would you skip reviewing the code on your machine, see how it merges, etc.?

  6. dopedup
    Posted 2014-03-30 at 1746 | Permalink
    Google Chrome 33.0.1750.154 Google Chrome 33.0.1750.154 Windows 7 x64 Edition Windows 7 x64 Edition
    I’m just trying to download a 50MB 4.4BSD lite source code zip file. Average speed is 10-30 KBps, and I’m on a 16Mbps plan. I gave up installing Windows installer for GitHub because it would also be slow as hell. Why is github so painfully slow?
  7. Ross
    Posted 2014-07-19 at 0839 | Permalink
    Firefox 30.0 Firefox 30.0 Mac OS X  10.9 Mac OS X 10.9
    Just a quick comment about the Wiki ‘lockin’.

    git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.wiki.git

  8. Jimmy
    Posted 2014-07-19 at 0848 | Permalink
    Google Chrome 36.0.1985.125 Google Chrome 36.0.1985.125 Mac OS X  10.9.4 Mac OS X 10.9.4
  9. Eugene
    Posted 2014-07-24 at 1727 | Permalink
    Chromium 31.0.1650.63 Chromium 31.0.1650.63 Ubuntu x64 Ubuntu x64
    It’s ridiculous.

    1. If you don’t want pull requests or issues, then make yourself a private repo. Github is all about sharing code and contributing, and it is good.

    2. Attaching files to issues? WTF is wrong with you. It would be a pain in the ass. It’s 2014.

    3. Creating a separate branch for every new feature is definitely a good practice.

    4. You shouldn’t usually want to download patches to your machine. Manual tests? Pff… Travis CI for that.

    5. All this text-wrapping bullshit Linux writes is nonsense. Use right tool for editing each type of texts, code editors are for code, text editors are for text. Wrapping is totally a representation issue, don’t spoil your text with these silly newlines.

    6. Don’t want web interfaces? Use hub (as pointed before).

    7. Github notifies you, and you can always subscribe to a thread.

    I can go on. Seriously, Github is the best place in the internet. What are you talking about?

  10. Posted 2014-08-14 at 1225 | Permalink
    Firefox 24.0 Firefox 24.0 GNU/Linux x64 GNU/Linux x64
    I was wondering how someone so stupid could ever stumble on my blog, and I first thought it was someone trying to be a parody.

    Then I figured it out: https://news.ycombinator.com/item?id=8056885
    If you read “Hacker” News, this isn’t for you; you’re not salvageable. If you want a response to your nonsense, you can get one but you will have to pay for my time.

  11. Bingo
    Posted 2014-09-11 at 1642 | Permalink
    Chromium 17.0.963.56 Chromium 17.0.963.56 FreeBSD FreeBSD
    Eugene, I know this won’t lead to anything but for the lulz I give it a shot:

    1) misses the point of the articel completely
    2) yep, because less info is apparently better in your opinion
    3) of course, fixing a typo is a justification for a branch… which is half of all github “projects” – pointless branches, but hey, it drives their marketing and lets them claim to host millions of projects
    4) so you “want” to completely depend on two services of companies you have no control over? Great, it’s ironic that you believe in a decentralized system if all you use it for is super-centralized work. Run your own boxes, actually look at patches, you might even learn something
    5) you must be a really good developer if you would replace your favorite editor with a shitty html edit-box.
    6) wow, one point that kinda actually makes sense, so your score is 1/7
    7) why all this clutter and noise if it simply isn’t necessary?

    But please, go on, it’s more than entertaining

  12. Posted 2015-07-31 at 1151 | Permalink
    Firefox 24.0 Firefox 24.0 GNU/Linux x64 GNU/Linux x64
    I don’t use GitHub’s interface much (for quick looks I use my own “tmpclone” tool), but it seems GitHub understands Git less than I thought: https://twitter.com/Cynede/status/625573651459506176 “github shows commits sorted by commit date”.
  13. Posted 2015-09-01 at 1941 | Permalink
  14. Ryan
    Posted 2016-07-07 at 0520 | Permalink
    Google Chrome 51.0.2704.106 Google Chrome 51.0.2704.106 GNU/Linux x64 GNU/Linux x64
    Eugene, the whiney little GitHub apologist, is a Ubuntu user. That figures. Ubuntu users all seem to be whiney little b1tches.

Post a Comment

Your email is never published nor shared. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*
*