Taco Steemers

A personal blog.

Avoid unmaintained and undifferentiated forks on your repository hosting profile

By forking many projects some people end up with too much on their profile page. Their original projects are hard to find. If you want to check out a project you can make a local clone. When you fork a project online, you are offering that project in that state. People might take you up on your offer and start using it as-is. You have a responsibility there.

When viewing people's profiles on web applications centered around repository hosting services, such as Github, Gitlab and Bitbucket, we can find profiles that are full of forks of projects that this person does not seem to have done any meaningful work on. I think this is because some people click the "fork me" button on any project that they want to play around with. That is not necessary, and it has a downside.

By forking many projects they end up with their original work mixed in with pages full of forked projects. Their handful of original projects are difficult to find among the many forks. To the casual profile visitor it looks as though they don't understand how version control can be used well together with these online platforms.

If you want to check out a project, just do "git clone" or equivalent on the main project. Create a local copy. Rebase it when you want to pull in updates. If you have changes you can go through that project's steps for contributors to get your changes included. This can be as simple as opening a pull request in whichever way is standard for that repository hosting service. Exact details will be different for each project. If it is unclear you might search for contact details of current contributors and ask them how to proceed.

If they don't want to merge your changes you can consider forking. When you do fork, you will have to keep your fork up to date. If not because of the feature updates then at least because of the security updates that may have been done on the original project. Note that updates to which versions of dependencies the project uses can also include security updates. As a result, security improvements may be mixed in with other types of updates.

When you fork a project online, you are offering that project in that state. People might take you up on your offer and start using your fork as-is, instead of the original. You have some responsibility there.