10Collaborative working


Github is designed for collaborative working, a team of people can work on the same project at the same time and GitHub will manage everything, resolve conflicts and keep it all up to date—just like a good version control system should.

Now mostly when people work together as a team, the team is established, people are given responsibility for things and the work gets done (and you make a neat gun†1). There is usually someone managing the team (let’s call them a lead engineer) telling people what to do and assigning privileges and access to users of the project; and this is how it is meant to be. This is how we do things at work (we have cake too), and we do make neat guns.

GitHub lets us do this too; GitHub allows different users to be given access to a repository, it also allows organisations to be set up for just this purpose —an organisation is effectively a repository (or several repositories) that is managed by a group of users.

This is all good and sensible (“right and proper” as my old Dad would have said) and just what you would expect. These collaborative repositories can be accessed by users as local repositories on their own machine (just as we did in section 8) and it all works very well.

Where I have a problem is with the open source aspects of GitHub (here comes the Linux lynch mob), is that anyone can take a copy of your repository and work on it, it’s called forking (I really, really hate these names). Not only can they work on it, they can then send it back to you (with a pull request, just like we used in § 9.5.3) and ask you to incorporate it back into your repository.

I know it is possible to have private repositories (and I have them), but I also have public repositories and I make these public because I think they might be useful for others. Now I don’t mind people copying this work, to some extent that’s what it’s there for. I just think it would be polite to be asked first. It seems a bit rude taking a copy of someone’s work without so much as a by your leave—what’s worse is posting it back to them, telling them you’ve fixed all their shortcomings and would they be good enough to incorporate your changes, and then complaining when you don’t—bloody do-gooders.

Now I know the younger generation with their Facebook and Twitter tend to live in each other’s pockets and like to share things (in a way that I very much do not).

But I’m a tired old Yorkshire man; I’m a bit grumpy and not tainted with emotion. In my day, the only thing young people shared was herpes.

So while I’m willing to share my software—people should remember I do it by and large for nothing, and I do it in my own time. I’m open to criticism and for people to help, but I would like this to be polite criticism. I don’t like being shouted at (Linux people I’m talking about you here) and there is a bit too much of it on GitHub and I think forking is a symptom of this.

Well there’s my rant.

I will explain forking, and I have no problem with it between repositories that you have access to; however, if you’re copying a complete stranger’s repository maybe you should ask first.

†1 Sorry—it sounded like portal.

End flourish image