Tuesday, September 30, 2008

SCC/SCM in Open Source

Source code control (SCC), versioning, and the all-inclusive "software configuration management" (SCM) are hard things to do well. Most programmers think they know a "good" way of doing these things, and most firms think they have "good" systems, but I think that most firms and individuals actually aren't very good at these things.

Although I am a self-styled expert on this topic, I really am more of an evangelist for a certain approach to the problem than I am an actual expert. After all, I don't have 10,000 hours / 10 years of experience in this topic alone (well, actually, I have more like 20 years of thinking about the problem, but nowhere near 10,000 hours).

I bring this topic up because I was thinking about it today in the context of open-source development. When you have an open source team, one essential role on the team is that of release manager. Another important role is that of what we might call "technical director" or "architect." How an open source project team structures its source code control has a major impact on who contributes what. If, for example, untested code can be submitted, then a lot more innovative ideas can pop into the codeline, and a big firm might be able to get their bugs fixed by submitting them and watching for other contributors to find the problem. If, on the other hand, a single person has to moderate all submissions, for example, then to what extent is the project really open source? It is, in a way, but it's only as open as the moderator decides to make it.

Another way to ask the question is, "is it free as in speech?" If so, then how do you do versioning? If not, then how is it free software/open source and not simply, "a voluntary project managed by one or more individuals?"

No comments: