Yes, this is a sub-page of my private page yet feel free to modify or add!

<<TableOfContents(2)>>

= Mentor Process: New Contributor Perspective =

== Steps you were asked to take ==

 1. "[[https://www.freebsd.org/doc/en/articles/committers-guide/conventions.html#conventions-committers|For New Committers]]" from the committer's guide
 1. [[https://alexcabal.com/creating-the-perfect-gpg-keypair/|Additional guidance]] on PGP key creation

=== Tools to use ===

If you haven't installed these yet
 1. `ports-mgmt/portlint` to sanity check ports changes
 1. `devel/arcanist` to interface with [[CodeReview|Phabricator]] / [[https://reviews.freebsd.org]]
 1. `security/gnupg` to generate PGP keys and work with gpg

== Things you were asked to care about ==

=== Enrollment ===

 1. Username (unique, not too similar to exising ones)
 1. Key-strength (ssh, PGP)
   * ssh-key: `ssh-keygen -t ecdsa -b 512`
   * pgp-key: `gpg2 --genkey` use 4096-bit and 3 years validity
 1. [[https://alexcabal.com/creating-the-perfect-gpg-keypair/|Additional info]] in PGP key (photo, other email-addresses)
   * Create a revocation key and a subkey
   * Publish your subkey not your primary

=== Porting ===

 1. Re-roll patches with `make makepatch` when necessary yet retain timestamps and possible comment preamble in the diffs (tip: move existing patches to orig.files so you can compare)

=== Reviews ===

 1. Provide `portlint -AC` output
 1. Provide (link to) `poudriere testport` output
 1. Provide `make regression-test` output if the port has that make target (most Python ports do)
 1. Summary must adhere to [[https://www.freebsd.org/doc/en_US.ISO8859-1/articles/committers-guide/commit-log-message.html|commit message format]]
   * Itemize changes (with intents and rationale) in commit log
   * Add the "Differential Revision: <full url>" line in svn commit message, so Phabricator closes the review automatically
   * Review Summary should be something like:

{{{
Proposed commit log:

 ```
 cat/port: Short summary (<50 chars)

  * Itemize changes
  * Itemize changes [with short rationale if necessary]

Optional explanation about the change itemized above, 
so that people are super clear on what, why, how, 
where, when.

  * Itemize changes [1]

[1] with references if necessary

Metadata: values
Metadata: values
Metadata: values
 ```
}}}

== Thoughts during the process as they come up (thoughtstream) ==

 1. Rename !BugZilla account (Preferences -> Account info) to your @freebsd.org address
 1. Phabricator enrollment missing (i.e. register with a valid @freebsd.org account results in automatic acceptance)
 1. [[CodeReview]] process is missing in documentation
 1. You can't add "Differential Revision: " to the Phabricator summary (via arcanist CLI client), yet "Differential Revision: " should be in the svn commit message. 
  1. (KK Edit: Add it via WWW UI)

= Port committer tasks =

== How to setup your environment ==

I have decided to make do porting work in a [[https://www.freebsd.org/cgi/man.cgi?query=jail|jail]], I call this my `build` jail.

Setting yourself up
 1. Create a build jail (I use [[  Ports/sysutils/ezjail | ezjail ]])
 1. Create your FreeBSD user in your build jail (this is a different user-name than on the host but with the same uid)
 1. Configure `pkg` so you can install software (the packages I build using poudriere)
 1. `alias svn='svnlite'` (works for me so far, no need to pull in `devel/subversion`)
 1. Install `devel/arcanist`, `security/gnupg` and `ports-mgmt/portlint` etc.
 1. Follow `arc` configuration instructions on [[CodeReview]]
 1. Pull base, ports and doc from svn (see both [[https://www.freebsd.org/doc/en/articles/committers-guide/subversion-primer.html|Subversion Primer]] ''and'' [[PortsSubversionPrimer|Ports Subversion Primer]])
Now you're ready to perform the [[https://www.freebsd.org/doc/en/articles/committers-guide/conventions.html#conventions-committers|For New Committers]] tasks 

----
CategoryCommunity CategoryHowTo