The Suitability of BitKeeper and for Free Software Projects

Note about BitKeeper

Due to recent (as of 13 April 2005) developments, the information contained in these pages, may no longer be fully relevant. Refer to our summary page about this for more information.

Last Updated: 3-January-2003


The purpose of this document is to analyse how suitable are of BitKeeper and the hosting service offered by BitMover (BitKeeper's parent company), for use by free software projects.

I, Shlomi Fish, am a former user of BitKeeper and the service, a user of other revision control tools such as CVS and Subversion, and the founder of the "Better SCM" initiative.

The Technical Merits of BitKeeper

BitKeeper itself is a very feature-rich, powerful and impressive product, and free users receive access to its full capabilities. For my limited use of it for LM-Solve, which is a very small-scale project, it worked very well, but naturally, I did not stress test it. Nevertheless, the Linux kernel developers probably stress test it enough, which proves BitKeeper scales for large-scale projects.

The free use of BitKeeper requires that the comments attached to the changesets be sent by E-mail to OpenLogging. This should not be a problem for most developers of publicly hosted Open-Source projects as they expect the history of the project in the repositories to be publicly available, anyway. (there is a small amount of added network traffic, however)

The Support Offered for BitKeeper

As someone who relied on the BitKeeper support to ask some questions on BitKeeper and to receive support for some initial problems I had in setting it up, I can say that Larry McVoy and the other BitMover employees, are in general very friendly and helpful to free users. I strongly recommend free users to ask questions at the bitkeeper-users mailing list and not at the support E-mail which is intended mainly for paying customers. (that was a mistake I made due to the fact that the BitKeeper web-site was not very clear about it). Note that bitkeeper-users is dedicated for technical discussions of the product and political comments should be kept off it. (another mistake I made)

The BitKeeper License

The BitKeeper License, however, is not very suitable or acceptable for most Open-Source developers. An old Linux Weekly News editorial I read about it described the fact that a few years ago BitKeeper was almost free software except for the necessity to keep the OpenLogging feature. Since then, its source code is no longer publicly available and the license has been changed several times. Sometimes it was made less restrictive, but often quite the opposite.

I kept LM-Solve on BKBits, but I also kept several layouts of logic mazes I found on the Logic Mazes site and similar sites, so users of the program could feed the solver with them. These mazes were copyrighted by Robert Abbott and others and as far as I knew were not free content. (naturally, they were distributed as a separate package, with an appropriate notice explaining who originated and owned them)

At one point I decided to stop using BitKeeper, due to a misinterpretation of a license change, my frustration from the lack of source code, and the reluctance to put up with further licensing changes.

I still wanted to toy with BitKeeper afterwards, but then I discovered the license had previously changed to make sure a BitKeeper user cannot work on competing revision control systems. Since I was planning to contribute to an open-source (which I have already did since then) one I could no longer legally use it. This has been slashdotted and in one of the comments a Slashdot reader claimed he used BitKeeper until a few years ago when the license was changed and made him unavailable to use it any longer. So, I'm not alone.

The unavailability of the source code also made my life harder. At once, I suggested to Mr. McVoy and Co. that BitKeeper would cache the OpenLogging comments and send them after many were collected. That way, the Technion's relatively poor connection to the Internet backbone would not be constantly flooded with E-mail messages, should it adopt BitKeeper system-wide. I believe he implicitly agreed it would be a good idea. I thought about implementing it myself and sending him the patch, but I evidently discovered that I could not in a straightforward way.

The pattern is here clear: by restricting the availability and license of BitKeeper, BitMover harms perfectly valid users who are happily using BitKeeper, and wish to contribute to its development by feedback , help for newbies or even code. It is all done in order to prevent a minority of abusers from abusing BitKeeper, and despite the fact that I seriously doubt that they would have become paying customers one way or the other.

The BitKeeper gratis license clearly specifies that one should upgrade to the new version of BitKeeper and not use the old one for production work, even if a change of license has occurred. This has a very disturbing UCITA feel to it.

In short, the BitKeeper license is not suitable for use by most open- source developers, even if they are not "idealistic" enough to refrain from using a package that deviates from the Open Source Definition, and the Free Software Definitions so much. It is simply way too restrictive.

The Hosting Service

As opposed to the license, the hosting service is very good. It is discrete, reliable and useful. Starting a project requires some RTFMing, but otherwise no intervention on the part of BitMover's employees. I never lost data using it, and the connectivity from the Technion and from my home ADSL connection was very fast and good. (again - I did not stress-test it).

The main caveat here is that you have to make sure you don't make Larry McVoy (the person) angry. He is known to take comments about the licensing and what he considers abuse of his service very harshly, and wants people to leave him alone.

Effects on Co-developers

Due to its license, BitKeeper has a bad effect on the community of developers of the project. For once, more "idealistic" developers who refrain from using non-free software packages, will need to find a different way to contribute. (patches, etc.). The non-compete clause also limits contributors to other version control alternatives to contribute. (or limits those who may wish to contribute to them in the future).

As Greg Hudson points out using BitKeeper (or any other distributed version control system), is actually not necessary for a scalable cooperation. Open-source development teams would better give repository access to several central developers, instead of making sure only one developer has the access to the central repository (as is the case for Linux).

This scheme is taken to extreme by projects like KDE, which give away repository access even for very small developers, and maintain the integrity of the code by reviewing the changesets in the commits mailing list.

It is possible to do so with BitKeeper, but even a lesser version control system will do.


As can be seen, the only bad point here is the license. But the license is the most important factor that determines the success of a "shrinkwrap" software project. We all know how the AT&T licensing of System V has done more harm to UNIX than Microsoft could have done alone. We all know how the Linux Kernel GPL license gave it an unbeatable edge over the BSDs. I can tell from my experience that my own pet project, has become a category killer because it was distributed from the start as Public Domain, instead of GPL or simply proprietary license in the case of its many alternatives. (thus making it accessible for many Freeware and Shareware programs which would like to use it as an API)

BitKeeper fails miserably here, at least as far as free software developers are concerned. Many free software developers are too idealistic to use something like that. That was not the case for me when I started using BitKeeper, and I got burned in the hands from using it. I still remember having liked it a lot and being very impressed by its capabilities. But it has become inaccessible for me and now I grew to like Subversion too, and use it for all my work (including writing this very document). It does not have all of BitKeeper's features but is very usable, and I'm impressed by its architecture as well. I recommend every developer to look into some of the available alternatives to CVS (CVS is limited in many ways), before they settle on using it. The main reason I started using BitKeeper was because it offered an attractive free-of-charge public hosting service. If the same existed for Subversion, I would probably have used it instead.

Here, the ball passes to the court of the Hosting Services. Setting up hosting of an alternative to CVS (which many times is much more straightforward to manage than CVS, which is known as very insecure by default) will practically make sure no free software developer except perhaps the Linux kernel developers will use BitKeeper out of his own free will. Other than that, it is obvious that the limitations of CVS and the alternatives to it are the talk of the day in several online forums I frequently visit.