When forking on bitbucket/github, you sometimes need to add the original repository as a remote repository so that you can pull more recent changes into your fork. I've seen, in other posts (e.g. [How do I update a GitHub forked repository?](https://stackoverflow.com/questions/7244321/how-to-update-github-forked-repository)), the original referred to as upstream.

Why "upstream" for the original and "origin" for the github/bitbucket-hosted fork? Are there other conventions out there we should be aware of?

I imagine this might be useful to visualize as "it is hard to swim upstream" so it's even harder to push upstream... but, well, that's an inadequate analogy.