A Critique of the BitKeeper License

Ethical and Practical Dissatisfactions of a Free Software Hacker

Jack Moffitt


Table of Contents

1. Introduction
2. A Breakdown of the License
2.1. Availability
2.2. Evolution
2.3. Conforming Software
2.4. Conversion to the GPL
2.5. Termination for Support Costs
3. Almost Free Still Isn't Free
4. Conclusion
A. Appendix
A.1. BitKeeper License v1.36

1. Introduction

BitKeeper is without a doubt a powerful source management tool. It not only addresses serious limitations of CVS and other source management tools, but it adds its own unique and quite useful innovations. Unfortunately, along with this wonderful tool comes a not so wonderful license.

I desired a better tool for source management. I was excited about BitKeeper as a replacement for CVS. I thought BitKeeper was Free enough, and I respected BitMover's attempts at making their software almost Free. I started by playing with it to see what a better source management tool was like. Eventually, my playing became regular use, and it wasn't long before I had moved icecast and and some related tools into BitKeeper repositories.

After some I spent some time using BitKeeper (and after having been asked to reconcile this decision in the light of Free Software on more than a few occasions), I began to imagine situations that would prevent me from doing the kinds of things I am used to doing with Free Software. It started with distribution.

Most Free Software and Open Source Software is available for download from a number of locations. It's commonly mirrored on major FTP servers, and is almost always downloadable directly from the authoritative location. BitKeeper is different. It seems the only place to get BitKeeper is from BitMover, and if you want to download it from them, you must supply an email address. BitMover sends you the password to the download location via email, and only with this password are you permitted to download BitKeeper from their site. Many people were complaining to me about this, and so I voiced my complaints to BitMover. They were unwilling to change this policy. Since nothing in the license prohibited me from distributing BitKeeper myself, I asked them what they thought about me bypassing this password system by making BitKeeper available on my own servers for users. While I don't think they could legally refuse me, they did initially discourage this. I was later told that distribution of BitKeeper binaries was permitted as long as the binaries I distributed passed the current regression suite (not the included regression suite).

This was unacceptable, and I was not used to this kind of attitude. The freedom to redistribute copies of software is one of the fundamental freedoms outlined in the Free Software philosophy. This is so ingrained in our online behaviors that it is no wonder that it is taken for granted. This prompted me to think about other issues related to the almost Free BitKeeper license. Particularly, I began to wonder how BitMover might prevent me from redistributing their software, should I choose to do so. When BitMover finally changed the license to add the termination clause for support burdens I realized I could not be satisfied with this license. These termination or revocation clauses essentially negated any of the rights offered in the license. "In order for these freedoms to be real, they must be irrevocable as long as you do nothing wrong; if the developer of the software has the power to revoke the license, without your doing anything to give cause, the software is not free."

Most of the termination and revocation clauses have reasons, but these reasons aren't good ones. A detailed look at specific parts of the license will be necessary to demonstrate why.

2. A Breakdown of the License

Many parts of the BKL are quite standard in many licenses. I won't present each part of the license here, but rather, I shall concentrate on highlighting the obvious areas of dissatisfaction as well as those areas that seem benign but aren't. Please see the appendix for a complete copy of the license.

2.1. Availability

The BitKeeper license is available from the BitKeeper website and is also distributed with every version of the BitKeeper software. BitMover, the company which owns and develops the BitKeeper software, has made this license easily accessible. Unfortunately, the license presented online (both at the website and in the download area) is not the most current BitKeeper license. There are further restrictions in the license version which accompanies the software that are not mentioned on the website.

2.2. Evolution

The fact that the license displayed to users is different than the license that comes with the software highlights a key point. The BitKeeper License changes from time to time. While the current license may be to the liking of a particular class of users, a future change may render the license unacceptable to these users. Recently changes have been made in the BitKeeper License that have made the license more restrictive than it was previously.

2.3. Conforming Software

Much of the rights one is granted in the BitKeeper License are conditioned on the software being Conforming Software. This means that the restrictions that make BitKeeper Conforming Software must apply when a user modifies, distributes, or in some other way excercises a right granted by the license.

