Transform centralized git hosting sites into distributed trackers

Popular git hosting sites encourage users to fork projects to add features or fix issues. This typically means there is one parent repository and many forks that follow it. Sometimes the parent repository is abandoned and everyone feels bad.

Leading is work

When a project is published, there is some level of expectation that the original creator will continue to interact with the project in the future, responding to issues and accepting pull requests. For large projects with multiple maintainers, this works great, but solo developers sometimes feel unwelcome pressure. They created something and want to shared it, but have no further interest in the project. After a couple years, there might be a dozen issues and a handful of pull requests that have gone unanswered. Sometimes the original creator is shamed for not supporting the project.

"Just fork it"

When this happens, the traditional response is to convince a new maintainer to fork the existing project and take over development. Everyone likes to look for a leader to follow.

Unfortunately, the forking model on these sites doesn't seem to take this situation into account. Issue threads aren't copied to forks. Finding active forks from a stale parent project is not straightforward. Fork browsers are inadequate for multiple reasons. Some refuse to draw a full graph when there are hundreds or thousands of forks. The only way to easily drive traffic to an active fork is to get the old maintainer to update the description of the original project. It's not quite as easy as just making a fork.

Make forks first-class citizens

It would be great if each project was treated as the sum of its forks. Issues can be shared or tagged to specific forks. Fork maintainers can tag source forks to automatically follow, or choose to only accept pull requests manually. When a lone or leading fork dies, another fork can come along and start leading without needing cooperation from the missing or disinterested maintainer.


So what's git-announce, then? It's a git command you can use to announce your fork to the world. Combined with the git-issue idea, this can turn public git hosting sites into fork trackers.

You run git announce [name] [tracker] to tell a git tracker that you've got your own fork. If you host your repository in a public place, the tracker just checks your repo for updates so other users can stay informed. The public place could be any existing large git hosting site, a self-hosted URL, or any other place where a git repository can be shared with the world.

Building it

This is just at the idea stage. There are many details missing. I'm just sharing my thoughts to see what people think. It's frustrating to see comments from developers who decide not to post their projects just for fear of being harassed in the future for not keeping up with user requests.


Sound fun? Am I just crazy? Just want to say hello? Email me at:

Comments sent with "git-announce" in the subject line will be posted to this page, with personally identifying information removed.

Keep pushing for change, your ideas can make a difference.

Home - Ideas - Commentary