Avstin Kim wrote on Mon, Jul 22, 2019 at 10:58:50AM -0400:
> CVS for source code management.
That's kind of a frequently asked question.
Some of us (including myself) actually prefer CVS over git for tasks
where it is suffiecient because KISS.
Other developers prefer git for various reasons.
> I am curious why the Project continues to use CVS
The most important reasons are:
(1) Switching from CVS to git is extremely hard. Even with the
best tools available, and even when you improve them further,
it is hard, almost impossible, to avoid destroying part of the
history during the conversion of the repository. OpenBSD
values correctness very highly, and it also highly values the
abilty to audit code, including forensic auditing of code
history to determine, once bugs are found, how they were able
to happen. So correctness and completeness of history matters.
(2) Git is fragile and easy to misuse with surprising consequences.
Well, admittedly, some aspects of CVS are also fragile, but
the number of traps is smaller and developers are already
used to the quirks of CVS, while the more numerous quirks
of git would likely cause surprise and disruption.
(3) Not all developers are convinced switching is even desirable,
and never change a system that is working well unless there
are strong reasons to change it. I admit, though, that for
very large commits, in particular for Perl updates and for
sweeping infrastructure changes in the ports tree, there
would be undeniable benefits from switching to git.
(4) Almost all developers prefer working on actual quality and
functionality of the system over spending time and effort on
infrastructure around it, unless the latter is really
important to make progress with the former.
> if developers have in the past considered migrating the codebase
> to a distributed SCM system
You can safely bet that they did.
Actually, switching to git has been considered very seriously
multiple times in the past and may or may not happen one day.
However, it requires rewriting git from scratch because the reference
implementation of git is not free software. It comes infected with
a viral license.
That's another reason why switching implies a large effort and an
inevitable distraction from other, arguably more important OpenBSD
development.
Admittedly, the implementation of CVS we currently use isn't free
software either, it's GPLv1. But we do not introduce any new
non-free software into the tree if there is any way to avoid that.
> Mercurial
Not free software either (same viral license), never used it
personally, and never heard any developer propose it.
> make branching and merging easier on developers,
Branching and merging ist strictly prohibited in the OpenBSD
repository. Our development process simply neither needs nor allows
use of these features (except in a trivial way for -stable branches,
which novice developers never work on in the first place), so that's
not an argument at all.
Yours,
Ingo
P.S.
Regarding what Raul Miller said:
Git does not require a particular development process but can support
a wide variety of different processes. In particular, you can
require review of patches before push, and you can ban sending out
patchsets and require individual OKs for each indivual patch. So
what you said does not qualify an an argument against using git.