Annotation of wikisrc/projects/project/cvs-migration.mdwn, revision 1.16

1.1       mspo        1: [[!template id=project
                      2: 
                      3: title="CVS Migration for NetBSD repos"
                      4: 
                      5: contact="""
                      6: [tech-repository](mailto:tech-repository@netbsd.org)
                      7: """
                      8: 
                      9: category="misc"
                     10: difficulty="hard"
1.16    ! maya       11: done_by="Joerg Sonnenberger"
1.1       mspo       12: 
                     13: description="""
1.8       wiki       14: 
1.15      schmonz    15: ### Background and description
                     16: 
1.8       wiki       17: NetBSD is one of the first projects to use internet-available source control.
                     18: It has been using CVS since the very beginning of the project (over 21 years)
                     19: and the repository is vast.
                     20: 
                     21: NetBSD also hosts the pkgsrc repository which has many small files, many
                     22: "imports" and other technical challenges associated with VCS.
                     23: 
                     24: NetBSD also has various small internal repositories (like this wiki).
                     25: 
1.9       wiki       26: During the last twenty years tooling has improved and popular developer culture
1.8       wiki       27: has shifted to new workflows.
                     28: 
                     29: The purpose of this project is to identify:
                     30: 
                     31:  * existing 'workflows' in common use among developers
                     32:     * (example): [[dholland/hgnb]]
                     33:  * existing 'tooling' within NetBSD the organization
                     34:     * how much memory/disk is required to host NetBSD?
                     35:     * how are backups performed?
                     36:     * can the tools be cross-build?
                     37:  * security requirements like
                     38:     * how do we validate commits?
                     39:     * how do we ensure commits originated from developers?
                     40:  * release engineering requirements such as
                     41:     * how does a pullup request work?
                     42:     * how do we ensure the correct files are included in the correct release branches?
                     43:     * how do we checkout a release branch
                     44:     * how do we look at the history of a release branch
                     45:     * how do we get different revisions of a file on a branch
                     46: 
                     47: major parts of the technical work like "how to convert FROM CVS to git/hg/fossil"
                     48: has already been done, which is why we are able to now ask "how would the project
                     49: continue to function?"
                     50: 
                     51: ### Our decision matters
1.7       schmonz    52: 
                     53: You're reading this because you care about the future of NetBSD and
                     54: you understand that good tools act as a force multiplier.
                     55: 
1.8       wiki       56: ### Our decision is not obvious
1.7       schmonz    57: 
                     58: If it were, we'd have made it already (and wouldn't be disagreeing
                     59: so persistently about which one it needs to be ;-).
                     60: 
1.8       wiki       61: ### Our decision needs to be about the whole elephant
1.7       schmonz    62: 
                     63: We all understand the basics of using source control. This level
                     64: of understanding is necessary but not sufficient to make an informed
                     65: decision about whether to migrate any or all of NetBSD's repositories
                     66: to another VCS, and if so which, or how.
                     67: 
                     68: Our choice of VCS carries implications not only about how developers
                     69: hack on NetBSD, but also about how non-developers contribute and
                     70: become developers, and how Project sysadmins keep our valuable code
                     71: secure. Therefore, any choice of VCS other than the default (sticking
                     72: with CVS for a while longer) necessarily implies that as a group,
                     73: we all need to learn how we're going to do what we expect to need
                     74: to do. Not all of this learning needs to happen before we can make
                     75: a reasonably confident decision for our Project. But if we want to
                     76: arrive at consensus, much of it does.
                     77: 
                     78: There is no available choice of VCS that entirely avoids tradeoffs
                     79: for us. Therefore, to choose intelligently, we must first consider
                     80: all the tradeoffs we can think of, then decide which ones we can
1.10      jnemeth    81: live with and which we can not.
1.7       schmonz    82: 
1.8       wiki       83: ### Our decision needs to be made together
1.7       schmonz    84: 
                     85: We're a community. The only way a complicated, interconnected set
                     86: of changes like this can be implemented is for us to arrive at rough
                     87: consensus that some particular VCS:
                     88: 
                     89: - is sufficiently well suited to our project's needs in theory,
                     90: - is sufficiently easily adapted to our needs in practice,
                     91: - has a sufficiently fail-safe migration plan,
                     92: - is worth the effort to switch, and
                     93: - has volunteers to do the work.
                     94: 
1.8       wiki       95: ### How you can help, right now
1.7       schmonz    96: 
                     97: What are some considerations you think are important? Are they
                     98: listed here? If not, edit this page and add them.
                     99: 
1.15      schmonz   100: ### Some previously collected considerations
                    101: 
                    102: * [[mailing-lists/tech-repository]]
                    103: 
1.8       wiki      104: ### Considerations
1.7       schmonz   105: 
1.8       wiki      106: Humans
1.7       schmonz   107: 
1.8       wiki      108: * People who administer Project resources
1.10      jnemeth   109: * People who administer release branches
1.11      schmonz   110: * People who administer security updates
1.8       wiki      111: * People who can commit directly to NetBSD
                    112: * People who can't commit directly to NetBSD
1.7       schmonz   113: 
1.12      wiki      114: Machines
                    115: 
                    116: * Some ports/machines are memory constraint or rather slow (by todays standards), a VCS different than CVS should be able to used on these machines as well.
                    117:  (e.g. git has parameters to tune memory usage, and there exists git-cvsserver which allows a git repository to be accessed using a CVS client)
1.1       mspo      118: 
1.13      wiki      119: Workflow / Commonly used actions
                    120: 
                    121: * Checkout the whole tree
                    122: * Checkout a partial tree (or subdirectory)
                    123: * Create a branch
                    124: * Merge a branch with the head/main branch
                    125: * Create a tag
                    126: * Commit local changes to a branch
                    127: * Commit local changes to the main branch
                    128: * Revert a commit
                    129: * Fix a commit message
                    130: * Create a diff between two versions of a file
1.1       mspo      131: 
1.14      wiki      132: Tools
                    133: 
                    134: * Command line tool
                    135: * Web based source code browsing and maybe riffing (in the style of e.g. trac)
                    136: * Availability on different platforms (pkgsrc is not NetBSD only)
                    137: 
1.1       mspo      138: """
                    139: ]]

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb