[[[
You'll probably need customize this for the particular person you're
inviting to the PMC.  Also, remember to replace instances of "{AT}" with
real "@" signs.  It's just masked in this template to fool the spam
address harvesters.
]]]

### see https://www.apache.org/dev/pmc.html#newpmc for procedure

From: "Some PMC Member" <a.committer@wherever.example.com>
To: New PMC Member <new.pmcer@wherever.new.pmcers.live>
Cc: private{AT}subversion.apache.org
Subject: Invitation to join the Subversion PMC

Hi New PMC Member,

The other PMC members and I would like to invite you to join the Subversion
Project Management Committee (PMC).  The PMC is the managing body of the
Subversion development and user communities.  For more information, see
<http://www.apache.org/foundation/how-it-works.html#pmc> and
<http://www.apache.org/dev/pmc.html#faq>.  If you have any questions about
this invitation, please don't hesitate to ask me or the existing PMC.

You can accept this offer by simply replying to this mail.  If you do not
already have an account with the Apache Software Foundation, please follow
the instructions at <http://www.apache.org/dev/new-committers-guide.html#cla>.
You will receive an email with details on how to access your account.

Please remember to subscribe to the private (PMC) mailing list by
emailing <private-subscribe{AT}subversion.apache.org>, and to checkout
a working copy of https://svn.apache.org/repos/private/pmc/subversion/.
Note: it typically takes 3 to 5 days after you accepted this invitation,
before access to this protected part of the repository is arranged.  If it
takes too long, please let us know on the private mailing list.

While PMC membership comes with full commit privileges to the Subversion
repository, we trust you use your judgment in determining what areas
of the repository you are qualified to commit to.  Until you feel comfortable
in the code base, you should still post patches for review before committing.
Commit access just means that you can rely on your own judgment to decide
when something is ready for commit.

Finally, if you haven't done so already, please read

   http://subversion.apache.org/docs/community-guide/

Thanks for all your work so far!

- Some PMC Member
