49
votes

I understand how GitHub works, but one thing I've been confused about is, why almost every OSS project lately has a "Fork me on GitHub" link on their homepage. For example,

http://jqtjs.com/, http://www.daviddurman.com/flexi-color-picker/, and others.

Why is this so common? Is it that they want/need code validation, checking for security/performance improvements that they may not know how to do?

Is it meant to show that this is a collaborative project - you're welcome to add improvements?

Do they work for GitHub, or want to promote their service? Oddly enough, I don't think I've seen a "Fork project on Bitbucket" logo recently.

My first reaction to that logo was that the project probably needs to be modified (forked) in order to integrate it with anything useful - or that they are encouraging fragmented codebase, encouraging everyone to make their own fork of the project. But I don't think that is the intent.

4
  • 23
    Because it's easier than writing "if you want to contribute to this project or check out the source, look at our repository at github". ;-) – nietonfir Oct 20 '13 at 19:05
  • 1
    I'm a little amazed no one has mentioned the... What is it, a pun? Innuendo? But that particular wording wouldn't work with bitbucket; their site gives off a vibe of being more professional than github. 'Cause that's how I understood your question on first reading - "why doesn't bitbucket have these?" – Izkata Oct 24 '13 at 1:42
  • 2
    They are social widgets, much like those that appear with the 'share' link on a SE question/answer: you get widgets for Google+, Facebook and Twitter. They're ready-to-use for the site designers, so easy to integrate. I think there is no such thing for e.g. Bitbucket, so there's nothing to notice: if any project has their own, home-brewed 'fork me' widget, they would not look like any other one, presumably. – Luc Danton Oct 24 '13 at 12:14
  • I'm voting to close this question as off-topic because it is about open source software culture. Currently, questions about how communities collaborate together to produce, distribute, market and sometime monetize open source projects is on-topic on the Open Source Stack Exchange. – Thomas Owens Sep 6 '16 at 14:48

11 Answers 11

20
votes

Aside from the foster collaboration side of the issue, from a business perspective it will enhance and strengthen GitHub's traffic, user base and market position. So there is a little bit of a business strategy associated with it too.

Personally I don't mind this because GitHub provides a valuable service to the open source community.

3
  • 23
    Why is your answer from the perspective of GitHub? People are not putting that logo on their sites to strengthen GitHub's traffic, user base, and market position. That might be a side-effect, but that is not the purpose. How is this a GitHub "business strategy"? GitHub isn't even responsible for putting this logo on OSS sites (OSS site maintainers are). – Ben Lee Oct 21 '13 at 21:30
  • 3
    @Ben Lee Your comment is well taken. But I would assert that there is not one purpose, but many. I didn't dismiss the view that a purpose is to foster collaboration, simply that we must also acknowledge that GitHub is also a business (it could be argued they are the market leader in this industry), and that another purpose of Fork Me on GitHub is for strategic advantage. Granted that this is voluntary, but it is effective nonetheless. It makes GitHub more visible on the internet, a key part of any internet business strategy. – AsymLabs Oct 22 '13 at 7:10
  • 2
    @BenLee Like dmitri noted, Github has this page: github.com/blog/273-github-ribbons Does Bitbucket or any other service have something similar? – NoBugs Oct 24 '13 at 1:03
75
votes

Is it meant to show that this is a collaborative project - you're welcome to add improvements?

Yes: you don't have the right to push a commit directly at their repo.
But you do have the possibility to fork their repo, which makes it your repo, and push commit from there, preparing pull requests.

fork

4
  • 2
    I know you can fork, then pull request on Github, my question is why they say "fork me on Github"? – NoBugs Oct 19 '13 at 16:58
  • 6
    @NoBugs to ensure you know how to contribute back to their project. – VonC Oct 19 '13 at 17:03
  • 19
    I think, the focus here lies more on the "fork me" than on Github. It's probably simply because Github is the most popular site of this kind. I don't think anyone has a big problem if you fork on Bitbucket. Good question anyway. – JensG Oct 19 '13 at 18:33
  • I don't think anyone has a big problem if you fork on gitorious.org, either. It just that almost nobody does... – Michael Paulukonis Oct 22 '13 at 15:15
37
votes

The "Fork me on Github" badge is meant to show that it the project you are granted the right to contribute to the project or use it as a starting point for your own project.

It kinda shows that "it's a collaborative project and that you're welcome to add improvements."

It allows you to play around with the code or make a spin-off of the same project without affecting the original source.

https://help.github.com/articles/fork-a-repo

The same principle applies to all other git hosts.

The main points (among many other) of giving the right to fork a project is to

  • foster collaboration - by allowing people to work together in improving the project.
  • add to knowledge - by allowing people to study your code.

Some of the projects you may have encounters may be by Github staff for their own private needs. They do not want to promote github. You can find projects by github here : https://github.com/github

As to why you're not seeing badges from other hosts is because Github is the most popular git hosting and collaboration platform.

1
  • Exactly. DVCS workflows mean I can publish my results without inflicting them on others. Forking means not having to ask permission to share anything you want to share. If the Internet likes your changes they will absorb them. – Warren P Jan 23 '14 at 3:24
15
votes

Imagine you use your favorite text editor, and after some time you find that you would really love some feature to be implemented (like non-blocking Save file option).

After thinking that for the eleventh time you decide to write one by yourself. After you find the github page of this project you have two options:

  1. Download the source code, modify it and keep it for yourself.
  2. Fork the project on a github and work on your fork.

If you chose the second option, after making your feature well-written and well-tested, you could prepare pull request and then the entire project would benefit from you.

