tl;dr Drupal moved to Git; but in not moving to Github as well (or developing a similar platform on D.O), I believe it has missed the point: decentralization (forks and pull requests).
Brief History of Drupal + Git
Drupal is quite a veteran of web technology - it's been around since 2001. However, the community has done a remarkable job of aggressively evolving it's antiquated bits into modernity. Case in point, we moved from CVS to Git, one of the happiest moments in Drupaldom.
CVS is a version control system from 1990, and was a nightmare to work in when maintaing Drupal projects. As a result, many Drupal companies maintained their internal projects on SVN - a slicker system to use, but not much more. SVN and CVS are both considered centralized revision control systems, where you have a canonical repository source owned by a developer or organization. Anyone can download from the repository and a select few (who have write access to the repository) can actually contribute. Sure, anyone can file an issue against the project with a patch fixing the issue. But there are several problems with the issue-patch-release system:
- Users who want the fix have to roll up their sleeves, apply the patch on their local environments.
- Users (or patch moderators) have to "chase head" (something Git mitigates).
- Users have to wait on the developer/organization to apply the patch in the master repository.
... and so on. Project users are at the whim of the one developer/organization in charge (and whomever he grants write access). I mean, it's absolutely fair - it's his repository after all - it's just not efficient in developmental progress.
Then, in 2005, along came Git, which dramatically changed the nature of version control. Git wasn't just easier-to-use version control (as SVN was to CVS), it was a paradigm shift. Git is a "distributed revision control system". A developer creates a project's repository, anyone can duplicate (clone) that repository, and each clone is as canonical as the source. Think of it roughly as the difference between downloading something from a server (SVN/CVS) versus downloading something peer-to-peer, or torrenting (Git). The benefits aren't entirely obvious until you wrap it in a user interface - Github. Github shows you all the clones (or "forks") of a given repository, and all the transactions between them (such as code-sharing via pushes and pulls). And, since each fork is as canonical as the next, a project user can easily switch to another developer's fork rather than the original, if that fork is leading the way. Github fosters code-sharing, branching, and innovation in a way that realizes the maximum potential Git. This has drastically improved developmental progress, and has been one of the biggest catalysts to contribution in Open Source Software, in general, ever. I truly believe that the definition of Open Source has been rendered incomplete without a mention of Github.
Drupal Projects Are Still Centralized
So. Drupal moved to Git, a distributed revision control system. The problem is, projects are still centralized. Views module has a single repository source, and there are no clones. Since Views is on Git, it technically can use the full potential of distributed revisions. I could clone the repository to my own hosted Git account, or to a Drupal sandbox. However, because Drupal.org as a website for hosting these projects doesn't foster this type of Git usage, my clone would be considered project forking in the traditional sense: causing a schism in the community. What Drupal.org would need to handle proper distributed revisions is an interface which allows for pull requests (rather than issue-queue patch submissions), fosters hosted repository clones (forks in Github parlance), and shows the network of clones (very important!) so users can intelligently choose their source of the current repository, given each fork's innovations.
Github (and Bitbucket, and Gitorious) all have this functionality. I say move Drupal to Github! Drupal.org is discussing building these features, but this is effort duplication. If Drupal went to Github, they'd regain a lot of resources offloading issue-tracking, project-hosting, and infrastructure development and maintenance. Let Github do the heavy-lifting (Rails & Node.js do), retire Project.module. This would be another point towards NIH for which Drupal has been criticized. And with the added fostering of Git's full feature set, Drupal will grow more.
I hope I don't sound like I'm complaining. I very much appreciate the time and sweat that's been poured into the Git migration, which has already made life easier for everyone and has set the stage for distributed versioning. I'm posting this for discussion - I'd like to hear thoughts on why Drupal hasn't moved to Github and / or encourage it to happen.