<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902"
     docName="draft-ietf-git-github-wg-configuration-07" number="8875"
     obsoletes="" updates="" submissionType="IETF" category="info"
     consensus="true" xml:lang="en" tocInclude="true" sortRefs="true"
     symRefs="true" version="3">

<!-- xml2rfc v2v3 conversion 2.44.0 -->

  <front>
    <title abbrev="WG GitHub Admin">Working Group GitHub Administration</title>
    <seriesInfo name="RFC" value="8875"/>
    <author initials="A." surname="Cooper" fullname="Alissa Cooper">
      <organization>Cisco</organization>
      <address>
        <email>alcoop@cisco.com</email>
      </address>
    </author>
    <author initials="P." surname="Hoffman" fullname="Paul Hoffman">
      <organization>ICANN</organization>
      <address>
        <email>paul.hoffman@icann.org</email>
      </address>
    </author>
    <date month="August" year="2020" />
    <area>General</area>
    <workgroup>GIT Working Group</workgroup>

<!-- [rfced] Please insert any keywords (beyond those that appear in the
title) for use on https://www.rfc-editor.org/search. --> 

<keyword>example</keyword>

    <abstract>
      <t>The use of GitHub in IETF working group processes is increasing.
This document describes uses and conventions for working
groups that are considering starting to use GitHub. It does not
mandate any processes and does not require changes to the processes
used by current and future working groups not using GitHub.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>Many IETF working groups and participants make use of GitHub in different ways as part of
their work on IETF documents. Some others are interested in having their working groups
use GitHub to facilitate the development of working group documents, but they are
unfamiliar with how to get started or unclear about which conventions to follow.
Some other working groups use or plan to use other code-repository services
such as GitLab and Bitbucket, which have
different properties than GitHub.</t>
      <t>This document specifies a set of administrative processes and conventions for IETF working
groups to use if they choose as a working group to use GitHub to facilitate their work. The specifications in this document are not directed at working groups or individuals that are
already using GitHub to do IETF work. Practices vary among existing working groups, and
some of them are not consistent with the conventions proposed here: that is fine. The goal
of the specifications in this document is not to require uniformity in current practice, but to
help working groups get started using GitHub in a reviewed and validated way, if desired.</t>
    </section>
    <section anchor="administrative-process-and-conventions" numbered="true" toc="default">
      <name>Administrative Process and Conventions</name>
      <t>This section specifies an administrative process and conventions to support
the creation and management of GitHub organizations for working groups and single-document
repositories in a uniform way. The steps may be done manually by the IETF Secretariat, or
they may be automated. See
&lt;<eref target="https://github.com/richsalz/ietf-gh-scripts"/>&gt; and
&lt;<eref target="https://github.com/martinthomson/i-d-template"/>&gt; for working examples of automation
that is in use in some working groups.</t>
      <t>In this document the question of whether processes should be manual or automated is
deliberately left unspecified, since these are implementation details that the IETF Secretariat and Tools Team will address.</t>
      <t>Most of the conventions below are drawn from <xref
      target="RFC8874" format="default"/>.</t>
      <section anchor="creation" numbered="true" toc="default">
        <name>Creation of GitHub Organizations</name>
        <t>This document specifies that there be a facility in the IETF Datatracker
(&lt;<eref target="https://datatracker.ietf.org/"/>&gt;) interface to allow an area director (AD) or
working group chair to request the creation of a GitHub organization for a
particular working
group. Ideally, this facility would appear both as part of the working group
chartering UI and the working group page UI.</t>
        <t>When an area director or working group chair makes a request to create a GitHub
organization, the following process would be initiated:</t>
        <ol spacing="normal" type="1">
          <li>Create a GitHub organization for the working group.</li>
          <li>Name the organization in the format ietf-wg-&lt;wgname&gt;...</li>
          <li anchor="S3">Initialize the organization by designating the IETF Secretariat and the area directors
in the working group's area as owners. If the responsible AD for the working group is from
another area, that AD will be an owner as well.</li>
          <li anchor="S4">Initialize the organization with a team that has administrator access. This team will
consist of the working group chairs and working group secretary, if one exists.</li>
        </ol>
        <t>After the organization is created, the URL for the organization would be added to the
working group's page in the Datatracker.</t>
        <t>Steps <xref target="S3" format="counter"/> and <xref target="S4" format="counter"/> above imply that the GitHub identities of the organization owners and
administrators are known. Recording GitHub identities in the Datatracker (see
&lt;<eref target="https://trac.tools.ietf.org/tools/ietfdb/ticket/2548"/>&gt;) would facilitate this. The
person requesting the organization would need to be notified if the GitHub identities of
any of the people meant to be owners or administrators were not available.</t>
      </section>
      <section anchor="migration-of-an-existing-organization" numbered="true" toc="default">
        <name>Migration of an Existing Organization</name>
        <t>If a working group already has an organization, it would be useful to be able
to make it have the same management as one would get by going through the
steps in <xref target="creation" format="default"/>. That is, it would be good
to be able to run Steps <xref target="S3" format="counter"/> and <xref target="S4" format="counter"/> from <xref target="creation"
format="default"/> so that the rest of the activities in this section, such as
personnel changes, work the same way as for organizations that were created as
specified herein.</t>
      </section>
      <section anchor="personnel-changes" numbered="true" toc="default">
        <name>Personnel Changes</name>
        <t>When there are personnel changes in the area or the working group, those changes would be
reflected in the GitHub organization.
There should be an ability in the Datatracker to specify that personnel
	changes have occurred.</t>
      </section>
      <section anchor="working-group-closing" numbered="true" toc="default">
        <name>Working Group Closing</name>
        <t>When a working group is closed, the team with administrative access would be removed, and
