TL;DR: By giving an actual social status to the people contributing to a repository, GitHub would solve the problem of zombie-projects with a scattered community. By allowing these citizens to actually collaborate with each other, instead of just with the owner, repositories will live as long as the community exists, completely on auto-pilot.
This has been a terrific year for GitHub. From raising $100M from Andreessen-Horowitz, to hitting 3 million users in January (now 3.4M and counting), they are on a roll that will be hard for anyone to stop.
Yet the service isn’t without flaws, and while some people are pointing out very small issues with the service and apps, the problem I’m about to describe touches the core of how we interact with it.
1- Current state of a repository
Every repository you create is a little country with a very little population: one, you the creator/king/supreme-leader.
Even if your repo has hundreds of issues submitted, and hundreds of pull requests merged, there’s still only one person running the show.
Of course, you can add collaborators to your repo, but they will only be just that: collaborators, cabinet members chosen just because you felt like it. Of course, in the case of organisations, you can add co-supreme-leaders.
But that’s it. You’ll probably never reach 50 collaborators/members; even if your repo is really popular, and hundreds of people contributed to it. Does that seem normal to you?
This would be a non-issue if it wasn’t directly responsible for…
2- Repositories/Features fragmentation
I’ve seen the following happen way too often:
- Developer gradually abandons project because of new life commitments, or just plain disinterest. So he checks the PRs once a month, maybe. The project looks alive. It’s not.
- Developer is overwhelmed by the issues and PRs thrown at him. And while he knows he has a solid community on this project, he can’t just add someone as a collaborators as he will still have to read each line to be sure that everything is in order. So he checks the PRs once a month, maybe. The project looks alive. It’s not really.
And this is where you say: “Who cares? Anyone can just fork the repo and give new life to the project elsewhere!”
Sure, but how many times have you seen that actually happening?
Most of the time, what we see is people forking the project to fix “the” bug they wanted to fix, and that’s it.
Now when you have 20 people doing the same thing, a great tragedy occurs: the project is actually still updated, but from 20 different places. You’ll have to merge commits from 20 differents repos to be up to date on all the latest cool things you can do with it. But you will never do that. Some forks are just incompatible anyway.
Also, since the project “looks alive”, no one is rushing to try to replace it. So that state of limbo goes on and on, and will confuse any newcomer on the status of the project, where the latest updates are, and are they approved by a community.
While I won’t give any name (public shaming is never cool), I’m pretty sure you know what I’m referring to.
3- Power to the People, Power to the City
While not getting into a debate over the multiple definitions of citizenship, here are a simple and short list of features that would make it real. Nothing listed here is absolute, and it will be up to the admin to set the rules.
- Everyone can vote on issues
- Everyone can vote on pull requests, with automatic merging once a majority (or something else) is reached
- Citizens get karma-points related to the upvotes/downvotes they receive on their commits, answers to issues. Citizens have a total of karma point for that repo, and for the rest of GitHub.
- All commits approved by the people go to branches prefixed “by_the_people_*”
- The admin still has the power to veto anything he wants, and to completely turn-off this “auto-pilot” mode.
It’s time that the people contributing to projects become something more than just “nobody”.
There is just nothing to lose here, and it seems for me to be a natural and inevitable evolution anyway.
The question is: How long will we be waiting?