On Mon, Jul 22, 2019 at 10:58:50AM -0400, Австин Ким wrote:
> Hi,
> 
> As someone completely new to OpenBSD the one immediate first impression that 
> most peculiarly sticks out like a sore thumb to me is the Project’s use of 
> CVS for source code management.  In the class I’m taking (the one for whose 
> class project I just recently downloaded OpenBSD/macppc for the first time to 
> install on IBM PowerPC 970/970MP-based Apple G5 hardware), we all use git for 
> SCM which I think is typical at most universities nowadays (at least in the 
> U. S.).  I am curious why the Project continues to use CVS and/or if 
> developers have in the past considered migrating the codebase to a 
> distributed SCM system like Mercurial which IMHO might make branching and 
> merging easier on developers, especially more recent developers coming out of 
> universities.  Is it because the Project prefers using a centralized versus 
> distributed SCM system?  Or is it just because that’s just the way it has 
> always been done and why change that?  And would migration to something like 
> hg be a possibility in the future that might possibly lower the psychological 
> barrier of entry for newer developers?  (And btw this is meant as a sincere 
> question with no intention to start a contentious debate; really just asking 
> out of curiosity because seeing CVS diffs in the mailing lists was what 
> visually jumped out most prominently to me for the first time; I’m sure after 
> spending more time with OpenBSD it could be something I could just get used 
> to.)
> 
> Thanks for all the wonderful responses to my previous post which really 
> helped me gain a better understanding of the Project!
> 
> All the best,
> Austin
> 
> “If you want to change the future, start living as if you’re already there.”  
> —Lynn Conway
> 

CVS is good enough for the project for various reasons:

- CVS runs on old platforms with very low resources
- CVS scales reasonably well enough to the size of the source tree
- CVS allows updating individual subdirectories or files; this feature is
  used by machines building snapshots 24/7 across several CPU architectures
  from a single source tree
- CVS allows developers and users to update their source trees to -current
- CVS allows bad commits to be reverted
- CVS can cherry-pick commits to -stable branches
- Theo would know how to quickly fix a broken CVS repository if needed
- Assuming the version control system should be part of base (I would
  say it should): CVS is GPLv2 and has been in base since the beginning
  but new GPL software is not allowed in base. The only well-known system
  with a BSD licence would be fossil which doesn't scale to the size of
  the source tree.

Finding another version control system that satisfies all the above
without demanding changes in the environment and processes presently
surrounding CVS would not be trivial. Migrating to a different system
would be very time-intensive and costly in any case as it would disrupt
active developers, build machines, mirrors, and the release process.

That said, OpenBSD developers aren't only using CVS. Many are using some
complementary version control system locally to keep track of their own
changes. They then mail out patches which get committed to CVS and synced
back to their private version control systems in some way. There are various
workflows developers have come up with to manage their changes: some simply
save diffs generated with CVS; some use hg, git, fossil, etc.

If your university class prefers using git, I'd recommend the repository at
https://github.com/openbsd/src. This should be good enough for educational
purposes, even though, officially, it is not supported and could break at
any given moment.

Reply via email to