Pass the committer's guide through igor.

Most of those were fixed.

- "(s)" used 5 times Please do not form plurals this way. It is a
  holdover from lazy programming practices, is difficult to read, and
  almost always unnecessary. A plural formed with a plain "s" is usually
  correct when speaking about numbers of one or more.
- "in order to" used 6 times Unless "in order to" has some special
  meaning here, "to" is simpler.
- "i.e." used 1 time "I.e." (Latin "id est") means "that is" and is
  mostly used in academic and scientific writing. Consider replacing
  with the more common English words. Both forms are usually followed by
  a comma for a verbal pause: "i.e., a b c" or "that is, a b c"
- "e.g." used 1 time "E.g." (Latin "exempli gratia") means "for example"
  and is mostly used in academic and scientific writing. Consider
  replacing with the more common English words. Both forms are usually
  followed by a comma for a verbal pause: "e.g., a b c" or "for example,
  a b c"
- "simply" used 3 times Use "simply" to mean "in a simple manner",
  "just", or "merely", not the patronizing "details omitted because they
  are not simple enough for you". "basically" used 2 times Use
  "basically" to mean "essentially" or "fundamentally", not "only the
  basics are shown because anything more will be too complicated for
  you".
- "the following" used 18 times "as follows" used 3 times If something
  is following, the reader can see it without being told.
- "should" used 83 times Use "should" sparingly, it is feeble and
  suggests unsureness. Attempt to be imperative: "do this" rather than
  "you should do this".
- "you" used 176 times "your" used 84 times "You" and "your" are
  informal and subjective. Attempt to be formal and objective: "the
  file" rather than "your file".

Reviewed by:    wblock
Sponsored by:   Absolight
Differential Revision:  https://reviews.freebsd.org/D7531
This commit is contained in:
Mathieu Arnold 2017-05-31 12:04:37 +00:00
parent e288742ff2
commit fc5ccafc7a
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=50299

View file

