rfc8874xml2.original.xml | rfc8874.xml | |||
---|---|---|---|---|
<?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-using-github-06" number="8874" | ||||
submissionType="IETF" category="info" consensus="true" obsoletes="" | ||||
updates="" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" | ||||
version="3"> | ||||
<front> | ||||
<title abbrev="GitHub Usage Guidance">Working Group GitHub Usage Guidance</t | ||||
itle> | ||||
<seriesInfo name="RFC" value="8874"/> | ||||
<author initials="M." surname="Thomson" fullname="Martin Thomson"> | ||||
<organization>Mozilla</organization> | ||||
<address> | ||||
<email>mt@lowentropy.net</email> | ||||
</address> | ||||
</author> | ||||
<author initials="B." surname="Stark" fullname="Barbara Stark"> | ||||
<organization>AT&T</organization> | ||||
<address> | ||||
<email>barbara.stark@att.com</email> | ||||
</address> | ||||
</author> | ||||
<date month="August" year="2020"/> | ||||
<area>General</area> | ||||
<workgroup>Network</workgroup> | ||||
<keyword>git</keyword> | ||||
<keyword>version control</keyword> | ||||
<keyword>working group</keyword> | ||||
<keyword>document</keyword> | ||||
<keyword>editing</keyword> | ||||
<abstract> | ||||
<t>This document provides a set of guidelines for working groups that | ||||
choose to use GitHub for their work.</t> | ||||
</abstract> | ||||
</front> | ||||
<middle> | ||||
<section anchor="introduction" numbered="true" toc="default"> | ||||
<name>Introduction</name> | ||||
<t>The IETF has an open and transparent process for developing standards. | ||||
The use | ||||
of <eref target="https://github.com/">GitHub</eref> or similar tools, when used | ||||
as part of this process, | ||||
can have several objectives. GitHub provides tools that can be helpful in editi | ||||
ng documents. | ||||
Use of this service has been found to reduce the time that a working group needs | ||||
to produce documents and to improve the quality of the final result.</t> | ||||
<t>The use of version control improves the traceability and visibility | ||||
of changes. Issue tracking can be used to manage open issues and | ||||
provide a record of their resolution. Pull requests allow for better | ||||
engagement on technical and editorial changes, and encourage | ||||
contributions from a larger set of contributors. Using GitHub can also | ||||
broaden the community of contributors for a specification.</t> | ||||
<t>The main purpose of this document is to provide guidelines for how a | ||||
working group might integrate the capabilities provided by GitHub into | ||||
their processes for developing Internet-Drafts. Whether to use GitHub | ||||
and whether to adopt these practices is left to the discretion of the | ||||
working group.</t> | ||||
<t>This document is meant as a supplement to existing working group | ||||
practices. It provides guidance to working group chairs and | ||||
participants on how they can best use GitHub within the framework | ||||
established by RFC 2418 <xref target="RFC2418" format="default"/>. This | ||||
document aims to establish norms that reduce the variation in usage | ||||
patterns between different working groups and to help avoid issues that | ||||
have been encountered in the past.</t> | ||||
<t>A companion document, <xref target="RFC8875" format="default"/>, | ||||
describes administrative processes that support the practices described in this | ||||
document.</t> | ||||
<t>Although the operation of IRTF research groups can be similar in | ||||
function to working groups, this document only directly addresses the | ||||
needs of working groups. However, other groups may draw inspiration for | ||||
GitHub use from the contents herein.</t> | ||||
<section anchor="distributed-version-control-systems" numbered="true" toc= | ||||
"default"> | ||||
<name>Distributed Version Control Systems</name> | ||||
<t>Version control systems are a critical component of software | ||||
engineering and are also quite useful for document editing.</t> | ||||
<t><eref target="https://git-scm.com/">Git</eref> is a distributed | ||||
version control system that can operate without a central service. | ||||
Each instance of a repository contains a number of revisions. Each | ||||
revision stores the complete state of a set of files. Users are able | ||||
to create new revisions in their copy of a repository and share | ||||
revisions between copies of repositories.</t> | ||||
</section> | ||||
<section anchor="github" numbered="true" toc="default"> | ||||
<name>GitHub</name> | ||||
<t>GitHub is a service operated at <<eref | ||||
target="https://github.com/"/>>. GitHub provides centralized | ||||
storage for Git repositories. GitHub is freely accessible on the open | ||||
Internet.</t> | ||||
<t>GitHub provides a simplified and integrated interface to Git and | ||||
also provides basic user management, an issue tracker, associated | ||||
wikis, project hosting, and other features.</t> | ||||
<t>There are a large number of projects at GitHub and a very large | ||||
community of contributors. | ||||
One way in which some IETF working groups have benefited from use of the | ||||
service is through increased numbers of reviews of the document and associated | ||||
issues, along with other improvements that come from facilitating | ||||
participation by a broader community.</t> | ||||
</section> | ||||
<section anchor="other-services" numbered="true" toc="default"> | ||||
<name>Other Services</name> | ||||
<t>Git is not the only version control system available, nor is GitHub | ||||
the only possible choice for hosting. There are other services that | ||||
host revision control repositories and provide similar additional | ||||
features as GitHub. For instance, <eref | ||||
target="https://bitbucket.org/">BitBucket</eref> and <eref | ||||
target="https://about.gitlab.com/">GitLab</eref> provide similar | ||||
feature sets. In addition to a hosted service, software for custom | ||||
installations exists.</t> | ||||
<t>This document concentrates primarily on GitHub as it has a large | ||||
and active community of contributors. As a result, some content might | ||||
not be applicable to other similar services. A working group that | ||||
decides to adopt an alternative tool or service can still benefit from | ||||
the general guidance in this document.</t> | ||||
</section> | ||||
<section anchor="document-goals" numbered="true" toc="default"> | ||||
<name>Document Goals</name> | ||||
<t>This document aims to describe how a working group might best apply | ||||
GitHub to their work. The intent is to allow each working group | ||||
considerable flexibility in how they use GitHub.</t> | ||||
<t>This document requires that policies for use of GitHub are agreed | ||||
upon and clearly communicated within the working group (see <xref | ||||
target="policy" format="default"/>). The remainder of the document | ||||
contains guidelines and advice on how to construct a workable | ||||
policy.</t> | ||||
<t>The requirements here apply to the case where a working group | ||||
decides to use GitHub as a primary means of interaction. Individuals | ||||
can set their own policies when using GitHub for managing their own | ||||
drafts or for managing drafts that they edit on behalf of a working | ||||
group that has not explicitly adopted GitHub.</t> | ||||
<t>For both sets of users, this document aims to provide some amount | ||||
of advice on practices that have been effective.</t> | ||||
<t>This document only aims to address use of GitHub in developing | ||||
documents. A working group could choose to use the tool to aid in | ||||
managing their charter or session materials such as agendas, minutes, | ||||
and presentations. Though the advice here might apply more broadly, | ||||
using GitHub to manage other material is out of scope for this | ||||
document.</t> | ||||
</section> | ||||
<section anchor="notational-conventions" numbered="true" toc="default"> | ||||
<name>Notational Conventions</name> | ||||
<t> | ||||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
"<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | ||||
to be interpreted as described in BCP 14 <xref target="RFC2119"/> | ||||
<xref target="RFC8174"/> when, and only when, they appear in all capitals, | ||||
as shown here. | ||||
</t> | ||||
<t>This document uses a lot of terms related to Git and GitHub; see | ||||
<xref target="GLOSSARY" format="default"/> for information on these | ||||
terms.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="policy" numbered="true" toc="default"> | ||||
<name>Administrative Policies</name> | ||||
<t>The following administrative rules provide the necessary oversight | ||||
and transparency.</t> | ||||
<section anchor="organizations" numbered="true" toc="default"> | ||||
<name>Organizations</name> | ||||
<t>Organizations are a way of forming groups of contributors on | ||||
GitHub. The working group <bcp14>SHOULD</bcp14> create a new | ||||
organization for its work. A working group organization | ||||
<bcp14>SHOULD</bcp14> be named consistently so that it can be found. | ||||
For instance, the name could be ietf-wg-<wgname>, as recommended | ||||
in <xref target="RFC8875" | ||||
format="default"/>.</t> | ||||
<t>A single organization <bcp14>SHOULD NOT</bcp14> be used for all | ||||
IETF activity or all activity within an area. Large organizations | ||||
create too much overhead for general management tasks.</t> | ||||
<t>GitHub requires that each organization have at least one owner. | ||||
The owners for a working group repository <bcp14>MUST</bcp14> include | ||||
responsible area directors and the IETF Secretariat. Working group | ||||
chairs <bcp14>SHOULD</bcp14> also be included as owners. Area | ||||
directors <bcp14>MAY</bcp14> also designate a delegate that becomes an | ||||
owner, such as another area director from the same area. An | ||||
organization <bcp14>MUST</bcp14> have at least two owners.</t> | ||||
<t>Within an organization, members can be grouped into teams. A team | ||||
with "Admin" access to repositories <bcp14>SHOULD</bcp14> be created | ||||
for the working group chairs and any working group secretary.</t> | ||||
<t>Details about creating organizations adhering to these guidelines can | ||||
be found | ||||
in <xref target="RFC8875" format="default"/>.</t> | ||||
</section> | ||||
<section anchor="notices" numbered="true" toc="default"> | ||||
<name>Communicating Policies</name> | ||||
<t>Each working group <bcp14>MAY</bcp14> set its own policy as to | ||||
whether and how it uses GitHub. It is important that occasional | ||||
participants in the working group and others accustomed to IETF tools be | ||||
able to | ||||
determine this and easily find the policy and GitHub organization.</t> | ||||
<t>A simple example of how to do this is to include a link to the | ||||
GitHub organization on the working group charter page in the datatracker | ||||
. | ||||
Similarly, if there are additional resources, such as mailing lists, | ||||
links to those resources could also be added.</t> | ||||
<t>Repositories <bcp14>MUST</bcp14> include a copy of or reference to | ||||
the policy that applies to managing any documents they contain. | ||||
Updating the README or CONTRIBUTING file in the repository with | ||||
details of the process ensures that the process is recorded in a | ||||
stable location other than the mailing list archive. This also makes | ||||
working group policies available to casual contributors who might only | ||||
interact with the GitHub repository.</t> | ||||
<t>GitHub prominently links to the CONTRIBUTING file on certain pages. | ||||
This file <bcp14>SHOULD</bcp14> be used in preference to the README | ||||
for information that new contributors need. The README | ||||
<bcp14>SHOULD</bcp14> contain a link to the CONTRIBUTING file.</t> | ||||
<t>In addition to working group policies, notices on repositories | ||||
<bcp14>MUST</bcp14> include citations for the <eref | ||||
target="https://www.ietf.org/about/note-well/">IETF Note | ||||
Well</eref>.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="deciding-to-use-github" numbered="true" toc="default"> | ||||
<name>Deciding to Use GitHub</name> | ||||
<t>Working group chairs are responsible for determining how to best | ||||
accomplish the charter objectives in an open and transparent fashion. | ||||
The working group chairs are responsible for determining if there is | ||||
interest in using GitHub and for making a consensus call about whether | ||||
the proposed policy and use is acceptable.</t> | ||||
<t>Chairs <bcp14>SHOULD</bcp14> involve area directors in any decision | ||||
to use GitHub, especially where substantive discussion of issues is | ||||
permitted as described in <xref target="mode-discuss" | ||||
format="default"/>.</t> | ||||
<section anchor="usage" numbered="true" toc="default"> | ||||
<name>What to Use GitHub For</name> | ||||
<t>Working group chairs decide what GitHub features the working group | ||||
will rely upon. <xref target="features" format="default"/> contains a | ||||
more thorough discussion on the different features that can be | ||||
used.</t> | ||||
<t>Working group chairs who decide to use GitHub <bcp14>MUST</bcp14> | ||||
inform the working group of their decision on the working group | ||||
mailing list. An email detailing how the working group intends to use | ||||
GitHub is sufficient, though it might be helpful to occasionally | ||||
remind new contributors of these guidelines.</t> | ||||
<t>Working group chairs are responsible for ensuring that any policy | ||||
they adopt is enforced and maintained.</t> | ||||
<t>The set of GitHub features (<xref target="features" | ||||
format="default"/>) that the working group relies upon need to be | ||||
clearly documented in policies. This document provides some guidance | ||||
on potential policies and how those might be applied.</t> | ||||
<t>Features that the working group does not rely upon can be made | ||||
available to document editors. Editors are then able to use these | ||||
features for their own purposes. For example, though the working | ||||
group might not formally use issues to track items that require | ||||
further discussion in order to reach consensus, keeping the issue | ||||
tracker available to editors can be valuable.</t> | ||||
<t>Working group policies need to be set with the goal of improving | ||||
transparency, participation, and ultimately the quality of documents. | ||||
At times, it might be appropriate to impose some limitations on what | ||||
document editors are able to do in order to serve these goals. Chairs | ||||
are encouraged to periodically consult with document editors to ensure | ||||
that policies are effective.</t> | ||||
<t>A document editor can still use GitHub independently for documents | ||||
that they edit, even if the working group does not expressly choose to | ||||
use GitHub. Any such public repository <bcp14>MUST</bcp14> follow the | ||||
IETF Note Well and bear notices; see <xref target="notices" | ||||
format="default"/>. This recognizes that editors have traditionally | ||||
chosen their own methods for managing the documents they edit but | ||||
preserves the need for contributors to understand their obligations | ||||
with respect to IETF processes.</t> | ||||
<t>Work done in GitHub has no special status. The output of any | ||||
activity using GitHub needs to be taken to the working group and is | ||||
subject to approval, rejection, or modification by the working group | ||||
as with any other input.</t> | ||||
</section> | ||||
<section anchor="repositories" numbered="true" toc="default"> | ||||
<name>Repositories</name> | ||||
<t>New repositories can be created within the working group | ||||
organization at the discretion of the chairs. Chairs could decide to | ||||
only create new repositories for adopted working group items, or they | ||||
might create repositories for individual documents on request.</t> | ||||
<t>Maintaining private repositories for working group products is not | ||||
recommended without specific cause. For instance, a document that | ||||
details a security vulnerability might be kept private prior to its | ||||
initial publication as an Internet-Draft. Once an Internet-Draft is | ||||
published, repositories for working group documents | ||||
<bcp14>MUST</bcp14> be made public.</t> | ||||
<t>The adoption status of any document <bcp14>MUST</bcp14> be clear | ||||
from the contents of the repository. This can be achieved by having | ||||
the name of the document reflect status (that is, | ||||
draft-ietf-<wgname>-... indicates that the document was | ||||
adopted) or through a prominent notice (such as in the README).</t> | ||||
<t>Experience has shown that maintaining separate repositories for | ||||
independent documents is most manageable. This allows the work in | ||||
that repository to be focused on a single item.</t> | ||||
<t>Closely related documents, such as those that together address a | ||||
single milestone, might be placed in a single repository. This allows | ||||
editors to more easily manage changes and issues that affect multiple | ||||
documents.</t> | ||||
<t>Maintaining multiple documents in the same repository can add | ||||
overhead that negatively affects individual documents. For instance, | ||||
issues might require additional markings to identify the document that | ||||
they affect. Also, because editors all have write access to the | ||||
repository, managing the set of people with write access to a larger | ||||
repository is more difficult (<xref target="editors" | ||||
format="default"/>).</t> | ||||
</section> | ||||
<section anchor="editors" numbered="true" toc="default"> | ||||
<name>Editors and Contributors</name> | ||||
<t>Working group chairs <bcp14>MUST</bcp14> give document editors | ||||
write access to document repositories. This can be done by creating | ||||
teams with write access and allocating editors to those teams or by | ||||
making editors collaborators on the repository.</t> | ||||
<t>Working group chairs <bcp14>MAY</bcp14> also grant other | ||||
individuals write access for other reasons such as maintaining | ||||
supporting code or build configurations. Working group chairs, as | ||||
administrators or owners of the organization, might also have write | ||||
access to repositories. | ||||
Users other than document editors, including chairs, <bcp14>SHOULD NOT</bcp14> | ||||
make changes to working group documents without prior coordination with | ||||
document editors.</t> | ||||
<t>A working group <bcp14>MAY</bcp14> create a team for regular | ||||
contributors that is only given read access to a repository. This does | ||||
not confer additional privileges on these contributors; it instead | ||||
allows for issues and pull requests to be assigned to those people. | ||||
This can be used to manage the assignment of editorial or review tasks | ||||
to individuals outside of the editor team.</t> | ||||
</section> | ||||
<section anchor="document-formats" numbered="true" toc="default"> | ||||
<name>Document Formats</name> | ||||
<t>In addition to the canonical XML format <xref target="RFC7991" | ||||
format="default"/>, document editors might choose to use a different | ||||
input form for editing documents, such as Markdown. Markdown-based | ||||
formats are more accessible for new contributors, though ultimately, | ||||
decisions about format are left to document editors.</t> | ||||
<t>Formats that are not text-based <bcp14>SHOULD NOT</bcp14> be used, | ||||
as these are ill-disposed to the sorts of interaction that revision | ||||
control enables.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="features" numbered="true" toc="default"> | ||||
<name>Contribution Methods</name> | ||||
<t>Contributions to documents come in many forms. GitHub provides a | ||||
range of options in addition to email. Input on GitHub can take the | ||||
form of new issues and pull requests, comments on issues and pull | ||||
requests, and comments on commits.</t> | ||||
<section anchor="issue-tracker" numbered="true" toc="default"> | ||||
<name>Issue Tracker</name> | ||||
<t>The GitHub issue tracker can be an effective way of managing the | ||||
set of open issues on a document. Issues, both open and closed, can | ||||
be a useful way of recording decisions made by a working group.</t> | ||||
<t>Issues can be given arbitrary labels, assigned to contributors, and | ||||
assembled into milestones. The issue tracker is integrated into the | ||||
repository; an issue can be closed using a special marker in a commit | ||||
message.</t> | ||||
<t>When deciding to use GitHub, working group chairs | ||||
<bcp14>MUST</bcp14> decide how the GitHub issue tracker is used. Use | ||||
of the issue tracker could be limited to recording the existence of | ||||
issues, or it might be used as the venue for substantial technical | ||||
discussion between contributors.</t> | ||||
<t>A working group policy <bcp14>MAY</bcp14> require that all | ||||
substantive changes be tracked using issues. Suggested policies for | ||||
the use of the GitHub issue tracker are the primary subject of <xref | ||||
target="modes" format="default"/>.</t> | ||||
<section anchor="issue-labels" numbered="true" toc="default"> | ||||
<name>Issue Labels</name> | ||||
<t>A system of labeling issues can be effective in managing issues. | ||||
For instance, marking substantive issues separately from editorial | ||||
can be helpful at guiding discussion. Using labels can also be | ||||
helpful in identifying issues for which consensus has been achieved | ||||
but that require editors to integrate the changes into a | ||||
document.</t> | ||||
<t>Labels can be used to identify particular categories of issues or | ||||
to mark specific issues for discussion at an upcoming session.</t> | ||||
<t>Chairs communicate any process that specifically relates to the | ||||
use of labels to the working group. This includes the semantics of | ||||
labels, and who can apply and remove these labels. <xref | ||||
target="labels" format="default"/> describes some basic strategies | ||||
that might be adopted to manage decision-making processes.</t> | ||||
</section> | ||||
<section anchor="closing-issues" numbered="true" toc="default"> | ||||
<name>Closing Issues</name> | ||||
<t>Editors have write access to repositories, which also allows them | ||||
to close issues. The user that opens an issue is also able to close | ||||
the issue. Chairs <bcp14>MUST</bcp14> provide guidance on who is | ||||
permitted to close an issue and under what conditions.</t> | ||||
<t>Restrictions on who can close an issue and under what | ||||
circumstances are generally not advisable until a document has | ||||
reached a certain degree of maturity.</t> | ||||
</section> | ||||
<section anchor="reopening-issues" numbered="true" toc="default"> | ||||
<name>Reopening Issues</name> | ||||
<t>Issues that have reached a resolution that has working group | ||||
consensus <bcp14>MUST NOT</bcp14> be reopened unless new information | ||||
is presented.</t> | ||||
<t>For long-running work items, new contributors often raise issues | ||||
that have already been resolved. Moreover, there could be temptation | ||||
to reopen contentious issues resolved with rough | ||||
consensus. Determining whether arguments presented in favor of | ||||
reopening an issue represents new information might require some | ||||
discussion in the working group.</t> | ||||
<t>Chairs are empowered to exercise discretion in determining | ||||
whether or not to reopen issues. For more difficult matters, the chai | ||||
rs | ||||
<bcp14>MAY</bcp14> insist that the working group reach consensus on | ||||
whether an issue should be reopened. Note, however, that any product | ||||
of this process still needs to have the support of rough consensus | ||||
in the working group, which could justify reopening issues.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="pull-requests" numbered="true" toc="default"> | ||||
<name>Pull Requests</name> | ||||
<t>A pull request is a GitHub feature that allows a user to request a ch | ||||
ange to a | ||||
repository. A user does not need to have write access to a repository to create | ||||
a pull request. A user can create a "fork", or copy, of any public repository. | ||||
The user has write access to their own fork, allowing them to make local | ||||
changes. A pull request asks the owner of a repository to merge a specific set | ||||
of changes from a fork (or any branch) into their copy.</t> | ||||
<t>Editors are encouraged to make pull requests for all substantial | ||||
changes rather than committing directly to the "primary" branch of the | ||||
repository. See <xref target="mature-documents" format="default"/> for | ||||
discussion on what constitutes a substantial change. A pull request | ||||
creates an artifact that records the reasons for changes and provides | ||||
other contributors with an opportunity to review the change. Ideally, | ||||
pull requests that address substantive issues mention the issue they | ||||
address in the opening comment. A working group policy could require | ||||
that pull requests be used in this fashion.</t> | ||||
<aside><t>Note: This document assumes that there is a unified effort on a | ||||
document, all concentrated on a single Git branch. More advanced usage of Git | ||||
is not in the scope of this document.</t> | ||||
</aside> | ||||
<t>Pull requests have many of the same properties as issues, including | ||||
the ability to host discussion and bear labels. Critically, using | ||||
pull requests creates a record of actions taken.</t> | ||||
<t>For significant changes, leaving a pull request open until | ||||
discussion of the issue within the working group concludes allows the | ||||
pull request to track the discussion and properly capture the outcome | ||||
of discussions. Pull requests can be updated as discussions continue, | ||||
or in response to feedback.</t> | ||||
<t>Groups of editors could adopt a practice of having one editor | ||||
create a pull request and another merge it. This ensures that changes | ||||
are reviewed by editors. Editors are given discretion in how they | ||||
manage changes amongst themselves.</t> | ||||
<section anchor="discussion-on-pull-requests" numbered="true" toc="defau | ||||
lt"> | ||||
<name>Discussion on Pull Requests</name> | ||||
<t>In addition to the features that pull requests share with issues, | ||||
users can also review the changes in a pull request. This is a | ||||
valuable feature, but it presents some challenges.</t> | ||||
<t>Comments in a review other than a summary are attached to | ||||
specific lines of the proposed change. Such comments can be hard or | ||||
impossible to find if changes are subsequently made to the pull | ||||
request. This is problematic for contributors who do not track | ||||
discussions closely.</t> | ||||
<t>For this reason, working group chairs <bcp14>SHOULD</bcp14> | ||||
discourage the use of inline comments for substantial technical | ||||
discussion of issues.</t> | ||||
</section> | ||||
<section anchor="merging-pull-requests" numbered="true" toc="default"> | ||||
<name>Merging Pull Requests</name> | ||||
<t>A working group <bcp14>MUST</bcp14> determine who is permitted to | ||||
merge pull requests. Document editors <bcp14>SHOULD</bcp14> be | ||||
permitted to merge pull requests at their discretion. This requires | ||||
that editors exercise some judgment. Working group chairs | ||||
<bcp14>MAY</bcp14> occasionally identify a pull request and request | ||||
that editors withhold merging until working group consensus has been | ||||
assessed.</t> | ||||
<t>Note that the copy of a document that is maintained on GitHub | ||||
does not need to be a perfect reflection of working group consensus | ||||
at every point in time. Document editors need some flexibility in | ||||
how they manage a document.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="monitoring-activity" numbered="true" toc="default"> | ||||
<name>Monitoring Activity</name> | ||||
<t>GitHub produces individualized email notifications of activity that | ||||
each user can adjust to their preferences. In addition to these, some | ||||
working groups have created read-only mailing lists that receive | ||||
notifications about activity on working group repositories. The | ||||
volume of information on these lists can be too high to monitor | ||||
actively, but access to an archive of actions can be useful.</t> | ||||
<t>An alternative is to rely on periodic email summaries of activity, | ||||
such as those produced by a notification tool like <eref | ||||
target="https://github.com/dontcallmedom/github-notify-ml">github-notify | ||||
-ml</eref>. | ||||
This tool has been used effectively in several working groups, though | ||||
it requires server infrastructure.</t> | ||||
<t>Additionally, clear reporting about the changes that were included | ||||
in each revision of an Internet-Draft helps ensure that contributors | ||||
can follow activity. This might be achieved by requesting that | ||||
editors provide a change log that captures substantive changes to the | ||||
document in each revision.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="modes" numbered="true" toc="default"> | ||||
<name>Typical Working Group Policies</name> | ||||
<t>Current experience with use of GitHub suggests a few different | ||||
approaches to greater use of the tool in working groups.</t> | ||||
<t>This section describes some basic modes for interacting with GitHub, | ||||
each progressively more involved. This starts with a very lightweight | ||||
interaction where document management is the only feature that is | ||||
formally used; then, progressively more intensive use of the GitHub issue | ||||
tracking capabilities is described. These approaches differ primarily | ||||
in how discussion of substantive matters is managed. Most of the advice | ||||
in this document applies equally to all models.</t> | ||||
<t>Working groups can adjust these policies to suit their needs but | ||||
are advised to avoid gratuitous changes for the sake of consistency | ||||
across the IETF as a whole. It is possible to use different processes | ||||
for different documents in the working group.</t> | ||||
<t>Working group chairs are responsible for confirming that the working | ||||
group has consensus to adopt any process. In particular, the | ||||
introduction of a more tightly controlled process can have the effect of | ||||
privileging positions already captured in documents, which might | ||||
disadvantage alternative viewpoints.</t> | ||||
<section anchor="mode-doc" numbered="true" toc="default"> | ||||
<name>Document Management Mode</name> | ||||
<t>In this mode of interaction, GitHub repositories are used to manage | ||||
changes to documents, but the bulk of the work is conducted using | ||||
email, face-to-face meetings, and other more traditional interactions. | ||||
The intent of this policy is to enable document and issue management | ||||
using GitHub while minimizing the complexity of the process.</t> | ||||
<t>In the version of this mode with the least interaction with GitHub, | ||||
a repository is created for the purposes of document management by | ||||
editors. Editors might maintain issues and pull requests for their | ||||
own benefit, but these have no formal standing in the working group | ||||
process.</t> | ||||
</section> | ||||
<section anchor="mode-track" numbered="true" toc="default"> | ||||
<name>Issue Tracking Mode</name> | ||||
<t>In addition to managing documents, the working group might choose | ||||
to use GitHub for tracking outstanding issues. In this mode of | ||||
interaction, a record of the existence of substantive technical | ||||
discussions is tracked using issues in the issue tracker. However, | ||||
discussion of any substantial matters is always conducted on mailing | ||||
lists.</t> | ||||
<t>Under this mode, issues and pull requests can be opened by anyone, | ||||
but anything deemed substantive <bcp14>MUST</bcp14> be resolved | ||||
exclusively on the mailing list. Discussion on GitHub is limited to | ||||
recording the state of issues. Only editorial matters can be resolved | ||||
using the issue tracker.</t> | ||||
<t>Chairs and editors are given discretion in determining what issues | ||||
are substantive. As documents mature, it is generally prudent to | ||||
prefer consulting the mailing list where there is doubt. As with | ||||
other working group decisions, chairs are the arbiters in case of | ||||
dispute.</t> | ||||
<t>A recurrent problem with this mode of interaction is the tendency | ||||
for discussions to spontaneously develop in the issue tracker. This | ||||
requires a degree of discipline from chairs and editors to ensure that | ||||
any substantive matters are taken to the mailing list.</t> | ||||
<t>Retaining mailing lists as the primary venue for discussion of | ||||
substantive matters ensures that this mode, along with the document | ||||
management mode, is most compatible with existing work practices for | ||||
working groups. Participants in a working group that operates under | ||||
either model can reasonably be expected to receive all relevant | ||||
communication about the work of the group from the working group | ||||
mailing list.</t> | ||||
<t>Though the mailing list is used for making decisions, the issue | ||||
tracker can still be a useful record of the state of issues. It is | ||||
often useful if chairs or editors record details of decisions in issue | ||||
comments when closing issues as resolved.</t> | ||||
</section> | ||||
<section anchor="mode-discuss" numbered="true" toc="default"> | ||||
<name>Issue Discussion Mode</name> | ||||
<t>This GitHub interaction mode differs from the other modes in that | ||||
discussion relating to substantive technical matters is allowed to | ||||
occur on GitHub issues. Though decisions are always subject to | ||||
confirmation on the mailing list, participants are permitted to | ||||
conduct substantive discussions on the issue tracker. In some cases, | ||||
this can include making some decisions without involving the working | ||||
group mailing list.</t> | ||||
<t>A working group mailing list remains a critical venue for decision | ||||
making, even where issue discussion occurs elsewhere. Working group | ||||
mailing lists generally include a wider audience than those who follow | ||||
issue discussion, so difficult issues always benefit from list | ||||
discussion.</t> | ||||
<t>Decisions about working group consensus <bcp14>MUST</bcp14> always | ||||
be confirmed using the working group mailing list. However, depending | ||||
on the maturity of documents, this might be a more lightweight | ||||
interaction such as sending an email confirmation for an initial set | ||||
of resolutions arising from discussions on the issue tracker.</t> | ||||
<t>Using the mailing list to resolve difficult or controversial issues | ||||
is strongly encouraged. In those cases, the issue tracker might be | ||||
used to more fully develop an understanding of problems before | ||||
initiating a discussion on the mailing list, along lines similar to | ||||
the design team process (see <xref target="RFC2418" sectionFormat="of" | ||||
section="6.5"/>).</t> | ||||
<t>As a more involved process, adopting this mode can require changes in | ||||
policies | ||||
as documents become more mature.</t> | ||||
<section anchor="early-design-phases" numbered="true" toc="default"> | ||||
<name>Early Design Phases</name> | ||||
<t>During early phases of the design of a protocol, chairs | ||||
<bcp14>MAY</bcp14> allow editors to manage all aspects of issues. | ||||
Editors are permitted to make decisions about how to both identify | ||||
and resolve technical issues, including making any changes that | ||||
editors feel necessary.</t> | ||||
<t> | ||||
The primary reason to grant editors more discretionary power is to improve the | ||||
speed with which changes can be made. In many cases, documents that are | ||||
adopted by a working group are already sufficiently mature, and a looser | ||||
process is not beneficial. A looser process increases the risk of missing | ||||
issues that need working group consensus and integrating substantive changes | ||||
based on decisions that don't reflect the consensus of the working group. | ||||
</t> | ||||
<t>Changes made by editors under this process do not lack options | ||||
for identifying and correcting problems. GitHub and Git provide | ||||
tools for ensuring that changes are tracked and can be audited. | ||||
Within the usual working group process, it is expected that | ||||
Internet-Drafts will receive regular review. Also, process | ||||
checkpoints like Working Group Last Call (WGLC; <xref | ||||
target="RFC2418" sectionFormat="of" section="7.4"/>) provide | ||||
additional safeguards against abuse.</t> | ||||
<t>Working groups are advised against allowing editors this degree | ||||
of flexibility for the entirety of a document life cycle. Once a | ||||
document is more stable and mature, it could be useful to move to a | ||||
more tightly controlled process.</t> | ||||
</section> | ||||
<section anchor="mature-documents" numbered="true" toc="default"> | ||||
<name>Managing Mature Documents</name> | ||||
<t>As a document matures, it becomes more important to understand | ||||
not just that the document as a whole retains the support of the | ||||
working group, but that changes are not made without wider | ||||
consultation.</t> | ||||
<t>Chairs <bcp14>MAY</bcp14> choose to manage the process of | ||||
deciding which issues are substantive. For instance, chairs might | ||||
reserve the ability to use the <tt>design</tt> label for new issues | ||||
(see <xref target="label-design" format="default"/>) and to close | ||||
issues marked as <tt>design</tt>. Chairs <bcp14>SHOULD</bcp14> | ||||
always allow document editors to identify and address editorial | ||||
issues as they see fit.</t> | ||||
<t>As documents mature further, explicit confirmation of technical | ||||
decisions with the working group mailing list becomes more | ||||
important.</t> | ||||
<t>Chairs can declare working group consensus regarding the | ||||
resolution of issues in the abstract, allowing editors discretion on | ||||
how to capture the decisions in documents.</t> | ||||
<t>More mature documents require not only consensus, but consensus | ||||
about specific text. Ideally, substantive changes to documents that | ||||
have passed WGLC are proposed as pull requests and | ||||
<bcp14>MUST</bcp14> be discussed on the mailing list. Having chairs | ||||
explicitly confirm consensus on changes ensures that previous | ||||
consensus decisions are not overturned without cause. Chairs | ||||
<bcp14>MAY</bcp14> institute this stricter process prior to | ||||
WGLC.</t> | ||||
<aside><t>Note: It is generally sufficient to trust editors to | ||||
manage adherence with these policies, aided by the transparency | ||||
provided by the version control system. There are tools that can be | ||||
used to more tightly control access to repositories, but they can be | ||||
overly constraining.</t> | ||||
</aside> | ||||
</section> | ||||
</section> | ||||
<section anchor="labels" numbered="true" toc="default"> | ||||
<name>Issue Labeling Schemes</name> | ||||
<t>Several schemes for use of issue labels in managing issues have | ||||
been used successfully. This section outlines these strategies and | ||||
how they might be applied.</t> | ||||
<t>A design/editorial split (see <xref target="label-design" | ||||
format="default"/>) is useful in all cases in which the issue tracking | ||||
capability is used. A working group that only uses GitHub for issue | ||||
tracking might find that distinction sufficient for their needs.</t> | ||||
<t>Working groups or editors might use additional labels as they | ||||
choose. Any label that is used as part of a process requires that the | ||||
process be documented and announced by working group chairs. Editors | ||||
<bcp14>SHOULD</bcp14> be permitted to use labels to manage issues | ||||
without any formal process significance being attached to those | ||||
issues.</t> | ||||
<section anchor="label-design" numbered="true" toc="default"> | ||||
<name>Editorial/Design Labeling</name> | ||||
<t>The most important distinction about an issue is whether it is | ||||
substantive. The labels of <tt>editorial</tt> and <tt>design</tt> | ||||
are used to represent this distinction.</t> | ||||
<t>An issue labeled as <tt>editorial</tt> has no substantive effect | ||||
on a document except to the extent that addressing the issue might | ||||
make understanding the specification easier. Resolution of | ||||
<tt>editorial</tt> issues can be left to the discretion of | ||||
editors.</t> | ||||
<t>An issue labeled as <tt>design</tt> has or might have a | ||||
substantive effect on a document. For protocol specifications, a | ||||
<tt>design</tt> issue is one that might affect implementations or | ||||
interoperability requirements. Addressing a <tt>design</tt> issue | ||||
ultimately requires working group consensus, even if the resolution | ||||
is to make no change.</t> | ||||
<t>This distinction can be applied to all types of documents. For | ||||
instance, a <tt>design</tt> issue for an Informational document | ||||
might be raised to discuss possible changes to important concepts in | ||||
the document.</t> | ||||
</section> | ||||
<section anchor="label-decision" numbered="true" toc="default"> | ||||
<name>Decision Labeling</name> | ||||
<t>Labels can be used to manage processes. As documents mature and | ||||
issues become more numerous, labels can be used to clearly mark the | ||||
status of issues. In particular, the labeling of issues can be used t | ||||
o | ||||
help manage working group decisions.</t> | ||||
<t>For documents that are less mature, issues with resolutions but | ||||
no specific proposals for changes to text might be marked | ||||
<tt>editor-ready</tt> as a way of signaling that there is consensus | ||||
on an approach, but no specific proposal. Chairs might use this to | ||||
signal that discussion is complete and that editors are to be given | ||||
discretion in the construction of text.</t> | ||||
<t>In contrast, if specific text is a prerequisite for resolving | ||||
issues, as might be the case for more mature documents, a | ||||
<tt>proposal-ready</tt> label might be used by editors to mark | ||||
issues that they believe to have acceptable resolutions.</t> | ||||
<t>For resolved issues, a <tt>has-consensus</tt> label might be used b | ||||
y chairs to mark | ||||
issues for which formal working group decisions have been made (<xref | ||||
target="RFC2418" sectionFormat="of" section="6.1"/>).</t> | ||||
<t>A <tt>future</tt> or <tt>next-version</tt> label might be used to | ||||
mark and thereby save issues for a future version of, or extension to, | ||||
a protocol, particularly where a resolution is made to take no | ||||
action.</t> | ||||
</section> | ||||
<section anchor="component-labelling" numbered="true" toc="default"> | ||||
<name>Component Labeling</name> | ||||
<t>Repositories with multiple interrelated documents or a complex docu | ||||
ment with | ||||
multiple logical components might benefit from labels that identify different | ||||
aspects of the work. The choice of appropriate labels for components will | ||||
depend on the structure of specific documents.</t> | ||||
</section> | ||||
<section anchor="other-labels" numbered="true" toc="default"> | ||||
<name>Other Labels</name> | ||||
<t>Other labels can be used depending on the needs of editors and | ||||
working group processes. For example,</t> | ||||
<ul spacing="normal"> | ||||
<li>An <tt>invalid</tt> label might be used for issues that were rai | ||||
sed in error.</li> | ||||
<li>A <tt>blocked</tt> label might indicate an issue is awaiting | ||||
resolution of an external process or related issue.</li> | ||||
<li>A <tt>parked</tt> label might be used to indicate issues that | ||||
do not require immediate working group attention.</li> | ||||
</ul> | ||||
</section> | ||||
</section> | ||||
</section> | ||||
<section anchor="internet-draft-publication" numbered="true" toc="default"> | ||||
<name>Internet-Draft Publication</name> | ||||
<t>During the development of a document, individual revisions of the | ||||
document can be built and formally submitted as an Internet-Draft. This | ||||
creates a stable snapshot and makes the content of the in-progress | ||||
document available to a wider audience. Documents submitted as | ||||
Internet-Drafts are not expected to address all open issues or merge | ||||
outstanding pull requests.</t> | ||||
<t><xref target="RFC2418" sectionFormat="of" section="7.1"/> recommends | ||||
that editors create a new Internet-Draft submission two weeks prior to | ||||
every session, which includes IETF meetings, other in-person meetings, | ||||
and telephone or video conferences. Though discussion could use the | ||||
current version of a document from version control, participants in a | ||||
session cannot be expected to monitor changes to documents in real time; | ||||
a published Internet-Draft ensures that there is a common, stable state | ||||
that is known to all participants.</t> | ||||
<t>Internet-Drafts that use a GitHub repository <bcp14>SHOULD</bcp14> | ||||
include a notice that includes a reference to the repository. This | ||||
notice might also include information about where to discuss the | ||||
draft.</t> | ||||
<t>Revisions used to generate documents that are submitted as | ||||
Internet-Drafts <bcp14>SHOULD</bcp14> be tagged in repositories to | ||||
provide a record of submissions.</t> | ||||
<t>Working group chairs <bcp14>MAY</bcp14> request a revision of an | ||||
Internet-Draft being managed on GitHub at any time, in consultation with | ||||
document editors.</t> | ||||
</section> | ||||
<section anchor="assessing-consensus" numbered="true" toc="default"> | ||||
<name>Assessing Consensus</name> | ||||
<t>The work that occurs on GitHub could be part of the consensus | ||||
process, but the ultimate decision on consensus regarding a document is | ||||
made by the chairs <xref target="RFC2026" format="default"/>.</t> | ||||
<t>GitHub facilitates more involved interactions, which can result in a | ||||
much higher level of activity than a typical working group mailing list. | ||||
Participants who wish to limit their time commitment might follow GitHub | ||||
activity selectively, either by following only specific issues or by | ||||
occasionally reviewing the state of the document. Other participants | ||||
might not use GitHub at all. Chairs are reminded that assessing | ||||
consensus based on GitHub content alone cannot be assumed to reach all | ||||
interested participants.</t> | ||||
<t>As described in <xref target="RFC2418" format="default"/>, chairs | ||||
consider input from all discussion venues when assessing | ||||
consensus. These include mailing lists, IETF meetings, and interim | ||||
meetings in addition to discussion on GitHub. Each venue has different | ||||
selection biases that might need to be considered.</t> | ||||
<t>A working group chair <bcp14>MUST</bcp14> consult the working group | ||||
mailing list for any issue that is potentially contentious. Relying on | ||||
input provided through GitHub alone might result in gaining input from a | ||||
narrower set of participants. This includes important milestones like | ||||
Working Group Last Call, where review from the widest possible audience | ||||
ensures a higher quality document.</t> | ||||
<t>If permitted, GitHub will be used for technical discussion and | ||||
decisions, especially during early stages of development of a document. | ||||
Any decisions are confirmed through review within the working group and, | ||||
ultimately, through Working Group Last Call; see <xref target="RFC2418" | ||||
sectionFormat="of" section="7.4"/>.</t> | ||||
<t>The use of issues and labels has been effective in managing | ||||
contentious issues. Explicitly labeling closed issues to identify those | ||||
with formal consensus means that there is no confusion about the status | ||||
of issues.</t> | ||||
</section> | ||||
<section anchor="continuous-integration" numbered="true" toc="default"> | ||||
<name>Continuous Integration</name> | ||||
<t>Various third-party services offer the ability to run tests and other | ||||
work when changes are made to a repository.</t> | ||||
<t>One common practice is to use these continuous integration services | ||||
to build a text or HTML version of a document. This is then published | ||||
to GitHub Pages, which allows users to view a version of the most recent | ||||
revision of a document. Including a prominent link to this version of | ||||
the document (such as in the README) makes it easier for new | ||||
contributors to find a readable copy of the most recent version of a | ||||
draft. In addition, including links to differences between this | ||||
generated version and any published document helps contributors identify | ||||
recent changes.</t> | ||||
<t>Continuous integration can also validate pull requests and other | ||||
changes for errors. The most basic check is whether the source | ||||
file can be transformed successfully into a valid Internet-Draft. For | ||||
example, this might include checking that the XML source is syntactically | ||||
correct.</t> | ||||
<t>For a document that uses formal languages as part of the | ||||
specification, such as schema or source code, a continuous integration | ||||
system might also be used to validate any formal language that the | ||||
document contains. Tests for any source code that the document contains | ||||
might be run, or examples might be checked for correctness.</t> | ||||
</section> | ||||
<section anchor="advice-to-editors" numbered="true" toc="default"> | ||||
<name>Advice to Editors</name> | ||||
<t>Document editors are primarily responsible for maintaining documents. | ||||
Taking on | ||||
a few additional tasks can greatly improve the process for the working group.</t | ||||
> | ||||
<t>Using GitHub means that it is more likely that a contribution is made b | ||||
y users | ||||
who are not very familiar with the work. Pull requests from new contributors ca | ||||
n | ||||
contain errors or omissions. Duplicate issues are commonplace. Proposed | ||||
changes might have grammatical errors or they might diverge from existing style. | ||||
If a change is generally sound, rather than rejecting the pull request or | ||||
requesting changes, editors could instead accept the change and then make any | ||||
necessary corrections.</t> | ||||
<t>Editors <bcp14>SHOULD NOT</bcp14> close a pull request or issue without | ||||
first understanding why | ||||
the item was created. Editors and chairs <bcp14>SHOULD</bcp14> try to explain e | ||||
very action | ||||
clearly and concisely. Even if a contributor seems rude, being courteous in res | ||||
ponse is | ||||
always best.</t> | ||||
<t>If a contributor makes a comment that raises a new issue, editors can | ||||
create an issue or, if there is an obvious solution, a pull request. | ||||
It does not matter what venue the issue was raised in (e.g., email, | ||||
issue discussion, a pull request review); capturing issues quickly | ||||
ensures that problems become visible and can be tracked.</t> | ||||
<t>This takes a little more effort, but these simple steps can help encour | ||||
age | ||||
contributions, which will ultimately improve the quality of documents.</t> | ||||
</section> | ||||
<section anchor="security-considerations" numbered="true" toc="default"> | ||||
<name>Security Considerations</name> | ||||
<t>Continuity of operations is always a consideration when taking a | ||||
dependency on an external service. If GitHub were to fail in some way, | ||||
anyone relying upon its services would be seriously affected.</t> | ||||
<t>Widespread use of Git reduces the exposure to a system failure because | ||||
the | ||||
primary repository is replicated in multiple locations. This includes hosted | ||||
web pages; the content of web pages is maintained as a branch in the main | ||||
repository.</t> | ||||
<t>However, other information maintained on GitHub is more vulnerable to | ||||
loss. This includes issues and discussion on those issues, discussion | ||||
and reviews of commits and pull requests, and any content hosted on the | ||||
wiki. Tools exist for extracting this information for backup.</t> | ||||
<t>As specified in <xref target="RFC8875" | ||||
format="default"/>, backup copies of repositories and other important | ||||
data <bcp14>SHOULD</bcp14> be maintained.</t> | ||||
<t>The potential for malicious actions by compromised or malcontent | ||||
editors, chairs, and area directors is relevant in maintaining the | ||||
integrity of the content that GitHub hosts. Backups allow for recovery | ||||
of content, and regular submissions as Internet-Drafts ensure that work | ||||
is not lost completely.</t> | ||||
<t>A compromise of GitHub does not pose a significant threat to | ||||
working group operations as it is expected that most data, aside from | ||||
individual credentials, is made public.</t> | ||||
<t>A compromise of credentials could mean loss of control for | ||||
repositories an organizations. All contributors, especially those with | ||||
commit or admin privileges <bcp14>SHOULD</bcp14> use current best | ||||
practices for protection of credentials, such as multi-factor | ||||
authentication.</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>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2418 | ||||
.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119 | ||||
.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174 | ||||
.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2026 | ||||
.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<reference anchor="GLOSSARY" | ||||
target="https://help.github.com/en/github/getting-started-wit | ||||
h-github/github-glossary"> | ||||
<front> | ||||
<title>GitHub glossary</title> | ||||
<author> | ||||
<organization>GitHub</organization> | ||||
</author> | ||||
<date year="2020" month="March"/> | ||||
</front> | ||||
</reference> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7991 | ||||
.xml"/> | ||||
<reference anchor="RFC8875" target="https://www.rfc-editor.org/info/rfc8875"> | ||||
<front> | ||||
<title>Working Group GitHub Administration</title> | ||||
<author initials="A." surname="Cooper" fullname="A. Cooper"> | ||||
<organization /> | ||||
</author> | ||||
<author initials="P." surname="Hoffman" fullname="P. Hoffman"> | ||||
<organization /> | ||||
</author> | ||||
<date month="August" year="2020" /> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8875" /> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8875"/> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section numbered="false" anchor="acknowledgments" toc="default"> | ||||
<name>Acknowledgments</name> | ||||
<t>This work would not have been possible without the hard work of those | ||||
people who have trialed the use of GitHub at the IETF. <contact | ||||
fullname="Alia Atlas"/> contributed significant text to an earlier | ||||
draft version of this document. <contact fullname="Tommy Pauly"/>, <conta | ||||
ct | ||||
fullname="Rich Salz"/>, and <contact fullname="Christopher Wood"/> all | ||||
provided significant input.</t> | ||||
</section> | ||||
</back> | ||||
</rfc> | ||||
End of changes. 1 change blocks. | ||||
lines changed or deleted | lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |