Monday, November 17, 2008

Open Source, FOSS Politics, GitHub and rise of a new era

Leave a Comment
This post is a response to a blog post by Chintana Wilamuna. Actually, it's rather an addendum than an answer. I do agree with him. This is something I want to add. It got longer than I thought, but could make good (enough) reading when you ignore the typos. Here we go.

There is no denying that Open Source movement has a great impact on the ICT industry and by proxy, to human society. If you don't believe me, clearly you haven't been paying any attention to ICT or mass media for that matter. Do your homework and if you still disagree, you can contact me if you want. Anyway, my point is that the Open Source movement has been a success. It has, in my opinion induced and/or inspired other phenomena such as Wikipedia and the rise of social networking (Eg: Twitter, Facebook, MySpace, etc.).

An Open Source project is usually a software project which is community driven and self centric (the software itself). The community focus is usually on the software it's developing. This common goal combines with a loose set of standards makes them bridge gaps that would otherwise divide them and build barriers. This is how the human kind created the web server which powers most of the Internet. This is how they created an Operating System which rivals and in many cases, out performs proprietary systems built at the expense of great amounts of money, propaganda, organizing, quality control, etc. This wonderful concept of collaboration, freedom and development today powers many things from the tiniest of embedded computers, mobile phones to the most powerful computers ever built. They power from handhelds, game consoles to massive data centers. All buy utilizing the power of people. Believe it or not, it's a fact.

However, Open Source movement isn't the realization of a Utopian dream. It's just a way of getting things done by collaboration. We as in our nature, have a habit of incorporating a certain notion of order and politics in and group/social activity. This, I'm not going to say is good or bad. But I'm going to say that the Open Source movement has not eluded that. So there is Open Source politics (Free and Open Source Software Politics that is, to be politically correct ;) ).

Traditional political methods usually and largely worked. Some famous successful software projects have known structure and way of doing things (Eg: Apache Foundation, Mozilla Foundation), and it works. Among many techniques used, we can see some dominant model. For example there is governance of projects and governance of the specifically code base. As some of you may know, in a traditional Open Source projects not everyone can be a "committer".

The commit access in the traditional approach, is considered a special privilege which was granted usually in recognition of the skills, talent and more importantly the contribution to the project. It has worked beneficially for may years. This approach has the upside of having low noise, better quality and control of contribution and may others. But it also has the downside of not being able to utilize the possible contributor base and among others, the tendency to annoy / offend contributors and users. The psychological image of an elite team of contributors worked, but also deterred some other possibilities. If someone did not like the way the project was heading, she could grab a copy of source code (remember, Software Freedom) and start developing to fit her will. This process, known as Forking was sometimes viewed as hostile and was thought to cause division of the community. So some good ideas inevitable had to fall through cracks.

So the million dollar question: How do we develop Open Source software, getting contribution from more crowd, enable free flow of ideas and still retain the stability of the project?

The software used in the traditional approach enabled the traditional approach and enforced it. Their relationship was somewhat symbiotic. Certain core components especially like version controlling systems (CVS, Subversion, etc.) could not cater our requirements here. As good as they are (they are good), their philosophy and design usually make them more suited in the traditional, centralised approach.

Enter, Distributed Version Controlling Systems (DVCS). Distributed VCSs are nothing new. They have been around and watched the centralised systems be the de-facto standard in Open Source management. DVCSs enable more collaborative kind of development. It can be argued that this is not essentially a feature of a DVCS and is possible to have in a centralised system. I agree, kind of. Although it might be the case, let's say that the software available so far do not support that arguement.

From the many distributed VCSs around, some of them have more success than the rest. Namely Git, Mercurial, Bazaar and Monotone seems to be more popular than the others. Git and Mercurial seems to have more high profile customers among the lot. Both of the projects share similar goals and is of roughly the same age (Git predates Mercurials in a few weeks). I've blogged about Git before, have been using it for more than a year and is very fond of it.

If you have read so far, you might be thinking that I haven't done justice to the last part of the title of this post, the GitHub thing and the rise of something. This is that part.

Stealing part of a comment by David Heinemeier Hansson (DHH - the creator for Ruby on Rails web application framework), I believe that a Killer App can make a breakthrough for a platform. So GitHub is the Killer App of Git these days. GitHub blasted earlier this year in to the source code hosting scene which was dominated by the likes of SourceForge.net and commercial offerings. It created tremendous buzz even before it was launched.

GitHub is a site providing both paid and free Git version controlling service. So what's Killer or revolutionary about it?

What sets GitHub apart and makes it a trendsetter rather than a follower is the approach they've taken. They go back to the basics of the Open Source concepts in a cool, Web 2.0-esque way, so to speak. GitHubs focus is on the individuals (building blocks of an Open Source community) and their interaction and collaboration. Being powered by Git, they happily drop the dogma related to the concept of forking while passionately crying "Fork You"!

Technically speaking, any Git working copy (in comparison to a Subversion/CVS checkout) is a full repository, which in turns make it a separate fork. So GitHub connects people who work on different projects, let's anyone create her own fork with it and lets her do anything she desires about it. If she feels like she have something to share it later she can ask anyone else (including the original author) to fetch her modifications and try them out. If they like the changes the user made, they can incorporate it to their repository. The beauty it this is (inherited from the DVCS), one can manage the projects as a true distributed way or in a centralised way. Whatever you choose, you could still use the social networking approach to get the most out of it, and avoid the political barrier for contribution.

This is not to tell that the GitHub approach eliminates project politics. It does not do that, but it prevents politics getting in the way with people who want contribute. This I think is the dawn of a new era in Open Source software development. It signifies preservation of the community while giving everyone more value and respect, appeal to a broader audience. We can already feel the waves ripping through making other Open Source projects to try this out. More than anything, this enable the coder to move freely doing that neat hack on the random project they stumbled upon, without having much to worry about projects politics. I know they would agree, it means a lot.


Clarification and a disclaimer: I'm openly a Git/GitHub fan/user and I chose Git after using it and learning it, and that was before the Ruby on Rails community went crazy about Git. So I may be biased, but don't discount anything on Git, GitHub, Ruby, Rails and Open Source movement as a whole. Read and make up your mind.

I haven't discussed any down side of the new approach, which I'm sure is something will be analysed and told in great detail in the may years to come.

This post took surprisingly short time for a long post, so you are bound to run into typos and other language abuses. If you read this far, don't forget to leave a comment. I think I find your ideas interesting. ;)

0 comments:

Post a Comment