Free Software also has a similar restriction. The GPL requires the software to remain under the GPL, and gives express terms for what this implies. However, the GPL is concerned with preserving freedom. The BitKeeper license uses this in a different way.

2.3.1. Regression Tests

The first requirement of Conforming Software is that it pass all the regression tests for that version of the software. Typically these regression tests try to maintain software quality by pointing out software failures introduced during development. There are a few reasons why having this seemingly benign restriction is unsatisfactory.

The restriction for passing regression tests also leaves a potential dangerous loophole in the license. At any time BitMover may decide to add a regression test that further restricts what one can do with the software. This could be a method of indirectly regulating what can be done with the software without making an obvious change to the license.

More importantly, the goal of maintaining software quality does not justify such restrictions. A certain user may wish to create a version that does not pass all of the tests. A good example for this is Pippy, which is the handheld version of the Python language interpreter. Currently Pippy does not pass all of the regression tests, but it is still quite a useful piece of software. It may not pass them because they are not relevant or because those parts of the software being tested aren't yet finished. In either case, it is certainly acceptable that it has not passed all the standard tests.

Simply put, the restriction for regression conformance is a gratuitous one. There are many valid and common reasons to change a piece of software in such a way that it does not pass its original regression tests, and it gives BitMover (or whoever should acquire BitMover in the future) a backdoor to change the effective policy.

2.3.2. Open Logging

The requirement that the software perform Open Logging identically to the unmodified version of BitKeeper is the second restriction that Conforming Software must meet. This restriction is probably the most well known from the BitKeeper license.

This is the critical piece of the license that enables the business model that BitMover has chosen to adopt. Anyone using BitKeeper freely must let it publish some amount of what they are doing openly. In essence, BitMover's business model is selling privacy. Free Software hackers normally work in the open, so this restriction isn't a particularly relevant one. Commercial users value their privacy highly and therefore will want to pay for a version of the software that does not publish information about how they use the software.

On one hand, this is an interesting model. Obviously BitMover wanted to make their software accessible to the Free Software community as best they could, but also preserve some financial future for the company on their own terms. This restriction in today's community is almost always benign; however, it falls prey to the same problems as the regression testing restriction. Anyone who wants to change BitKeeper so that Open Logging is no longer relevant is not allowed to do so. It's a clear limitation on what users are allowed to do with the software, even if the degree is slight.

2.4. Conversion to the GPL

In the event that the Open Logging servers cease to function for a given period of time, BitMover has written into the license that the software shall be licensed under the GPL. This means that if BitMover were to fail as a company, then their software shall become Free.

There are reasons to like this clause. Certainly a commercial business using BitKeeper will probably like this. They won't be stuck with unsupported and dead software should the business of their vendor fail. However, other implications of this clause are both humorous and noteworthy.

This clause states that BitKeeper might become free in the future. It does not say that it will be free or that it won't be free. No one can know if BitMover's servers will cease to operate and the software become available under the terms of the GPL. This is distinctly different from other alternative models that have conversions to Free or Open Source Software. The Aladdin Free Public License (AFPL) that Ghostscript is distributed under does not have any conversion clause, but the developers make the software available under the GPL after a specific time period. AFPL Ghostscript will become Free Software at some point in its future, and many version of AFPL Ghostscript have already become GPL. Contributors and users can be comfortable making contributions and using the software because they know that it will eventually be free. The BitKeeper License conversion clause does not do this.

The humorous aspect to this clause is that the best way the Free Software community has of obtaining a free BitKeeper is to not use it at all, refuse to promote it, and wait until BitMover fails as a company. By using the software, a user is helping ensure that it stays non-free.

2.5. Termination for Support Costs

The newest restriction on the use of BitKeeper is the termination of your license for being a support burden. In the current license (this clause is only present in the 1.36 version of the license and not in the versions displayed on the website), the license can be terminated if the licensee's usage of the software results in more than $20,000 in support costs to BitMover.

This restriction is simply absurd.

