Weird behavior
Around last May1, I started to notice a weird behavior: some people like to clone a repository but without adding any commits on GitHub, Google Code, or any other source code hosting provider I believe. A few people even fork my dotfiles, that really loses me.
For example in the following screenshot, it shows only one of 18 clones has made some changes:
Those 17 clones have never been done with anything.
Rationale?
I have long try to understand or to explain to myself why they do that. Whenever I see cloned repositories under some people’s account, which have no commits, I ask myself
Why?
What’s the point of cloning a repository under one’s account and making no commits to it? Why not just clone the original repository to local even you do plan to make some commits locally without pushing to the public accessible repository.
Maybe they might commit or contribute some changes later?
That still makes no sense at all. You can always push to another repository later on, you do not need to clone to your account first.
If you are one of this type of cloner or you know their reasons, please leave a comment, I’d like to understand.
My cloning
Whenever I want to contribute, I
- Clone the original repository to local, then work on it.
- Commit and commit.
- go to hosting provider, fork or clone—whatever they call it—the original repository under my account
- Edit local repository configuration, change default push path to the one under my account
- Push changes.
- create a pull request.
- once pulled, I delete the forked or cloned repository unless I am still going to make more contributions.
The reason I don’t fork or clone before working on it, that’s because sometimes you realize that your idea may not be good enough once you seriously read the source code in order to make changes. You may drop your idea. I make sure I have changes committed before I fork or clone. Only do that when I am sure I have something to contribute or to push.
I don’t keep repository whose commit history is part of original. I really don’t understand why so many people keep a clone, an super outdated clone under their account. Well, not just one, I have seen a few people own accounts which contain dozens of outdated clones and that’s all those accounts have: full of outdated clones.
Use star or watch
One reason I can remotely guess is, they use fork or clone to track repository. If so, then please:
- If you like a repository, star it, don’t fork or clone it.
- If you are interested in changes of a repository, just watch it!
You won’t lose them, for example, on GitHub, you have a special Stars page lists all repositories you have stared. Similar list can also be found on your Google Code profile page.
Once I have tried to search a repository on GitHub via search engine, there are some real clones, but when mixed with those without additional commits, it’s really hard to see which it is original or good forks. You need to understand, sometimes forks can get even higher rankings in search results if more people use the forked ones.
And there are also people fork or clone by creating a new repositories, not by those fork or clone buttons. This adds another dimension of troubling. Things sometimes can get little messy.
From my perspective and habit of keeping my online account in clean state as much as possible, those people stuff trash or useless repositories in their account. I am by no means saying those repositories literally are trash, just it’s useless since they are outdated. It’s like hoarding online, those forkers or cloners are repository hoarders in my opinion, that’d be how I describe them as I don’t know why they do it.
Please do understand that I am not trying to criticize those people’s behaviors but simply let them know there is no need to do so for themselves or for others. They is no absolutely right way or wrong way about how you use, but there does have better way to do things if criteria meet.
[1] | I first noticed at 2012-05-23T02:38:45Z. |
I've some of those repositories and I do it because I believe than there is a time when software is done. Whenever I feel it, I clone it and keep it that way for the eternity, I think there are more important things to do that keeping an eye on software which pretty much does want I want, it's also useful to keep my personal setup running without worrying it may break in the future for some random update, specially when dealing with addons.
ReplyDeleteGreat blog! =)
[...] when software is done.
ReplyDeletedone meaning the software stops being updated or actively developed?
I still don't get it. When a software is good, so you clone the repo to your local storage and you have full history of the repo on you disk, assume it's GIt/Hg/etc. It's not going to break as long as the working copy is the one without bugs. Why is there a reason for cloning under your account, then clone it local?
If a repo is good, then it's most likely to last forever, the owner knows it, because he or she is good at coding and knows the importance. Even the owner decides to axe their own original repo, since it's good, there must be tons of real cloned/forked repos. It's going to last for eons and eons, really has no to clone if you don't plan to contribute or just to commit some of your modifications.
If you clone for "keep my personal setup," then you are not the kind of user I described in my post. The user I mentioned has never committed anything to their publicly cloned/forked repo under their account, not even a config file. I think you misread my post, see the screenshot, only one out of 18 cloned repo has ever been committed with new commit. The rest 17 are just clones with any modifications, don't you think that's a waste of storage?
Anyway, still thanks to speak up, even I don't think you are one of those users.
Basically hoarding clones is done "because its cool". Kids on facebook have 131232132 friends, kids on Github/GCode have 21321321 forks. I've once heard philosophy behind is to keep safe copies of software just in case author decides to remove his repo, but then reason would advise you to sync it regularly, and thats something hoarders dont do.
ReplyDeleteKids on facebook have 131232132 friends, [...]
ReplyDeleteAha! Now everything is so clear to me. Those darn kids! ;)
And I totally forgot they have to continuously sync repo in order to have "save copies." So, my point is stronger now. All they do is keeping useless trash.
Sincerely yours,
Yu-Jie Lin