A ton of people use github, gitorious, and bitbucket these days. Aside from the obvious benefits of dVCS, these sites have excellent features such as:

  • Code review
  • Merge requests
  • Repository "forking" (in a good way)/cloning and easy methods to let upstream know about your branch
  • Project following/notification

Basically, the buzzword they billet this as is social coding. The idea isn't entirely new considering mailing lists with patches have been in use for ages, but the new interfaces are intuitive and visually appealing.

The problem? Walled garden. One system doesn't work with the other. Worse if you want to run your own project infrastructure. You'd think as FOSS programmers we'd know better than this and not fall into the same pitfall that social networks are currently in.

I plead with you, social coding providers, come together and create a universal API in which we can uniformly share and exchange informationsuch as followers, branches, notifications, and merge requests.

I believe this situation is important enough to warrant the attention of community leaders. I have sent email to the Free Software Foundation and The Linux Foundation asking for guidance. If you would kindly pass this along to them and members of Canonical, Debian, and other large FOSS groups we will stymie community fragmentation and develop a way to further the openness that has allowed the creation of such fantastic tools.

Sincerely, The Undersigned Free Software Advocates (place comment on this entry)

Edit #1: Response to a couple frequently asked questions:

  • The idea is to keep the information open, free, and interchangeable as information is what these sites add. We've had public VCS repos and web interfaces for ages. The fact that gitorious is open source does not address this.

  • The value of these sites is the social factor, and for the most part they bottle it up. If you prefer github, but a project you want to follow uses gitorious (like Qt), there is no means of exchanging the social factor. This is nearly identical to facebook->Diaspora.While some of these sites do have extended APIs, we need to come together and make sure that they inter-operate and also work with self-hosted systems like trac and redmine.

Edit #2: A good summary of what needs to be done on reddit.

Edit #3: A response from Richard Stallman, Atlassian (bitbucket), and github!

An email from RMS:

> There is a chance to increase openness and productivity by making these
> systems as well as self-hosted solutions such as trac, redmine, and
> reviewboard inter-operate. Developing a standard protocol for the social
> features such as clone notification, merge requests, and commit comments
> would also make integration into the commandline and GUI tools easily
> possible.

It seems like a good idea to me, to the extent it is feasible. I
don't know how these tools work, but I think that most of them use
communication protocols based on their data formats, which are unique
to each program. So we could only unify the aspects of the protocols
which don't depend on those internal data formats. But that much
could be useful.

Both Atlassian and github saw this as a valid point and were not opposed to such a standard but did not indicate they were working toward anything. Can anyone advise on how to start a working group or RFC to define such a protocol?


comments powered by Disqus