Why OpenBSD Developers Use CVS
The Concurrent Version System (CVS)
was selected for use by the OpenBSD project group at the initial establishment
of the project.
With CVS, OpenBSD developers are able to
update the source code (which is currently about 2.5GB, 280,000 files) that
comprise the OS, ports/packages, the X
Window System and the website.
OpenBSD pioneered the use of anonymous CVS,
which allowed anyone read-only access to the CVS repository so they could
access the most recent code, the change history and the
commit messages within an hour or two of the change being made.
With CVSweb, a convenient
and navigable web accessible interface to all of this is available as well.
Since OpenBSD was founded, other version control systems have come
along, and people often wonder why OpenBSD still uses CVS.
Short version: it works well for us and does what we need it to do.
Longer version:
- CVS has a tolerable license.
We would like the version control system used by OpenBSD to be PART of
OpenBSD, not an "add-on".
- It fits OpenBSD's development model well.
OpenBSD development process is intended to be kept simple -- all work is at
HEAD (the most recent commits in the tree). While branches are used for
-stable and tags are used for
releases, the "interesting" part of OpenBSD development is intended, and
should always be, at HEAD.
Other programs offer additional features, but most additional features
aren't desired, as they would conflict with the established OpenBSD
development model.
- OpenBSD developers are familiar with how it works.
Software of this complexity seems to have "quirks" -- the quirks of CVS
and how it impacts OpenBSD development are understood and workarounds
for its rough edges are already known.
- The infrastructure is already set up.
Dozens of mirrors around the world already exist and do the job well.
- The history of OpenBSD is already in CVS.
History is the point of a version control system.
Migrating to other version control systems often results in file history
being garbled or lost.
- It is relatively light weight and portable.
It runs fine both on fast, modern machines as well as slower architectures such
as sparc or armv7, and runs on ALL platforms
OpenBSD supports, both as a client and as a repository server.
- You can checkout any piece of the tree, down to an individual file.
- CVS works well enough.
It is unlikely that any alternative versioning system would improve
the developer's productivity or quality.
Changing version control systems would mean developers must spend time learning
something new and many systems would need to be reconfigured.
Very little time is spent working with CVS, which is as it should be and it is
unlikely the time spent learning and implementing a new system would ever be
recovered.