My Blog

My GitHub Wishlist: Consolidate Request


If you develop any sort of software nowadays sooner or later you’ll end up on GitHub. On one side a business, on the other: great part of the Open Source world. I’d claim that GitHub was an integral part of the distributed software development revolution. For me, GitHub is the first source of contact if I want to see who already wrote software bits I need for my next project.

Git and GitHub dominate today, since they’re basically so much better than anything else. When I started to work on software, most of the projects used CVS or Subversion, and while they had some pros (an ability to fetch only some project’s directories) the cons were many. Nowadays everybody is migrating to Git or Mercurial, and old services such as SourceForge or Google Code are becoming more of a ghost sites (Google de-featured Google Code already).

When asked, I’d say an ability to fork a repository on GitHub was probably on the top of list of features that made is so popular. It takes a second to make someone’s repository your own by making a fork (copy) and being able to play with the code safely in your workspace. Whatever you do with the cloned project is fine, since it doesn’t impact its original source project. It is your private sandbox, in which you’re free to break all the toys. In other words: the source code becomes truly yours.

The thing which I greatly miss is: “consolidate”. But when would consolidate be useful?

When two authors fork the project in GitHub one can see where certain bits came from. On the other hand, when authors just take the source code and commit it under one name or simply rename the projects, it starts to be harder to say what came from where. I experienced that on numerous occasions, e.g.: when trying to find JIRA command line client for example. In the npm repository there exists “jira”, “jiracmd”, “jira-cli” and “jilla”, which all seem to be copies with one another. Each command’s functionality is different, and every one of them missed the functionality of another one. In such cases, scripting with these tools is basically impossible, unless you want your scripts to look like Frankenstein’s kids. GitHub seems to be a great place to make such suggestions and one could hope authors would take “consolidate” requests as seriously as pull requests. Consolidate would come in the form of merge-conflict, which upon resolving, could result in 2 projects merging.

Your “name of the project” has 98% similarity ratio to project “X”. Generate consolidate request?