Taking a solution from the Open Source community

Sam Hart

2009-09-02 22:36:37

Fortunately for the Indie developer, these problems have already been addressed by another community that is used to working in highly distributed ways. The Open Source* community.

Open what now?

Defining Open Source is well beyond the scope of this article, however we can give some key bullet points that are relevant to the Indie developer.

Open Source development is really a philosophy coupled with licensing and development models. As we said, a full explanation is well beyond this article. If you're curious and would like to know more about it, then we'd suggest Googling for the topic.

Distributed Version Control Software (or DVCS)

Version control in software development deals with tracking and managing changes to software project files over time. There are many reasons and advantages for doing this, but the ones we're interested in are:

Traditional Version Control System (VCS) choices include tools like CVS and SVN. VCSes work on a client-server model where each developer runs a client that communicates their changes back to a server which holds the project. VCSes do work well in distributed development teams, however they have a number of important limitations:

Because of these problems (and many others), a new type of version control system has recently gained popularity (especially in Open Source circles). It is called a "Distributed Version Control System" (DVCS**) and has a number of key differences over classical VCS:

[*] : Technically, "Open Source" isn't a terribly descriptive term- in reality it's an umbrella term that describes many different licenses and development methodologies. For example, when most people talk about "Open Source Software", what they really are talking about is "Free Software" as the Free Software licenses tend to be the most widely used. There is a great deal of controversy when talking about "Free Software" and referring to it as "Open Source". I have intentionally glossed over this in my document simply because it is a complex and politically charged debate that isn't terribly important to my intended audience. Unfortunately, it is easier to explain what "Open Source" means to someone new to these concepts than it is to explain what "Free Software" means in this context. Personally, I find this distasteful as I am definitely of the "Free Software" mindset, but I long ago learned to just not fight it when I'm trying to get a tangential point across :-)

[**] : Alright, more controversy I'm glossing over. Depending on who you ask and how you phrase your question, you will find a large number of different names for what I am calling DVCS (as well as what DVCS stands for). Personally, I prefer "Distributed Version Control System" and the "DVCS" acronym, so that's what I use in this document.