2001
Table of Contents
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
DEFINITIONS
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-
ware.
+ 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
repository.
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-
ging.org.
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.;
and
(iii) is distributed under the terms of the BKL.
2. LICENSE GRANTS
(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-
ware.
(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.
3. LICENSEE OBLIGATIONS
(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
system.''
4. NON-CONFORMING USE
4.1. Single user packages
For single user BitKeeper Packages, Open Logging is
optional.
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
infringement.
This license is not available to You if You and/or your
company have any unresolved copyright disputes with Bit-
Mover.
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.
5. CONVERSION TO THE GPL
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.
6. DISCLAIMER OF WARRANTY
COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN ``AS
IS'' BASIS, WITHOUT WARRANTY OR INDEMNIFICATION OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIM-
ITATION, WARRANTIES OR INDEMNITIES CONCERNING INTELLECTUAL
PROPERTIES (E.G. PATENTS OR COPYRIGHTS), WARRANTIES THAT
THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR
A PARTICULAR PURPOSE OR NON-INFRINGING. SHOULD ANY POR-
TION OF BITKEEPER SOFTWARE PROVE DEFECTIVE IN ANY RESPECT,
YOU ASSUME THE COST OF ANY RESULTING DAMAGES, NECESSARY
SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WAR-
RANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO
USE OF BITKEEPER SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT
SUBJECT TO THIS DISCLAIMER.
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
3(b).
+ 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
requirement.
+ 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.
8. LIMITATION OF LIABILITY
TO THE FULL EXTENT ALLOWED BY APPLICABLE LAW, BITMOVER'S
LIABILITY TO YOU FOR CLAIMS RELATING TO THIS LICENSE,
WHETHER FOR BREACH OR IN TORT, SHALL BE LIMITED TO ONE
HUNDRED PERCENT (100%) OF THE AMOUNT HAVING THEN ACTUALLY
BEEN PAID BY YOU TO BITMOVER FOR ALL COPIES LICENSED HERE-
UNDER OF THE PARTICULAR ITEMS GIVING RISE TO SUCH CLAIM,
IF ANY.
IN NO EVENT WILL BITMOVER BE LIABLE FOR ANY INDIRECT,
PUNITIVE, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES IN
CONNECTION WITH OR ARISING OUT OF THIS LICENSE (INCLUDING,
WITHOUT LIMITATION, LOSS OF PROFITS, USE, DATA, OR OTHER
ECONOMIC ADVANTAGE), HOWEVER IT ARISES AND ON ANY THEORY
OF LIABILITY, WHETHER IN AN ACTION FOR CONTRACT, STRICT
LIABILITY OR TORT (INCLUDING NEGLIGENCE) OR OTHERWISE,
WHETHER OR NOT SUCH PARTY HAS BEEN ADVISED OF THE POSSI-
BILITY OF SUCH DAMAGE AND NOTWITHSTANDING THE FAILURE OF
ESSENTIAL PURPOSE OF ANY REMEDY.
9. MISCELLANEOUS
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
California.