Choosing a New Version Control System

The last several years have brought a frenzy of activity on the version control front. Subversion has been joined by Mercurial, Bazaar, Git, Monotone, Darcs, and many more. With all of them touting their abilities over the other, it’s become confusing to pick which one is right for you and your company. I’ve spent the last year and a half evaluating options for my company, watching the development of many of the projects, the community interactions, the feature set, the issues, and generally pushing the boundaries of what I could do with a subset of them.

For the record: I am involved with Subversion development, although to a much lesser degree these days. Some may see this as a bias, but I think it gives me insight into the tool and what it’s really capable of.

Patents are scary

I’ve always thought it was scary that someone could obtain a patent for putting an element into two linked lists, so that you can have different orders of traversal. That’s negligent on part of the Patent Office. Seriously, it was granted April of 2006. This patent covers a simple application of the fundamentals in data structure that computer scientists learn in school, there is absolutely nothing novel about it. To me, it’s like patenting summations: “in my formula, I summed them forwards and backwards.” I can see it already, the title of the patent would be: “Summation through repeated application of addition.” Yet, it was granted.

Oracle vs Google

I’m not going to say much on this topic, except that I think software patents should die. However, Charlie Nutter–a fellow that I met at one of Python conferences–has quite a bit to say, and it’s an interesting viewpoint considering that he worked at Sun for a while helping to move along the JRuby implementation. He’s incredibly smart, and did a good job of summarizing the patents that Oracle is claiming Google violated with Android. So I’m just going to point you there for the details: http://blog.headius.com/2010/08/my-thoughts-on-oracle-v-google.html

Communications of the ACM

I joined the ACM about a year and a half ago, and they started sending me their equivalent of the IEEE Spectrum–called Communications of the ACM. For anyone that knows me, I’ve been quite vocal about the clear problem regarding multithreaded programming, and many of the issues that come with it. One area in particular is that the threading model is really the assembly language of concurrency and parallelism. It’s far too low low-level to constantly be thinking about. We need higher level constructions, but anything we do with the current languages is really insufficient. I’ve long felt the best way to approach this problem is from a language perspective, where the model can be completely different (Erlang, Scala, and Clojure are all examples of what can be done).

bzr-svn, round 2

In a previous post, I spoke at length how to get started using bzr-svn as a client against a Subversion repository. After another 8 months of using it, I have a few more thoughts I’d like to share.

A word of warning: much of this is about the negatives of using Bazaar against a Subversion repository. I’d like to be clear on a couple of points.

The issues raised are born out of the differences between Bazaar and Subversion. Bazaar is not Subversion. Bazaar made different choices about it’s model for version control, and bzr-svn does it’s best to bridge the gap.

I’d also like to take a moment, and say that these issues in no way reflects on bzr-svn’s author, Jelmer Vernooij. Jelmer has been extremely responsive to my inquires, quick to react to any branches I’ve proposed, and generous with his time and knowledge. I personally believe Jelmer is a fantastic programmer, and his prolific contributions to many open source projects is nothing less than astounding–I really don’t know how he finds the time.