If a commercial user purchases the right to use BitKeeper without Open Logging and/or support for the software, they receive BitKeeper under a different commericial use license. If this clause were to appear in the commercial license they would probably not be satisfied knowing that their license can be terminated if they are too much of a support burden. Most will simply see this as a way for BitMover to get out of fixing critical or difficult bugs in the software.

This restriction also punishes the free users, especially those in the Free Software community. It is a regular and expected practice to find and report bugs in software. It seems odd that BitMover would reserve the right to terminate one's license because they found so many bugs that it resulted in more than $20,000 of development effort for BitMover to fix them. It takes effort to find bugs, and in finding bugs, the BitKeeper software can be improved. It doesn't make sense that there is an opportunity to be punished for providing value to BitMover.

It seems the intent was to prevent the free users from become burdens in other ways, such as with ceaseless requests for help through email or by telephone. If this is the case, this clause still makes little sense, as BitMover can easily ignore or refuse to help those free users. They can easily state that support is not guaranteed instead of building in measures to terminate a license.

3. Almost Free Still Isn't Free

With all of the restrictions that have been outlined, BitKeeper seems almost free. Many of the values that the Free Software community believes in are addressed in the license, and it is certainly clear that this is not a typical proprietary software license, nor is it simply a proprietary license that comes with source code. This seems to be a noteworthy effort to create a license that respects the rights and freedoms the community embraces and establishes a clear business model for the software developer, but it falls quite short of its mark.

It is of little use to be offered rights and freedoms when they can be taken away somewhat arbitrarily. Licenses that are accepted by the Free Software and Open Source communities do not contain such escapes for the licensor. In my opinion, this is a very serious problem with the BitKeeper license in its current version. However, even without these problems, there are still reasons that the BitKeeper license is unsatisfactory. Almost free still isn't free.

If we are going to campaign for free and open software, we must define what constitutes such software. It is necessary to define what the miminum requirements are for software to be free or open source. If these requirements aren't clear, it is likely that they won't be adhered to. If we amend the requirements to accomodate something that is almost Free Software or almost Open Source, these boundaries will diminish gradually and not only will our campaign be unsuccessful but we will have weakened our efforts.

These minimum requirements have been defined by the Free Software Foundation and the Open Source Initiative. Each defines the rights and freedoms that make a given piece of software either Free Software or Open Source Software respectively. BitKeeper under the terms of the BitKeeper License is neither Free Software or Open Source software. It fails to meet the criteria and therefore fails to meet the standards of freedom that these criteria define and that the community have adopted. If the aim is to promote Free Software and Open Source and preserve these rights and freedoms, we should not be satisfied with almost free or almost open source licenses like the BitKeeper license.

4. Conclusion

Sometimes it is tempting to sacrifice our rights and freedoms for convinience, but we should not do so. There are many problems with CVS and other Free source management packages, and it would be nice to move to a more robust and more well-designed tool. We are better off to repair or fix the tools which are free, or if that is not acceptable to create new free tools that preserve the the rights and freedoms we enjoy.

I encourage BitMover to adopt the minimum requirements for freedom or openness that this community has defined, but at the same time I respect their wish to preserve the business model of their choice. At the very least I would like to see the rights the BitKeeper license does grant preserved and not subject to arbitrary revocation. I do hope that they will find some way to provide the community a truly free version of their tools and still meet their business goals.

I also encourage Free Software hackers to avoid or cease using BitKeeper in their own projects. It might not be as convinient to use other tools, but in the long term we should be more concerned with preserving those rights and freedoms we currently exercise and enjoy daily. I personally have stopped using BitKeeper for all projects and have moved these projects back into CVS repositories. I hope that if you or your team is considering using or currently using BitKeeper that you will think about the implications of doing so and reconsider.

I encourage the entire community to support the efforts of Free and Open Source projects in this area. Source management is complex, and the efforts of the community to support Free and Open Source projects (CVS and Subversion are two such projects) are the best way we have to improve our development infrastructure.

Finally, with the increasing popularity of alternative licenses, it is important determine whether they preserve the minimum acceptable amount of freedom and be responsible about choosing software that that meets these minimum criteria and advances our goals as a community.