@ -312,7 +312,7 @@ You need a Passphrase to protect your secret key.</screen>
</step>
</procedure>
<para>Protect your private key and passphrase. If either the
<para>Protect the private key and passphrase. If either the
private key or passphrase may have been compromised or
disclosed, immediately notify
<email>accounts@FreeBSD.org</email> and revoke the key.</para>
@ -361,12 +361,12 @@ You need a Passphrase to protect your secret key.</screen>
<screen>&prompt.user; <userinput>kpasswd</userinput></screen>
<note>
<para>Unless you have used the Kerberos-authenticated services
of the &os;.org cluster previously,
<para>Unless the Kerberos-authenticated services
of the &os;.org cluster was used previously,
<errorname>Client unknown</errorname> will be shown. This
error means that the
<command>ssh kpasswd.freebsd.org</command> method shown above
must be used first to initialize your Kerberos account.</para>
must be used first to initialize the Kerberos account.</para>
</note>
</sect1>
@ -479,7 +479,7 @@ You need a Passphrase to protect your secret key.</screen>
<sect1 xml:id="subversion-primer">
<title>Subversion Primer</title>
<para>It is assumed that you are already familiar with the basic
<para>New committers are assumed to already be familiar with the basic
operation of Subversion. If not, start by reading the
<link xlink:href="http://svnbook.red-bean.com/">Subversion
Book</link>.</para>
@ -558,11 +558,11 @@ You need a Passphrase to protect your secret key.</screen>
is the path to the repository, and <literal>head</literal>
is the subdirectory within the repository.</para>
<para>If your &os; login name is different from your login
name on your local machine, you must either include it in
<para>If your &os; login name is different from the login
name used on the local machine, either include it in
the <acronym>URL</acronym> (for example
<literal>svn+ssh://jarjar@repo.freebsd.org/base/head</literal>),
or add an entry to your <filename>~/.ssh/config</filename>
or add an entry to <filename>~/.ssh/config</filename>
in the form:</para>
<programlisting>Host repo.freebsd.org
@ -754,7 +754,7 @@ You need a Passphrase to protect your secret key.</screen>
<title>Help</title>
<para><acronym>SVN</acronym> has built in help documentation.
It can be accessed by typing the following command:</para>
It can be accessed by typing:</para>
<screen>&prompt.user; <userinput>svn help</userinput></screen>
@ -832,8 +832,7 @@ You need a Passphrase to protect your secret key.</screen>
<para>It is possible to anonymously check out the &os;
repository with Subversion. This will give access to a
read-only tree that can be updated, but not committed back
to the main repository. To do this, use the following
command:</para>
to the main repository. To do this, use:</para>
<screen>&prompt.user; <userinput>svn co https://svn.FreeBSD.org/base/head /usr/src</userinput></screen>
@ -886,7 +885,7 @@ You need a Passphrase to protect your secret key.</screen>
<screen>&prompt.user; <userinput>svn commit <replaceable>lib/libfetch</replaceable> <replaceable>usr/bin/fetch</replaceable></userinput></screen>
<para>There is also a commit wrapper for the ports tree to
handle the properties and sanity checking your
handle the properties and sanity checking the
changes:</para>
<screen>&prompt.user; <userinput>/usr/ports/Tools/scripts/psvn commit</userinput></screen>
@ -1003,7 +1002,7 @@ You need a Passphrase to protect your secret key.</screen>
<screen>&prompt.user; <userinput>svn diff -r179453:179454 ROADMAP.txt</userinput></screen>
<para>It can also show all changes for a specific changeset.
The following will show what changes were made to the
This command shows what changes were made to the
current directory and all subdirectories in changeset
179454:</para>
@ -1026,8 +1025,7 @@ You need a Passphrase to protect your secret key.</screen>
conflict, Subversion will remember which files have
conflicts and refuse to commit any changes to those files
until explicitly told that the conflicts have been resolved.
The simple, not yet deprecated procedure is the
following:</para>
The simple, not yet deprecated procedure is:</para>
<screen>&prompt.user; <userinput>svn resolved <replaceable>foo</replaceable></userinput></screen>
@ -1123,7 +1121,7 @@ You need a Passphrase to protect your secret key.</screen>
<replaceable>~/freebsd</replaceable> with
<filename>ROADMAP.txt</filename> and empty subdirectories,
and nothing will happen when <command>svn update</command>
is executed on the subdirectories. However, the following
is executed on the subdirectories. However, this
command will set the depth for
<replaceable>head</replaceable> (in this case) to infinity,
and fully populate it:</para>
@ -1165,12 +1163,12 @@ You need a Passphrase to protect your secret key.</screen>
</listitem>
</itemizedlist>
<para>Branching is very fast. The following command would be
<para>Branching is very fast. This command would be
used to branch <literal>RELENG_8</literal>:</para>
<screen>&prompt.user; <userinput>svn copy svn+ssh://repo.freebsd.org/base/head svn+ssh://repo.freebsd.org/base/stable/8</userinput></screen>
<para>This is equivalent to the following set of commands
<para>This is equivalent to this set of commands
which take minutes and hours as opposed to seconds,
depending on your network connection:</para>
@ -1215,7 +1213,7 @@ You need a Passphrase to protect your secret key.</screen>
Instead, mergeinfo is explicitly propagated down the tree.
For merging something into
<filename>branch/foo/bar/</filename>,
the following rules apply:</para>
these rules apply:</para>
<orderedlist>
<listitem>
@ -1297,18 +1295,25 @@ You need a Passphrase to protect your secret key.</screen>
<literal>stable/10</literal> and Newer</title>
<para>Starting with the <literal>stable/10</literal>
branch, all merges should be
branch, all merges are
merged to and committed from the root of the
branch. All merges should look like:</para>
branch. All merges look like:</para>
<screen>&prompt.user; svn merge -c <replaceable>r123456</replaceable> ^/head/ <replaceable>checkout</replaceable>
&prompt.user; svn commit <replaceable>checkout</replaceable></screen>
<para>Note that <replaceable>checkout</replaceable> should
be a complete checkout of the branch to which the merge
<para>Note that <replaceable>checkout</replaceable>
must be a complete checkout of the branch to which the merge
occurs.</para>
<para>Merges to <literal>releng/</literal> branches must
always originate from the corresponding
<literal>stable/</literal> branch. For example:</para>
<screen>&prompt.user; svn merge -c <replaceable>r123456</replaceable> ^/stable/<replaceable>10</replaceable> releng/<replaceable>10.0</replaceable></screen>
</sect4>
<!-- FIXME: This probably needs to go away -->
<sect4 xml:id="oldmerge">
<title>Selecting the Source and Target for
<literal>stable/9</literal> and Older</title>
@ -1319,8 +1324,8 @@ You need a Passphrase to protect your secret key.</screen>
a complete checkout. This procedure proved extremely
error-prone, with the convenience of partial checkouts for
merges significantly outweighed by the complexity of
picking mergeinfo targets. The below describes this
now-obsoleted procedure, which should be used
picking mergeinfo targets. The procedure below describes this
now-obsoleted process, which should be used
<emphasis>only for merges prior to
<literal>stable/10</literal></emphasis>.</para>
@ -1329,8 +1334,8 @@ You need a Passphrase to protect your secret key.</screen>
minimise property changes on unrelated directories.</para>
<para>The rules for selecting the merge target (the
directory that you will merge the changes to) can be
summarized as follows:</para>
directory where the changes are being merged to) can be
summarized:</para>
<orderedlist>
<listitem>
@ -1347,29 +1352,29 @@ You need a Passphrase to protect your secret key.</screen>
</listitem>
<listitem>
<para>Changes to kernel code should be merged to
<para>Changes to kernel code are merged to
<filename>sys/</filename>. For instance, a change to
the &man.ichwd.4; driver should be merged to
the &man.ichwd.4; driver is merged to
<filename>sys/</filename>, not
<filename>sys/dev/ichwd/</filename>. Likewise, a
change to the TCP/IP stack should be merged to
change to the TCP/IP stack is merged to
<filename>sys/</filename>, not
<filename>sys/netinet/</filename>.</para>
</listitem>
<listitem>
<para>Changes to code under <filename>etc/</filename>
should be merged at <filename>etc/</filename>, not
is merged at <filename>etc/</filename>, not
below it.</para>
</listitem>
<listitem>
<para>Changes to vendor code (code in
<filename>contrib/</filename>,
<filename>crypto/</filename> and so on) should be
<filename>crypto/</filename> and so on) are
merged to the directory where vendor imports happen.
For instance, a change to
<filename>crypto/openssl/util/</filename> should be
<filename>crypto/openssl/util/</filename> is
merged to <filename>crypto/openssl/</filename>. This
is rarely an issue, however, since changes to vendor
code are usually merged wholesale.</para>
@ -1379,8 +1384,8 @@ You need a Passphrase to protect your secret key.</screen>
<para>Changes to userland programs should as a general
rule be merged to the directory that contains the
Makefile for that program. For instance, a change to
<filename>usr.bin/xlint/arch/i386/</filename> should
be merged to
<filename>usr.bin/xlint/arch/i386/</filename>
is merged to
<filename>usr.bin/xlint/</filename>.</para>
</listitem>
@ -1403,7 +1408,7 @@ You need a Passphrase to protect your secret key.</screen>
</listitem>
<listitem>
<para>Changes to manual pages should be merged to
<para>Changes to manual pages are merged to
<filename>share/man/man<replaceable>N</replaceable>/</filename>,
for the appropriate value of
<literal>N</literal>.</para>
@ -1411,14 +1416,14 @@ You need a Passphrase to protect your secret key.</screen>
<listitem>
<para>Other changes to <filename>share/</filename>
should be merged to the appropriate subdirectory and
are merged to the appropriate subdirectory and
not to <filename>share/</filename> directly.</para>
</listitem>
<listitem>
<para>Changes to a top-level file in the source tree
such as <filename>UPDATING</filename> or
<filename>Makefile.inc1</filename> should be merged
<filename>Makefile.inc1</filename> are merged
directly to that file rather than to the root of the
whole tree. Yes, this is an exception to the first
three rules.</para>
@ -1429,19 +1434,19 @@ You need a Passphrase to protect your secret key.</screen>
</listitem>
</orderedlist>
<para>If you need to merge changes to several places at once
<para>If a merge changes several places at once
(for instance, changing a kernel interface and every
userland program that uses it), merge each target
separately, then commit them together. For instance, if
you merge a revision that changed a kernel
merging a revision that changed a kernel
<acronym>API</acronym> and updated all the userland bits
that used that <acronym>API</acronym>, you would merge the
that used that <acronym>API</acronym>, merge the
kernel change to sys, and the userland bits to the
appropriate userland directories, then commit all of these
in one go.</para>
<para>The source will almost invariably be the same as the
target. For instance, you will always merge
target. For instance, always merge
<filename>stable/7/lib/libc/</filename> from
<filename>head/lib/libc/</filename>. The only exception
would be when merging changes to code that has moved in
@ -1455,10 +1460,10 @@ You need a Passphrase to protect your secret key.</screen>
<title>Preparing the Merge Target</title>
<para>Because of the mergeinfo propagation issues described
earlier, it is very important that you never merge changes
into a sparse working copy. You must always have a full
checkout of the branch you will merge into. For instance,
when merging from HEAD to 7, you must have a full checkout
earlier, it is very important to never merge changes
into a sparse working copy. Always use a full
checkout of the branch being merge into. For instance,
when merging from HEAD to 7, use a full checkout
of stable/7:</para>
<screen>&prompt.user; <userinput>cd stable/7</userinput>
@ -1490,7 +1495,7 @@ You need a Passphrase to protect your secret key.</screen>
<sect5>
<title>The Principles</title>
<para>Say you would like to merge:</para>
<para>For example, To merge:</para>
<itemizedlist>
<listitem>
@ -1542,7 +1547,7 @@ $target - head/$source:$P,$Q,$R</screen>
<sect5>
<title>Practical Example</title>
<para>As a practical example, consider the following
<para>As a practical example, consider this
scenario. The changes to <filename>netmap.4</filename>
in r238987 are to be merged from CURRENT to 9-STABLE.
The file resides in
@ -1645,7 +1650,7 @@ U stable/9/share/man/man4/netmap.4
<para>Vendor patches: these are patches that have been
issued by the vendor, or that have been extracted from
the vendor's version control system, which address
issues which in your opinion cannot wait until the
issues which cannot wait until the
next vendor release.</para>
</listitem>
@ -1660,7 +1665,7 @@ U stable/9/share/man/man4/netmap.4
<itemizedlist>
<listitem>
<para>Vendor patches should be committed to the vendor
<para>Vendor patches must be committed to the vendor
branch, and merged from there to head. If the patch
addresses an issue in a new release that is currently
being imported, it <emphasis>must not</emphasis> be
@ -1671,7 +1676,7 @@ U stable/9/share/man/man4/netmap.4
</listitem>
<listitem>
<para>&os; patches should be committed directly to
<para>&os; patches are committed directly to
head.</para>
</listitem>
</itemizedlist>
@ -1793,7 +1798,7 @@ U stable/9/share/man/man4/netmap.4
<para>Now, the sources must be copied into
<filename><replaceable>dist</replaceable></filename> and
the <command>svn add</command> and
<command>svn rm</command> commands should be used as
<command>svn rm</command> commands are used as
needed:</para>
<screen>&prompt.user; <userinput>cd <replaceable>vendor/pf/pf-4.3</replaceable></userinput>
@ -1817,8 +1822,8 @@ U stable/9/share/man/man4/netmap.4
<literal>*</literal>. No other properties should exist
on any file in the tree.</para>
<para>Committing is now possible, however it is good
practice to make sure that everything is OK by using the
<para>Committing is now possible. However, it is good
practice to make sure that everything is okay by using the
<command>svn stat</command> and
<command>svn diff</command> commands.</para>
</sect5>
@ -1826,7 +1831,7 @@ U stable/9/share/man/man4/netmap.4
<sect5>
<title>Tagging</title>
<para>Once committed, vendor releases should be tagged for
<para>Once committed, vendor releases are tagged for
future reference. The best and quickest way to do this
is directly in the repository:</para>
@ -1856,8 +1861,8 @@ U stable/9/share/man/man4/netmap.4
&prompt.user; <userinput>svn merge --accept=postpone svn+ssh://repo.freebsd.org/base/<replaceable>vendor/pf/dist</replaceable> .</userinput></screen>
<para>The <literal>--accept=postpone</literal> tells
Subversion that it should not complain because merge
conflicts will be taken care of manually.</para>
Subversion not to complain about merge
conflicts as they will be handled manually.</para>
<tip xml:id="svn-advanced-use-vendor-imports-pre-svn">
<para>The <command>cvs2svn</command> changeover occurred
@ -1901,9 +1906,9 @@ U stable/9/share/man/man4/netmap.4
<para>The <literal>--no-diff-deleted</literal> tells
Subversion not to complain about files that are in the
vendor tree but not in the main tree, i.e., things that
vendor tree but not in the main tree. Things that
would have previously been removed before the vendor
import, like for example the vendor's makefiles
import, like the vendor's makefiles
and configure scripts.</para>
<para>Using <acronym>CVS</acronym>, once a file was off the
@ -1992,8 +1997,8 @@ U stable/9/share/man/man4/netmap.4
<note>
<para>It is important to ensure that the mergeinfo
is correct when reverting a file in order to permit
<command>svn mergeinfo --show-revs=eligible</command> to work as
is correct when reverting a file to permit
<command>svn mergeinfo --eligible</command> to work as
expected.</para>
</note>
@ -2044,18 +2049,19 @@ U stable/9/share/man/man4/netmap.4
<title>Setting up a <application>svnsync</application>
Mirror</title>
<para>You probably do not want to do this unless there is a
good reason for it. Such reasons might be to support many
multiple local read-only client machines, or if your network
<para>Avoid setting up a <application>svnsync</application>
mirror unless there is a very good reason for it. Such
reasons might be to support
multiple local read-only client machines, or if the network
bandwidth is limited. Starting a fresh mirror from empty
would take a very long time. Expect a minimum of 10 hours
for high speed connectivity. If you have international
links, expect this to take 4 to 10 times longer.</para>
for high speed connectivity. If international links are
involved, expect this to take four to ten times longer.</para>
<para>A far better option is to grab a seed file. It is large
(~1GB) but will consume less network traffic and take less
time to fetch than a svnsync will. This is possible in one
of the following three ways:</para>
time to fetch than a svnsync will. There are several ways
to do this:</para>
<screen>&prompt.user; <userinput>rsync -va --partial --progress freefall:/home/peter/svnmirror-base-r179637.tbz2 .</userinput></screen>
@ -2063,15 +2069,15 @@ U stable/9/share/man/man4/netmap.4
<screen>&prompt.user; <userinput>fetch ftp://ftp.freebsd.org/pub/FreeBSD/development/subversion/svnmirror-base-r221445.tar.xz</userinput></screen>
<para>Once you have the file, extract it to somewhere like
<para>Extract the file to somewhere like
<filename>home/svnmirror/base/</filename>.
Then, update it, so that it fetches changes since the last
revision in the archive:</para>
<screen>&prompt.user; <userinput>svnsync sync file:///home/svnmirror/base</userinput></screen>
<para>You can then set that up to run from &man.cron.8;, do
checkouts locally, set up a svnserve server for your local
<para>Now, set that up to run from &man.cron.8;, do
checkouts locally, set up a svnserve server for local
machines to talk to, etc.</para>
<para>The seed mirror is set to fetch from
@ -2114,18 +2120,18 @@ U stable/9/share/man/man4/netmap.4
while and is finally committed back to the original branch.
During development code migration in one direction (from
head to the branch only). No code is committed back to head
until the end. Once you commit back at the end, the branch
is dead (although you can have a new branch with the same
name after you delete the branch if you want).</para>
until the end. Once the branch is commited back at the end,
it is dead (although a new branch with the same name can be
created after the dead one was deleted).</para>
<para>As per <link
xlink:href="http://people.freebsd.org/~peter/svn_notes.txt">http://people.freebsd.org/~peter/svn_notes.txt</link>,
work that is intended to be merged back into HEAD should be
in <filename>base/projects/</filename>. If you are doing
work that is beneficial to the &os; community in some way
in <filename>base/projects/</filename>. If the
work is beneficial to the &os; community in some way
but not intended to be merged directly back into HEAD then
the proper location is
<filename>base/user/<replaceable>your-name</replaceable>/</filename>.
<filename>base/user/<replaceable>username</replaceable>/</filename>.
<link
xlink:href="http://svnweb.freebsd.org/base/projects/GUIDELINES.txt">This
page</link> contains further details.</para>
@ -2155,10 +2161,10 @@ U stable/9/share/man/man4/netmap.4
<sect2>
<title>Some Tips</title>
<para>In commit logs etc., <quote>rev 179872</quote> should be
<para>In commit logs etc., <quote>rev 179872</quote> is
spelled <quote>r179872</quote> as per convention.</para>
<para>Speeding up svn is possible by adding the following to
<para>Speeding up svn is possible by adding these entries to
<filename>~/.ssh/config</filename>:</para>
<screen>Host *
@ -2236,7 +2242,7 @@ freebsd-mfc-after = 2 weeks</programlisting>
</listitem>
<listitem>
<para>All <filename>src</filename> commits should go to
<para>All <filename>src</filename> commits go to
&os.current; first before being merged to &os.stable;.
The &os.stable; branch must maintain
<acronym>ABI</acronym> and <acronym>API</acronym>
@ -2421,20 +2427,19 @@ freebsd-mfc-after = 2 weeks</programlisting>
taken up permanent residence on
<systemitem>freefall</systemitem> may get truncated
without warning if space needs to be freed, so forward it
or read it and you will not lose it.</para>
or save it elsewhere.</para>
<para>Due to the severe load dealing with SPAM places on the
central mail servers that do the mailing list processing
central mail servers that do the mailing list processing,
the front-end server does do some basic checks and will
drop some messages based on these checks. At the moment
proper DNS information for the connecting host is the only
check in place but that may change. Some people blame
these checks for bouncing valid email. If you want these
checks turned off for your email you can place a file
named <filename>.spam_lover</filename> in your home
directory on <systemitem
class="fqdomainname">freefall.FreeBSD.org</systemitem>
to disable the checks for your email.</para>
these checks for bouncing valid email. To have these
checks turned off for your email, create a file
named <filename>~/.spam_lover</filename>
on <systemitem
class="fqdomainname">freefall.FreeBSD.org</systemitem>.</para>
</step>
</procedure>
@ -2498,8 +2503,7 @@ freebsd-mfc-after = 2 weeks</programlisting>
how commit logs are formatted.</para>
<para>As well as including an informative message with each
commit you may need to include some additional
information.</para>
commit, some additional information may be needed.</para>
<para>This information consists of one or more lines
containing the key word or phrase, a colon, tabs for formatting,
@ -2526,7 +2530,7 @@ freebsd-mfc-after = 2 weeks</programlisting>
username on the &os; cluster.</para>
<para>If the submitter is the maintainer of the port
to which you are committing, include "(maintainer)"
being committed, include "(maintainer)"
after the email address.</para>
<para>Avoid obfuscating the email address of the
@ -2627,9 +2631,9 @@ freebsd-mfc-after = 2 weeks</programlisting>
<example>
<title>Commit Log for a Commit Based on a PR</title>
<para>You want to commit a change based on a PR submitted by
John Smith containing a patch. The end of the commit message
should look something like this.</para>
<para>The commit is based on a patch from a PR submitted by John
Smith. The commit message <quote>PR</quote> and
<quote>Submitted by</quote> fields are filled..</para>
<programlisting>...
@ -2640,8 +2644,8 @@ freebsd-mfc-after = 2 weeks</programlisting>
<example>
<title>Commit Log for a Commit Needing Review</title>
<para>You want to change the virtual memory system. You have
posted patches to the appropriate mailing list (in this
<para>The virtual memory system is being changed. After
posting patches to the appropriate mailing list (in this
case, <literal>freebsd-arch</literal>) and the changes have
been approved.</para>
@ -2653,8 +2657,8 @@ freebsd-mfc-after = 2 weeks</programlisting>
<example>
<title>Commit Log for a Commit Needing Approval</title>
<para>You want to commit a port. You have collaborated with
the listed MAINTAINER, who has told you to go ahead and
<para>Commit a port, after working with
the listed MAINTAINER, who said to go ahead and
commit.</para>
<programlisting>...
@ -2669,7 +2673,7 @@ freebsd-mfc-after = 2 weeks</programlisting>
<title>Commit Log for a Commit Bringing in Code from
OpenBSD</title>
<para>You want to commit some code based on work done in the
<para>Commiting some code based on work done in the
OpenBSD project.</para>
<programlisting>...
@ -2681,7 +2685,7 @@ freebsd-mfc-after = 2 weeks</programlisting>
<title>Commit Log for a Change to &os.current; with a Planned
Commit to &os.stable; to Follow at a Later Date.</title>
<para>You want to commit some code which will be merged from
<para>Committing some code which will be merged from
&os.current; into the &os.stable; branch after two
weeks.</para>
@ -2697,15 +2701,15 @@ MFC after: <replaceable>2 weeks</replaceable></programlisting>
<literal>month</literal>, <literal>months</literal>.</para>
</example>
<para>In many cases you may need to combine some of these.</para>
<para>It is often necessary to combine these.</para>
<para>Consider the situation where a user has submitted a PR
containing code from the NetBSD project. You are looking at the
PR, but it is not an area of the tree you normally work in, so
you have decided to get the change reviewed by the
containing code from the NetBSD project. Looking at the PR, the
developer sees it is not an area of the tree they normally work
in, so they have the change reviewed by the
<literal>arch</literal> mailing list. Since the change is
complex, you opt to <acronym>MFC</acronym> after one month to
allow adequate testing.</para>
complex, the developer opts to <acronym>MFC</acronym> after one
month to allow adequate testing.</para>
<para>The extra information to include in the commit would look
something like</para>
@ -2725,7 +2729,7 @@ Relnotes: yes</programlisting>
<sect1 xml:id="pref-license">
<title>Preferred License for New Files</title>
<para>Currently the &os; Project suggests and uses the following
<para>The &os; Project suggests and uses this
text as the preferred license scheme:</para>
<programlisting>/*-
@ -2854,27 +2858,27 @@ Relnotes: yes</programlisting>
<sect1 xml:id="developer.relations">
<title>Developer Relations</title>
<para>If you are working directly on your own code or on code
<para>When working directly on your own code or on code
which is already well established as your responsibility, then
there is probably little need to check with other committers
before jumping in with a commit. If you see a bug in an area of
before jumping in with a commit. Working on a bug in an area of
the system which is clearly orphaned (and there are a few such
areas, to our shame), the same applies. If, however, you are
about to modify something which is clearly being actively
areas, to our shame), the same applies. Trying
to modify something which is clearly being actively
maintained by someone else (and it is only by watching the
<literal><replaceable>repository</replaceable>-committers</literal>
mailing list that you can really get a feel for just what is and
mailing list that a developer can really get a feel for just what is and
is not) then consider sending the change to them instead, just
as you would have before becoming a committer. For ports, you
should contact the listed <varname>MAINTAINER</varname> in the
as a developer would have before becoming a committer. For ports,
contact the listed <varname>MAINTAINER</varname> in the
<filename>Makefile</filename>. For other parts of the
repository, if you are unsure who the active maintainer might
be, it may help to scan the revision history to see who has
repository, if it s not clear who the active maintainer
is, it may help to scan the revision history to see who has
committed changes in the past. An example script that lists
each person who has committed to
a given file along with the number of commits each person has
made can be found at on <systemitem>freefall</systemitem> at
<filename>~eadler/bin/whodid</filename>. If your queries go
<filename>~eadler/bin/whodid</filename>. If queries go
unanswered or the committer otherwise indicates a lack of
interest in the area affected, go ahead and commit it.</para>
@ -2884,20 +2888,20 @@ Relnotes: yes</programlisting>
output.</para>
</note>
<para>If you are unsure about a commit for any reason at all, have
<para>If there is any doubt about a commit for any reason at all, have
it reviewed by <literal>-hackers</literal> before committing.
Better to have it flamed then and there rather than when it is
part of the repository. If you do happen to commit something
which results in controversy erupting, you may also wish to
part of the repository. If a commit does
results in controversy erupting, it may be advisable to
consider backing the change out again until the matter is
settled. Remember &ndash; with a version control system we can
settled. Remember, with a version control system we can
always change it back.</para>
<para>Do not impugn the intentions of someone you disagree with.
If they see a different solution to a problem than you, or even
a different problem, it is not because they are stupid, because
<para>Do not impugn the intentions of others.
If they see a different solution to a problem, or even
a different problem, it is probably not because they are stupid, because
they have questionable parentage, or because they are trying to
destroy your hard work, personal image, or &os;, but simply
destroy hard work, personal image, or &os;, but basically
because they have a different outlook on the world. Different
is good.</para>
@ -2921,7 +2925,7 @@ Relnotes: yes</programlisting>
<sect1 xml:id="if-in-doubt">
<title>If in Doubt...</title>
<para>When you are not sure about something, whether it be a
<para>When unsure about something, whether it be a
technical issue or a project convention be sure to ask. If you
stay silent you will never make progress.</para>
@ -2930,7 +2934,7 @@ Relnotes: yes</programlisting>
person that knows the answer. This way everyone will be able to
learn from the question and the answer.</para>
<para>For project specific or administrative questions you should
<para>For project specific or administrative questions
ask, in order:</para>
<itemizedlist>
@ -2943,7 +2947,7 @@ Relnotes: yes</programlisting>
</listitem>
<listitem>
<para>Any team with a "hat", as they should give you a
<para>Any team with a "hat", as they can give you a
definitive answer.</para>
</listitem>
@ -3096,8 +3100,8 @@ Relnotes: yes</programlisting>
<para>&a.svn-src-all.name;, &a.svn-ports-all.name; and
&a.svn-doc-all.name; are the mailing lists that the
version control system uses to send commit messages to.
You should <emphasis>never</emphasis> send email directly
to these lists. You should only send replies to this list
<emphasis>Never</emphasis> send email directly
to these lists. Only send replies to this list
when they are short and are directly related to a
commit.</para>
</listitem>
@ -3113,7 +3117,7 @@ Relnotes: yes</programlisting>
voting, announcements, etc.</para>
<para>The &a.developers; is for the exclusive use of &os;
committers. In order to develop &os;, committers must
committers. To develop &os;, committers must
have the ability to openly discuss matters that will be
resolved before they are publicly announced. Frank
discussions of work in progress are not suitable for open
@ -3187,14 +3191,13 @@ Relnotes: yes</programlisting>
</step>
</procedure>
<para>Now you should be able to use &man.ssh-add.1; for
authentication once per session. This will prompt you for
your private key's pass phrase, and then store it in your
authentication agent (&man.ssh-agent.1;). If you no longer
wish to have your key stored in the agent, issuing
<command>ssh-add -d</command> will remove it.</para>
<para>Now &man.ssh-add.1; can be used for
authentication once per session. It prompts for
the private key's pass phrase, and then stores it in the
authentication agent (&man.ssh-agent.1;). Use <command>ssh-add
-d</command> to remove keys stored in the agent.<para>
<para>Test by doing something such as <command>ssh
<para>Test with a simple remote command: <command>ssh
freefall.FreeBSD.org ls /usr</command>.</para>
<para>For more information, see
@ -3312,7 +3315,7 @@ Relnotes: yes</programlisting>
<filename>src/crypto</filename>, or
<filename>src/sys/contrib</filename> trees without
<emphasis>explicit</emphasis> approval from the respective
maintainer(s).</para>
maintainers.</para>
</listitem>
</orderedlist>
@ -3382,7 +3385,7 @@ Relnotes: yes</programlisting>
are angry or otherwise behave in a manner which is likely
to strike others as needlessly confrontational. First
calm down, then think about how to communicate in the most
effective fashion for convincing the other person(s) that
effective fashion for convincing the other persons that
your side of the argument is correct, do not just blow off
some steam so you can feel better in the short term at the
cost of a long-term flame war. Not only is this very bad
@ -3427,21 +3430,21 @@ Relnotes: yes</programlisting>
<para>Discuss any significant change
<emphasis>before</emphasis> committing.</para>
<para>The repository is not where changes should be
<para>The repository is not where changes are
initially submitted for correctness or argued over, that
should happen first in the mailing lists or by use of the
Phabricator service and the commit should only happen once
happens first in the mailing lists or by use of the
Phabricator service. The commit will only happen once
something resembling consensus has been reached. This
does not mean that you have to ask permission before
does not mean that permission is required before
correcting every obvious syntax error or manual page
misspelling, simply that you should try to develop a feel
misspelling, just that it is good to develop a feel
for when a proposed change is not quite such a no-brainer
and requires some feedback first. People really do not
mind sweeping changes if the result is something clearly
better than what they had before, they just do not like
being <emphasis>surprised</emphasis> by those changes.
The very best way of making sure that you are on the right
track is to have your code reviewed by one or more other
The very best way of making sure that things are on the right
track is to have code reviewed by one or more other
committers.</para>
<para>When in doubt, ask for review!</para>
@ -3464,7 +3467,7 @@ Relnotes: yes</programlisting>
maintainer need to be reviewed by at least one other
maintainer. In cases where the
<quote>maintainer-ship</quote> of something is not clear,
you can also look at the repository logs for the file(s)
look at the repository logs for the files
in question and see if someone has been working recently
or predominantly in that area.</para>
@ -3546,15 +3549,15 @@ Relnotes: yes</programlisting>
self-control, tempers are lost and angry words are
exchanged. The best thing that can be done in such cases
is to minimize the effects of this until everyone has
cooled back down. That means that you should not air your
angry words in public and you should not forward private
cooled back down. Do not air
angry words in public and do not forward private
correspondence or other private communications to public
mailing lists, mail aliases, instant messaging channels or
social media sites. What people say one-to-one is often
much less sugar-coated than what they would say in public,
and such communications therefore have no place there -
they only serve to inflame an already bad situation. If
the person sending you a flame-o-gram at least had the
the person sending a flame-o-gram at least had the
grace to send it privately, then have the grace to keep it
private yourself. If you feel you are being unfairly
treated by another developer, and it is causing you
@ -3628,7 +3631,7 @@ Relnotes: yes</programlisting>
<filename>src/crypto</filename>, and
<filename>src/sys/contrib</filename> trees without
<emphasis>explicit</emphasis> approval from the respective
maintainer(s).</para>
maintainers.</para>
<para>The trees mentioned above are for contributed software
usually imported onto a vendor branch. Committing
@ -3640,9 +3643,10 @@ Relnotes: yes</programlisting>
(or you are the maintainer), do <emphasis>not</emphasis>
commit there!</para>
<!-- FIXME: this paragraph should be rewritten -->
<para>Please note that this does not mean you should not try
to improve the software in question; you are still more
than welcome to do so. Ideally, you should submit your
than welcome to do so. Ideally, submit your
patches to the vendor. If your changes are
&os;-specific, talk to the maintainer; they may be
willing to apply them locally. But whatever you do, do
@ -3661,7 +3665,7 @@ Relnotes: yes</programlisting>
recent release cycles and is truly no longer an &i386; centric
operating system. In an effort to make it easier to keep
&os; portable across the platforms we support, core has
developed the following mandate:</para>
developed this mandate:</para>
<blockquote>
<para>Our 32-bit reference platform is &arch.i386;, and our
@ -3724,7 +3728,7 @@ Relnotes: yes</programlisting>
<title>Deprecating Features</title>
<para>When it is necessary to remove functionality from software
in the base system the following guidelines should be followed
in the base system, follow these guidelines
whenever possible:</para>
<orderedlist>
@ -3782,7 +3786,7 @@ Relnotes: yes</programlisting>
<para>Where there are security problems that affect many
different operating systems, &os; frequently depends on
early access in order to be able to prepare advisories for
early access to be able to prepare advisories for
coordinated release. Unless &os; developers can be
trusted to maintain security, such early access will not
be made available. The Security Officer is responsible
@ -3790,7 +3794,7 @@ Relnotes: yes</programlisting>
vulnerabilities, and for timing the release of all
advisories. He may request help under condition of
confidentiality from any developer with relevant knowledge
in order to prepare security fixes.</para>
to prepare security fixes.</para>
</listitem>
<listitem>
@ -3817,7 +3821,7 @@ Relnotes: yes</programlisting>
</listitem>
<listitem>
<para>Private communications should not be made
<para>Private communications must not be made
public without permission.</para>
<para>Beyond the specific requirements above there is a
@ -3831,13 +3835,13 @@ Relnotes: yes</programlisting>
<listitem>
<para>Communications on project-only or restricted access
channels should be treated as private.</para>
channels must be kept private.</para>
<para>Similarly to personal communications, certain
internal communications channels, including &os; Committer
only mailing lists and restricted access IRC channels
should be considered as private communications. You need
permission in order to publish material from these
are considered private communications. Permission is
required to publish material from these
sources.</para>
</listitem>
@ -3993,7 +3997,7 @@ Relnotes: yes</programlisting>
handbook. The basics for how to get a system running must be
documented, although not necessarily for every single board or
system a Tier 2 architecture supports. The supported hardware
list must exist and should be relatively recent. It should be
list must exist and be relatively recent. It should be
integrated into the &os; documentation.</para>
<para>Current Tier 2 platforms are &arch.arm;, &arch.arm64;,
@ -4010,9 +4014,9 @@ Relnotes: yes</programlisting>
Tier 3 platforms are architectures in the early stages of
development, for non-mainstream hardware platforms, or which
are considered legacy systems unlikely to see broad future
use. Initial support for Tier 3 platforms should be worked on
use. Initial support for Tier 3 platforms is worked on
in external SCM repositories.
The transition to &os;'s subversion should take place after
The transition to &os;'s subversion takes place after
the platform boots multi-user on hardware; sharing via
subversion is needed for wider exposure; and multiple
developers are actively working on the platform.
@ -4148,12 +4152,12 @@ Relnotes: yes</programlisting>
<itemizedlist>
<listitem>
<para>The port's PKGNAME should appear in exactly
<para>The port's PKGNAME appears in exactly
one line in a recent INDEX file.</para>
</listitem>
<listitem>
<para>No other ports should contain any reference
<para>No other ports contains any reference
to the port's directory or PKGNAME in their
Makefiles</para>
@ -4320,8 +4324,8 @@ Relnotes: yes</programlisting>
(English-only and internationalized version).</para>
<para>Another example is when a port is moved from one
subdirectory to another, or when you want to change the
name of a directory because the author(s) renamed their
subdirectory to another, or when the name of a directory
must be changed because the authors renamed their
software even though it is a descendant of a port
already in a tree.</para>
</answer>
@ -4368,8 +4372,8 @@ Relnotes: yes</programlisting>
<varname>PORTNAME</varname> instead of adding
<varname>PKGNAMEPREFIX</varname> or
<varname>PKGNAMESUFFIX</varname>, but this
should only be done when it is really needed
&mdash; e.g., using an existing port as the base
is only done when it is really needed
&mdash; for example, using an existing port as the base
for a very similar program with a different
name, or upgrading a port to a new upstream
version which actually changes the distribution
@ -4378,8 +4382,8 @@ Relnotes: yes</programlisting>
<filename>textproc/libxml2</filename>. In most
cases, adding or changing
<varname>PKGNAMEPREFIX</varname> or
<varname>PKGNAMESUFFIX</varname> should
suffice.</para>
<varname>PKGNAMESUFFIX</varname>
suffices.</para>
</step>
<step>
@ -4639,7 +4643,7 @@ Do you want to commit? (no = start a shell) [y/n]</screen>
Handbook. Once that procedure has been followed and the
PR has been assigned to the &a.portmgr;, it is their
decision whether or not to approve it. If they do, it
is their responsibility to do the following:</para>
is their responsibility to:</para>
<procedure>
<step>
@ -4680,7 +4684,7 @@ Do you want to commit? (no = start a shell) [y/n]</screen>
<para>Change the port's
<varname>CATEGORIES</varname> (this was the
point of the exercise, remember?) The new
category should be listed
category is listed
<emphasis>first</emphasis>. This will help to
ensure that the <varname>PKGORIGIN</varname> is
correct.</para>
@ -4716,7 +4720,7 @@ Do you want to commit? (no = start a shell) [y/n]</screen>
&man.portupgrade.1; fail.</para>
<para>To do this, use the
<filename>chkorigin.sh</filename> tool, as follows:
<filename>chkorigin.sh</filename> tool:
<command>env
PORTSDIR=<replaceable>/path/to/ports</replaceable>
sh -e
@ -4760,8 +4764,7 @@ Do you want to commit? (no = start a shell) [y/n]</screen>
</step>
<step>
<para>Update the documentation by modifying the
following:</para>
<para>Update the documentation by modifying:</para>
<itemizedlist>
<listitem>
@ -4810,8 +4813,8 @@ Do you want to commit? (no = start a shell) [y/n]</screen>
</question>
<answer>
<para>This is much simpler than a physical category. You
only need to modify the following:</para>
<para>This is much simpler than a physical category. Only
a few modifications are needed:</para>
<itemizedlist>
<listitem>
@ -4890,9 +4893,9 @@ Do you want to commit? (no = start a shell) [y/n]</screen>
</question>
<answer>
<para>When the checksum for a port's distfile is updated
<para>When the checksum for a distribution file is updated
due to the author updating the file without changing the
port's revision, the commit message should include a
port's revision, the commit message includes a
summary of the relevant diffs between the original and
new distfile to ensure that the distfile has not been
corrupted or maliciously altered. If the current
@ -4904,7 +4907,6 @@ Do you want to commit? (no = start a shell) [y/n]</screen>
</answer>
</qandaentry>
<qandaentry xml:id="ports-exp-run">
<question>
<para>How can an experimental test build of the ports tree
@ -4992,7 +4994,7 @@ Do you want to commit? (no = start a shell) [y/n]</screen>
linkend="conventions-everyone">Conventions</link></para>
<note>
<para>You should get your mentor to add you to the
<para>Get your mentor to add you to the
<quote>Additional Contributors</quote>
(<filename>doc/en_US.ISO8859-1/articles/contributors/contrib.additional.xml</filename>),
if you are not already listed there.</para>
@ -5023,7 +5025,7 @@ Do you want to commit? (no = start a shell) [y/n]</screen>
<para>As of December 12, 2012, &ga; was enabled on the
&os;&nbsp;Project website to collect anonymized usage statistics
regarding usage of the site. The information collected is
valuable to the &os;&nbsp;Documentation Project, in order to
valuable to the &os;&nbsp;Documentation Project, to
identify various problems on the &os; website.</para>
<sect2 xml:id="google-analytics-policy">