Saturday, February 28, 2009

Commit Access: It's a Social Problem

Many proponents of distributed version control systems (DVCSs) say the biggest advantage is that anybody can create a branch and begin working on a project. Whereas, for a centralized system (such as Subversion), the would-be contributor needs to have commit access before they can contribute.

Let's walk through this.

Obviously, this contributor can grab a tarball, make their change, and send a patch file to the project's mailing list. No commit access is required to do that. Why a DVCS, then? Well... the DVCS simplifies the retrieval and application of the patch (by the project's developers, or third-party users of the project). The contributor also gets use a version control system while developing the patch, which I'll just axiomatically state as a Good Thing.

Okay. So if they don't have commit access, then a DVCS is very handy. What would the scenario be if they did have commit access? The contributor could develop their change on "trunk" or on a branch. We've already stated this is a would-be contributor -- not one of the regular developers who already has commit access. It really doesn't make sense for this person to modify trunk directly, so let's just say the work is being done on a branch.

So why would this potential contributor not have commit access? Really? All their work is happening on a branch. It isn't like they're going to mess up the project from over there. They're going to generate some commit emails, sure, but maybe the other developers could then provide pointers, assistance, and feedback earlier than if the contributor had arrived with a patch, as a fait d'accompli. This is source control, people. Anything changed can always be reversed. No permanent harm is possible.

So why do potential contributors not receive commit access to a branch, as soon as they ask for it? For social reasons. It certainly isn't technical. Projects have an us versus them attitude, and they don't get to commit to our repository.

For reference, I'll note that the Apache Software Foundation provides branches to Google Summer of Code students. These students arrive with no credentials, they get a branch, and then work on their code over the summer. When they are done, the work can be merged back to trunk, if it is acceptable. It has worked out very well for all involved.

In the Subversion project, we set up branches for developers to try out their ideas. We say these developers have "limited commit access" rather than "full commit". I'll also note that there are no technical limitations on their commit access. Those developers could commit to trunk if they tried. But social restrictions prevent them from doing so. We've never had a problem with rogue developers, since it is so easy to undo any mistakes or intentional harm, and to remove their access.

In this respect, DVCSs are simply a workaround to social barriers put into place by projects. They do not address the core problem: projects should be inclusive rather than exclusive.

Thursday, February 26, 2009

Answer One, Ask One

whurley is trying out a fun series of question/answer posts on his site. He asks somebody a question, they answer, and get to ask him a question. He asked me whether distributed version control systems (DVCS) are bringing about large changes in the Open Source ecosystem. I asked him about Netbooks.

Check out the questions and answers.

Wednesday, February 18, 2009

Giving Back

Every now and then, I run into a meme in the Open Source world about "giving back". That if a person or company uses some Open Source software (OSS), then they are now obligated to give back (in the form of code, patches, money or whatever).

Why is this?

I write OSS because I enjoy coding. I have no need to keep it to myself, so I share it with others. But I don't attach strings to that sharing. That is why I've released it as Open Source. If I wanted strings, or expectations of "giving back", then I should have applied a restrictive license.

Question to other OSS authors: do you expect your users to give back? Why?

Why do we allow this "give back" meme to continue? If we are truly sharing our code, then it should not be with these kinds of expectations.

Westvleteren 12

I've blogged about this beer before. Even used a picture outside of the brewery for a profile picture. Fabulous stuff, as many reviewers would say, and a couple sites call it the best beer on the planet. I'm certainly a fan.

It is just so hard to get. They don't sell the stuff into the retail chain. You can't simply go to your neighborhood bar and grab a case. This is fine -- the monks are only making as much profit as they need, rather than being sell-outs. But it makes it hard as a consumer.

So... Answer is that the abbey will sell you cases. But you have to call ahead of time. And call. And call. AND CALL. The problem? The line is busy. There are so many people trying to get their beer reserved, that you need to be hovering over your Redial key.

This morning, I finally got through. Talked to the monk and reserved three cases of the Westvleteren 12, to be picked up next Tuesday. It'll be a nice long drive through the Belgian countryside, but it is worth it.

You know... Belgium does have its high points!