the owner list would be returned to the Secretariat and current ADs at the time of closing.
The organization summary and the repositories within the organization would be updated to
indicate that they are no longer under development.
Later, the owner list could become just the Secretariat, or it might include others
chosen by the Secretariat or the IESG.</t>
      </section>
      <section anchor="repo_create" numbered="true" toc="default">
        <name>Creation of Document Repository</name>
        <t>There are many different scenarios and configurations where it might be useful to have
automation or established administrative conventions for repositories within WG
organizations, such as:</t>
        <ul spacing="normal">
          <li>Creating a new repository for an individual draft (at the discretion of the WG chair);</li>
          <li>Creating a new repository for an already adopted working group draft;</li>
          <li>Migrating an existing document repository into the WG organization; and</li>
          <li>Creating a new repository that contains multiple drafts.</li>
        </ul>
        <t>As an incremental step, this document specifies that there be a facility in the Datatracker
interface to allow an administrator of an ietf-wg-&lt;wgname&gt; organization to request
the creation of a new repository within that organization for a single document. The
document authors would be identified as collaborators. The repository name would be the
draft name. Ideally, the repository would be configured with a skeleton draft file,
default CONTRIBUTING, LICENSE, and README files, and continuous integration support, in
the vein of &lt;<eref target="https://github.com/martinthomson/i-d-template"/>&gt;.
Performing this step would automatically inform the IETF Secretariat that this repository should
be backed up as described in <xref target="backup" format="default"/>.</t>
      </section>
      <section anchor="listing-related-repositories" numbered="true" toc="default">
        <name>Listing Related Repositories</name>
        <t>The IETF Datatracker should allow users to add links to repositories (for GitHub and
other repository services) on working group, document, and user pages.
At the time of this writing, this feature was under development.</t>
      </section>
    </section>
    <section anchor="working-group-process" numbered="true" toc="default">
      <name>Working Group Process</name>
      <t><xref target="RFC8874" format="default"/> contains discussion of the different possible ways that a
working group can use GitHub and the large number of decisions associated with doing so.
This section specifies a basic set of administrative policies for working groups to follow
and the administrative support needed to carry out those policies.</t>
      <section anchor="contributions" numbered="true" toc="default">
        <name>Contributions</name>
        <t>At a minimum, every repository created in a working group organization needs to
incorporate into its CONTRIBUTING file the boilerplate text at
&lt;https://trustee.ietf.org/license-for-open-source-repositories.html&gt; from the IETF
license file for open-source repositories. The CONTRIBUTING file can contain other
information as well (see
&lt;https://github.com/ietf/repo-files/tree/master/contributing-samples&gt; for examples).</t>
        <t>It would be useful if the user data in the Datatracker could list (at a minimum) the
GitHub account of the user so that their contributions could be tracked more easily.</t>
        <t>Some working groups choose to have more than one draft in a repository, particularly
for drafts that are tightly linked with significant cross-references.
In such a case, the README for the repository needs to say so clearly, so that
a participant understands that changes might be made to multiple drafts at once.</t>
      </section>
      <section anchor="backup" numbered="true" toc="default">
        <name>Backing Up and Archiving GitHub Content</name>
        <t>IETF working group mailing lists are automatically backed up by the IETF Secretariat, and
the archives are publicly available. All official interactions in a WG must be archived.</t>
        <t>Working group GitHub content also needs to be backed up and
	publicly archived. This document specifies using the Git protocol
<xref target="git-protocol" format="default"/> itself for both of these tasks.</t>
        <t>Every IETF working group repository on GitHub will have a mirror repository of the same
name on a server maintained by the IETF Secretariat. Every hour, a service will use the
"git fetch" command on every GitHub repository that is being tracked. The mirror
repository will allow anyone to read the repository.</t>
        <t>Note that this system will not back up GitHub issues or pull requests.
These should be backed up as well; the GitHub API allows for this.
The IETF Secretariat should back up those at the same time as it is backing up the GitHub
repositories.</t>
        <t>The steps in <xref target="repo_create" format="default"/> inform the IETF Secretariat which repositories should be backed up.
Working group chairs and area directors should also be able to request that the IETF
Secretariat back up additional repositories that are related to IETF working groups.</t>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>An attacker who can change the contents of Internet-Drafts, particularly late in a working
group's process, can possibly cause unnoticed changes in protocols that are eventually
adopted.</t>
      <t>There is a risk of data loss due to centralization of data in one service.
This is recognized and mitigated by the plan described in <xref target="backup" format="default"/>.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>

    <references>
      <name>Informative References</name>

      <reference anchor="git-protocol" target="https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols#The-Git-Protocol">
        <front>
          <title>Git on the Server - The Protocols</title>
          <author surname="Chacon" initials="S">
            <organization/>
          </author>
          <author surname="Straub" initials="B">
            <organization/>
          </author>
          <date>2014</date>
        </front>
	<seriesInfo name="in" value="Pro Git" />
      </reference>

   <reference anchor="RFC8874" target="https://www.rfc-editor.org/info/rfc8874">
     <front>
       <title>Working Group GitHub Usage Guidance</title>

       <author initials="M" surname="Thomson" fullname="M. Thomson">
         <organization />
       </author>
       <author initials="B" surname="Stark" fullname="B. Stark">
         <organization />
       </author>
       <date month="August" year="2020" />
     </front>
     <seriesInfo name="RFC" value="8874" />
     <seriesInfo name="DOI" value="10.17487/RFC8874"/>
   </reference>



    </references>
  </back>

</rfc>