A. Appendix

A.1. BitKeeper License v1.36


       BKL:  This license in its entirety, also known as the Bit-

       You: The licensee of the BitKeeper Software.

       BitMover: The licensor of the BitKeeper Software.

       GPL:  The  Free  Software  Foundation's   General   Public
             License, version 2.

       BitKeeper Software:

             + In the case of a binary distribution, the complete
               set of executable programs  and  any  accompanying
               files,  such  as  documentation, known as the Bit-
               Keeper Software.

             + In the case of an installation for use,  the  com-
               plete  set of executable programs and any accompa-
               nying files, such as documentation, known  as  the
               BitKeeper Software.

             + In the case of a source distribution, the complete
               set of source files, known as the BitKeeper  Soft-

             + In  any  case,  the  set of files distributed must
               include all files and programs distributed by Bit-
               Mover as part of the BitKeeper Software.

       BitKeeper Package: A set of files managed by the same Bit-
             Keeper  ChangeSet  file.   There  may  be   multiple
             instances  of the package; each instance is called a

       Single user BitKeeper Package: A BitKeeper Package wherein
             all changes to all files are made by the same person
             and the total number of files does not exceed  1000.

       Metadata:  Information  about the data managed by the Bit-
             Keeper Software in a BitKeeper Package, such as

             + The ChangeSet file;

             + The messages which annotate modifications  of  the
               data  (also  known as check in comments, ChangeLog
               entries, and/or log messages);

             + All files contained in  the  top  level  BitKeeper
               directory  in  a  BitKeeper Package, in particular
               the  BitKeeper/html   directory   and   the   Bit-
               Keeper/etc/config file.

       Open  Logging: The transmission of Metadata about the data
             managed by the BitKeeper Software, to a  functioning
             Open  Logging  server  in the openlogging.org domain
             (or an alternative  domain  as  posted  on  www.bit-
             keeper.com/logging).   Examples  of  such  collected
             information  may  be  seen  at   http://www.openlog-

       Conforming Software: BitKeeper Software that:

       (i)   passes  all of the current regression tests for that
             version of the BitKeeper Software; the tests must be
             unmodified and are not licensed under the BKL;

       (ii)  performs  Open  Logging  identically to a current or
             recent (less than one year old) version of the  Bit-
             Keeper  Software  as  distributed by BitMover, Inc.;

       (iii) is distributed under the terms of the BKL.


       (a)   Licensees may freely install, use,  copy,  and  dis-
             tribute unmodified BitKeeper Software.

       (b)   Licensees  may create, install, use, and distribute,
             derivative works which are (or, in  the  case  of  a
             source  distribution, will produce) Conforming Soft-

       (c)   The subsets of the system known as the MDBM library,
             the LEAKS library, and the INSTALLER are also avail-
             able under the terms of the GPL.


       (a)   Maintaining Open Logging Feature: You hereby warrant
             that you will not take any action to disable or oth-
             erwise interfere with the Open  Logging  feature  of
             the BitKeeper Software.  You hereby warrant that you
             will take any necessary actions to ensure  that  the
             BitKeeper  Software successfully transmits the Meta-
             data to an Open Logging server within  72  hours  of
             the  creation of said Metadata.  By transmitting the
             Metadata to an Open Logging server, You hereby grant
             BitMover,  or  any other operator of an Open Logging
             server, permission to republish the Metadata sent by
             the BitKeeper Software to the Open Logging server.

       (b)   Modifications: You may provide, at your option, mod-
             ifications to BitMover.  By doing so, You grant Bit-
             Mover  permission  to  distribute  the  modification
             under any license.  This provision survives any ter-
             mination  of  your  license.   In  return,  BitMover
             promises that future versions of the BitKeeper Soft-
             ware  that  contain your modification will be avail-
             able under the BKL.

       (c)   Accessing Others' BitKeeper Package:  You  may  only
             use  the  BitKeeper  Software  to access a BitKeeper
             Package created by BitMover or third parties if  you
             comply  with  the  license of the BitKeeper Package,
             which can be found at the BitKeeper/etc/REPO_LICENSE
             file  within the BitKeeper Package and/or by running
             bk repo_license.

       (d)   Inclusion with  another  application  having  source
             and/or  configuration  management  features:  If you
             include the BitKeeper Software for use with a system
             having  source  and/or configuration management fea-
             tures, that system must inform  the  user,  at  each
             execution  of  BitKeeper  code,  ``This  software is
             using part of the BitKeeper configuration management


       4.1.  Single user packages

       For  single  user  BitKeeper  Packages,  Open  Logging  is

       4.2.  Closed Use

       Closed use is the use of the  BitKeeper  Software  without
       Open  Logging.   Closed  use  of  the  BitKeeper  Software
       requires that you (or your organization)  purchase  closed
       use  licenses  for  all  users  of  the BitKeeper Software
       within your organization.  The BKL does not convey author-
       ity to make closed use of the BitKeeper Software.

       4.3.  Logging Waivers

       Certain  sites  which  do  not wish to participate in Open
       Logging, such as educational or research  institutes,  may
       apply  for, and may be granted, a written waiver from Bit-
       Mover, Inc.  After applying for a written waiver, such  an
       institution  may  use  the BitKeeper Software without Open
       Logging, for up  to  90  days,  or  until  a  response  is
       received  from  BitMover,  Inc.,  whichever  comes  first.
       Should BitMover not grant your waiver  request,  you  have
       the option of converting to Open Logging, immediately ter-
       minating your use of the BitKeeper Software or  continuing
       your use after purchasing closed use license[s].

       4.4.  Damages

       Use,  copying,  or distribution of non-conforming software
       without purchasing a closed use license, receiving a  log-
       ging  waiver,  or using BitKeeper Software only for single
       user packages is a violation of copyrights  held  by  Bit-
       Mover  on  the  BitKeeper Software.  Damages for copyright
       infringement are the greater of actual damages  or  statu-
       tory  damages,  which  are  currently  up  to $150,000 per

       This license is not available to You if  You  and/or  your
       company  have  any unresolved copyright disputes with Bit-

       BitMover reserves the right to terminate this license  for
       any  licensee  or group of licensees whose usage under the
       terms of the BKL results in support costs to  BitMover  in
       excess of $20,000.


       The  BitKeeper  Software  will be made available under the
       terms of the GPL  in  the  event  that  all  Open  Logging
       servers  cease  to function for a continuous period of 180
       days starting on or after June 1st 2000.



       7.  TERMINATION

       + This License and the rights granted hereunder will  ter-
         minate  automatically  if  you fail to comply with terms
         herein.   Provisions  which,  by  their  nature,  should
         remain  in effect beyond the termination of this License
         shall survive  including,  without  limitation,  Section

       + If  the  Open  Logging  requirement is found to be unen-
         forceable, then this  license  automatically  terminates
         unless  You  continue  to  comply  with the Open Logging

       + Should You or  your  organization  choose  to  institute
         patent,  copyright, and/or intellectual property litiga-
         tion against BitMover, Inc. with  respect  to  the  Bit-
         Keeper  Software,  then  this  License  and  the  rights
         granted hereunder will terminate automatically as of the
         date such litigation is filed.

       + If  this  License is terminated for any reason, You must
         delete all copies of the BitKeeper  Software  and  cease
         using the BitKeeper Software.


       IF ANY.



       9.1.  Merger

       This License represents the complete agreement between You
       and  BitMover  regarding the BitKeeper Software covered by
       this License.

       9.2.  Assignment

       BitMover may assign this License, and its rights and obli-
       gations hereunder, at its sole discretion.

       9.3.  Severability

       If  any provision of this License is held to be unenforce-
       able, such provision shall be reformed only to the  extent
       necessary to make it enforceable.

       9.4.  Governing Law/Jurisdiction

       This  License  shall be governed by the laws of the US and
       the State of California, as applied to  contracts  entered
       into  and to be performed in California between California
       residents.   By using this  product,  you  submit  to  the
       jurisdiction  of  the  courts  in the Northern District of