However, if you chose the first path, it is very likely that you will just forget about your modification and nobody except you will benefit from it (yes, you may share the code manually, but some other coder could easily forget that. Using github is forcing you to get more socialized with the other's work).

Saying 'fork me on a github' project's owner just want to make sure that you chose the Fork on github instead downloading the code and publishing it into your home directory.

7
votes

It's only there to show that this is an open source project and you fork it if you want to, whatever the reason. Also, check out this blog post on GitHub: https://github.com/blog/273-github-ribbons

Update: Personally, I add these GitHub ribbons so people can find me on GitHub and star my projects ;)

6
votes

It means they're on github, where forking is cheap, and they want to encourage contributions to improve their software and community.

5
votes

Github is trying to widen their userbase to include any collaborative work, not only source code hosting; and thus do they push the fork and send a pull request method. Making patches and sending them via email wouldn't be attractive to most people other than programmers and alike. Push permissions are not really important here, as eventually most of the git (or mercurial, darcs, or whatever) users with considerable amount of knowledge of the tool and development workflow would be able to send an email with a patch attached somehow.

Also, Github is more about social networking than code hosting: your profile, repos and changes make up your identity as a software developer, just like your tweets and '+1's. All those ribbons and buttons and alike are used as a means of self-canvassing, a path to the profile of the person whom the project belongs to. Nowadays, having a decent Github profile is the first thing expected from a developer. Even though I use mercurial for anything, I push to Github via hg-git for these reasons.

Eventually, that "Fork me on Github" ribbon differs just slightly in purpose from the "Tweet this Article" or the "Share this Thing on G+" button. (Also having a fork of a repository on your list of repos means "I am a user of this thing", there are thousands of forks of Linux on github, even though Linus Torvalds does not accept pull requests.)

2
votes

it's another way to say "patches are welcome".

instead of sending wishes and feature requests, people can send pull request where the original author review, validate and merge the pull request.

historically forking is a hostile action done by group that is in conflict with the management of the original project, for example Sun's OpenOffice used to reject fast C/C++ SVG plugin because it prefers its own slow broken Java-based plugin for political reasons.

In most cases forks are bad, and carried by envy people or people from selfish companies who have plans that do that is not shared with the original community and is not in align with it (ex. Canonical) and example of this is libav/avconv (which is a fork of FFMPEG), in those cases the original community have higher quality, security, and they welcome patches that is aligned with community plans.

Dan Walsh noted the old definition of fork

I have been in open source for a long time, and my definition of a "fork" might be dated. I think of a "fork" as a hostile action taken by one group to get others to use and contribute to their version of an upstream project and ignore the "original" version. For example, LibreOffice forking off of OpenOffice or going way back Xorg forking off of Xfree86.

Then he compared that with github's fork

Nowadays, GitHub has changed the meaning. When a software repository exists on GitHub or a similar platform, everyone who wants to contribute has to hit the "fork" button, and start building their patches. As of this writing, Docker on GitHub has 9,860 forks, including ours. By this definition, however, all packages that distributions ship that include patches are forks. Red Hat ships the Linux Kernel, and I have not heard this referred to as a fork. But it would be considered a "fork" if you’re considering any upstream project shipped with patches a fork.

1
vote

All the responses saying that this is collaborative beg the question: why not say "Clone me on GitHib" or "Download .zip from GitHub"?

On GitHub you can see a count of the number of forks. But, to my knowledge, not a count of the number of clones or zip downloads.

So, I'd say it is partly to encourage collaboration, partly to get feedback and validation that people are using your code.

P.S. I'm fairly new to GitHub so if this is totally wrong of off base kindly let me know.

4
  • Isn't it far simpler to just say, "that's how distributed version control works, by pull requests, which of course requires that I first fork your repo, then commit to my fork, then issue a pull request if I build something worth sharing with the original project" – Warren P Jan 23 '14 at 3:26
  • 1
    Have to admit that I really don't "get" git. Why not just clone or get the zip file, and, if I make changes, setup whatever VCS I want? In the rare instances I make useful changes of benefit to all, I could resort to email, or do the fork then. – user949300 Jan 23 '14 at 3:55
  • This answer is self-contradictory. You rightly suggest that they are trying to encourage collaboration. The point of such a link is not to give people a place to download your project, the point is to get them involved in developing it. They could download a zip or clone it if they just wanted a copy for themselves, but if they want their copy to have a path established to contribute back to the upstream project that is done through having a fork that the upstream can pull your contributions in from. – Caleb Feb 14 '14 at 10:33
  • @user949300, you can still just use git clone https://github.com/$NAME_OF_GITHUB_USER/$NAME_OF_REPOSITORY.git and then git format-patch master and send via Email or the like – Sebastian Godelet Apr 23 '14 at 15:06
0
votes

forking on github makes it sound really easy to say like follow me on twitter. I t brings a little socialization into the world of development from my own perspe ctive also making it obvious that is open source and available for modifications .I also think it's a nice concept with the "fork me on github" banner on one end of your project website

1
  • Um. No. For that there are 'star' and 'watch' for repos as well as 'follow' for users. The point of forks is to encourage a specific kind of action –sending contributions upstream– not just make it social. – Caleb Feb 14 '14 at 10:34
0
votes

You're probably best off just taking the simplest answer: they want you to know the code is freely available on GitHub. I think your hypotheses are a bit overthought.

1
  • This is the simpliest answer that actually makes sense. – Woland May 13 '16 at 21:38

Not the answer you're looking for? Browse other questions tagged or ask your own question.