blob: 2420c072b6b0f45ee9d41ac7def7557b6176078b [file] [log] [blame]
<!doctype html>
<html class="no-js" lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Guide to new committers - Apache Infrastructure</title>
<link rel="stylesheet" href="/theme/css/foundation.css">
<link rel="stylesheet" href="/theme/css/app.css">
<link rel="stylesheet" href="/theme/css/font-awesome.min.css">
<style type="text/css">
.frontbox {
border-radius: 8%;
border: 1px solid #999; background: #444; color: #EEE; padding: 6px; margin: 3px;
}
.frontbox:hover {
border-top: 4px solid #1583CC;
margin-top: 0px;
cursor: pointer;
}
.clickable {
/* height was reduced by 40% */
height: 60%;
width: 30%;
position: absolute;
z-index: 1;
}
</style> </head>
<body style="background: #C9B191;">
<!-- Menu bar --->
<div class="row">
<div class="top-bar" style="padding: 0; margin-bottom: 10px; background: #222; border: 1px solid #DDD; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px;">
<div class="hide-for-small-only">
<div class="top-bar-left">
<ul class="menu" style="background: #222; padding: 0px; line-height: 1; border-bottom-left-radius: 4px;">
<li class="notable-logo"><a href="/" target="_self" style="padding: 3px; padding-left: 7px;">
<img style="vertical-align: middle;" src='/theme/images/feather.png' width='18'/><span style="font-size: 1.30rem; color: #1583CC; text-transform: uppercase;">Apache Infrastructure</span></a>
</li>
</ul>
</div>
<div class="top-bar-right">
<ul class="dropdown menu horizontal" data-dropdown-menu style="background: #222; font-size: 0.8rem; text-transform: uppercase; padding-top: 5px;">
<li class="is-dropdown-submenu-parent">
<a href="#" target="_self" style="padding-left: 7px;">About</a>
<ul class="menu" style="background: #222; font-size: 0.7rem; text-transform: uppercase; padding-top: 5px; margin-top: 5px;">
<li><a href="/pages/team.html">About the team</a></li>
<li><a href="/pages/policies.html">Our policies</a></li>
<li><a href="/pages/roadmap.html">Strategies & Roadmap</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/INFRA/Contacting+infrastructure">Contact infrastructure</a></li>
</ul>
</li>
<li><a href="https://cwiki.apache.org/confluence/display/INFRA/Documentation+Index" target="_self" style="padding-left: 5px;">Documentation</a></li>
<li><a href="https://status.apache.org" target="_self" style="padding-left: 5px;">Status</a></li>
<li><a href="https://selfserve.apache.org" target="_self" style="padding-left: 5px;">Selfserve</a></li>
<li class="is-dropdown-submenu-parent">
<a href="#" target="_self" style="padding-left: 0px;">Services</a>
<ul class="menu" style="background: #222; font-size: 0.7rem; text-transform: uppercase; padding-top: 5px; margin-top: 5px;">
<li><a href="https://issues.apache.org/jira/" >JIRA</a></li>
<li><a href="https://cwiki.apache.org/" >Confluence</a></li>
<li><a href="https://builds.apache.org/" >Jenkins</a></li>
<li><a href="https://ci.apache.org/" >Buildbot</a></li>
<li><a href="https://www.apache.org/dev/machines.html" >Fingerprints</a></li>
<li><a href="https://blocky.apache.org" >Blocky</a></li>
<li><a href="https://uls.apache.org/app/kibana#/discover?_g=()" >Kibana and Unified Logging System</a></li>
<li><a href="https://app.datadoghq.com/account/login?next=%2Finfrastructure" >DataDog</a></li>
<li><a href="https://whimsy.apache.org/roster/committer/" >Committer Search</a></li>
<li><a href="https://apache.pagerduty.com/sign_in" >PagerDuty</a></li>
</ul>
</li>
<li><a href="http://infra.chat" style="padding-left: 5px;"><i class="fa fa-weixin" style="color: #FFF; font-size: 0.9rem;"></i>Chat with Us</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- bread crumb -->
<div class="row">
<div class="large-12 columns" style="font-size: 0.8rem; background-color: rgba(255,255,255,0.75); margin-bottom: 5px;">
<a href="/">Home</a>
<i class="fa fa-angle-double-right"></i>
<a href="/Guide to new committers.html">
Guide to new committers </a>
</div>
</div>
<!-- contents -->
<div class="row">
<div class="large-12 columns">
<div class="callout">
<h2>
Guide to new committers
</h2>
<div id="toc" style="border-radius: 3px; border: 1px solid #999; background-color: #EEE; padding: 4px;"><h4>Table of Contents:</h4><ul><ul><li><a class="toc-href" href="#contributor license agreement # {#cla}" title="Contributor license agreement # {#cla}">Contributor license agreement # {#cla}</a></li><li><a class="toc-href" href="#before account creation" title="Before account creation">Before account creation</a></li><li><a class="toc-href" href="#account creation" title="Account creation">Account creation</a></li><li><a class="toc-href" href="#setting up ssh # {#ssh-setup}" title="Setting up SSH # {#ssh-setup}">Setting up SSH # {#ssh-setup}</a></li><li><a class="toc-href" href="#setting up email" title="Setting up email">Setting up email</a></li><li><a class="toc-href" href="#subversion access and web sites" title="Subversion access and Web sites">Subversion access and Web sites</a></li><li><a class="toc-href" href="#security and pgp" title="Security and PGP">Security and PGP</a></li><li><a class="toc-href" href="#other resources" title="Other resources">Other resources</a></li><li><a class="toc-href" href="#committers-only subversion modules" title="Committers-only Subversion modules">Committers-only Subversion modules</a></li><li><a class="toc-href" href="#community" title="Community">Community</a></li><li><a class="toc-href" href="#responsibilities" title="Responsibilities">Responsibilities</a></li><li><a class="toc-href" href="#apachecon" title="ApacheCon">ApacheCon</a></li><li><a class="toc-href" href="#personal web space # {#personal-web-space}" title="Personal web space # {#personal-web-space}">Personal web space # {#personal-web-space}</a></li><li><a class="toc-href" href="#identity theft" title="Identity theft">Identity theft</a></li><li><a class="toc-href" href="#unofficial resources" title="Unofficial resources">Unofficial resources</a></li></ul></ul></div>
<p>This document aims to bring together in one place all of the general
information that a newbie committer needs to know. There will be other
details (some project-specific) that cannot be covered here. Those should
be covered by your project community.</p>
<p>The plain sense of the word "committer" is that you will have access rights
to your project's repository to write (as well as read) the source.
Rather than creating a patch and submitting it to be actively reviewed and
then (hopefully) committed, you can now create a local patch and commit it
yourself - or even review and commit patches created by others. Your
patches will still be reviewed by your fellow committers. This will happen
after the event (usually through commit emails, although the exact
convention for the review may differ between projects).</p>
<p>Take more care than you did before and expect existing committers to be
particularly vigilant.
You would already know well (by example) how a committer should behave.
If you are <em>not</em> familiar, you can always ask your <a href="pmc.html">PMC</a> for guidance.</p>
<h1 id="contributor license agreement # {#cla}">Contributor license agreement # {#cla}</h1>
<p>The very first thing you need to do is to complete and submit an <a href="../licenses/#clas">Individual
Contributor License Agreement</a> (ICLA). This is a formal
delcaration declaration of the terms under which you will contribute
intellectual property to the ASF.</p>
<p>You can send in the ICLA either by postal mail, fax or by emailing a scan of
the signed copy to <a href="mailto:secretary@apache.org">secretary@apache.org</a>.
Please ensure that it is clearly written. Your PMC will keep track to know
when the ICLA is received and recorded by the ASF Secretary (this might take time).</p>
<p>Note that you may need to hold discussions with your employer before
signing the agreement. Your employer might even need to provide a
<a href="../licenses/#clas">Corporate CLA</a> - determining that is your
responsibility. Also make sure that you keep up-to-date with this
requirement.</p>
<p>It is important to read and understand the agreements and strive to meet
the standards expected. Correct title to the source is of great importance
to ASF and it must be to you too. Some procedures may appear a little
bureaucratic, but they are there to protect you as well as ASF. For a clearer
understanding read the <a href="../licenses/">ASF license guide</a>.</p>
<p>Please take care to ensure that patches are original works which have been
clearly contributed to the ASF in public. In the case of any doubt (or when
a contribution with a more complex history is presented) please consult your
project PMC before committing it.</p>
<h1 id="before account creation">Before account creation</h1>
<p>You will also be asked for a preferred Apache user name. Please think also
of an alternative, in the case that the primary is unsuitable or taken.
Note that your user name must not contain punctuation. (<a href="http://people.apache.org/committer-index.html">This
list</a> may prove helpful).</p>
<p>The acceptance process may well take some time. The ASF is staffed by
volunteers working in their free time. It often takes some time for
requests to be processed and new accounts set up. Please be patient. You
will be informed when the process is complete (and your <a href="./pmc.html#chair">PMC chair</a>
will monitor the progress).</p>
<p>This quiet lull is a good time to familiarize yourself with the Apache
Software Foundation in general. Browse the <a href="../dev/">developer information</a>
and the <a href="../foundation/">Foundation website</a>. Remember, that the website is
being continually updated, so you should regularly visit these pages.</p>
<p>You will also need to familiarize yourself with some Apache policies and
procedures. Do not worry, this isn't as intimidating as it seems: you will
probably have learnt a lot by osmosis already. But it is important to know
where authoritative information is held when you need to consult it.
Unfortunately it is currently scattered. There is ongoing an effort to
bring it all together. What follows is a partial list:</p>
<p>If there is anything that you are not sure about, then just ask on the
"dev" list for your particular project.</p>
<ul>
<li>
<p><a href="index.html">ASF Developer Resources</a></p>
</li>
<li>
<p>the <a href="../foundation/how-it-works.html">ASF How it works</a> document</p>
</li>
<li>
<p>the <a href="http://incubator.apache.org/learn/">Incubator Learn</a> pages</p>
</li>
<li>
<p>the <a href="../foundation/bylaws.html">ASF Bylaws</a></p>
</li>
<li>
<p>and the ASF general <a href="http://wiki.apache.org/general">wiki</a>.</p>
</li>
</ul>
<h1 id="account creation">Account creation</h1>
<p>You will receive an email when your account has been created. (This may take
a week or two.)</p>
<p>There are a number of general things you need to do. These will be covered
in separate sections below. There may some other things that the particular
project requires, but you should be told of those by your fellow
committers.</p>
<p>Setting up the account at this time is convenient (since the logon needs to
be tested).</p>
<h1 id="setting up ssh # {#ssh-setup}">Setting up SSH # {#ssh-setup}</h1>
<p>We are not going to describe how to use ssh (there are plenty of good
<a href="user-ssh.html">tutorials</a> elsewhere).</p>
<p>All ASF servers require that you use a key based login. The first steps are to
generate the key on your local desktop (not on minotaur.apache.org) and then upload your
authorized keys to your Apache LDAP account. You can do this via the
<a href="https://id.apache.org">Apache Account Utility</a>.
Do not try to configure an authorized_keys file in your <code>~/.ssh</code> directory. It won't work.
Each line that would normally be in your authorized_keys should be added to your
Apache LDAP account via the <a href="https://id.apache.org">Apache Account Utility</a>.
You can add multiple lines.</p>
<p>Once you have configured your ssh client, you will be able to log onto your account at
minotaur.apache.org using ssh:</p>
<pre><code>$ ssh [username]@minotaur.apache.org
</code></pre>
<p>If you cannot login, you need to check (via the project PMC) that the
account has been created correctly. Please check your ssh configuration
first (do <code>ssh -e</code>).</p>
<p>If you use PuTTY then ensure that it is configured to force SSH v2
protocol. And use keyboard-interactive.</p>
<p>Once you are logged on, there are few tasks best performed right away.
Please take care when using your shell account.</p>
<p>You need to check that your <code>umask</code> is set in a group friendly fashion.
This ensures that the documents you create are editable by your fellow
committers. To do this, (depending on which shell you use) edit the
<code>.cshrc</code> file or <code>.profile</code> (sh derivatives) and ensure that the <code>umask</code>
is set as follows:</p>
<pre><code>:::shell
umask 002
</code></pre>
<p>You may find that a <code>umask</code> line already exists, in which case
it should be modified. Otherwise, a new line needs to be added. (You will
need to use a *nix command-line editor such as <code>vi</code>.) Tip: You can view the
files of some other committer, e.g. <code>ls -al ~mymentor; cat ~mymentor/.cshrc</code></p>
<h1 id="setting up email">Setting up email</h1>
<p>See these <a href="user-email.html">instructions</a>.</p>
<h1 id="subversion access and web sites">Subversion access and Web sites</h1>
<p>All the information you need is contained <a href="version-control.html">here</a>.</p>
<p>If your project has a page about the developers and committers, go right
ahead and add your name and information to it! Really. This is a great way
to make your first commit.</p>
<p>It also serves another purpose: you will learn how to add documentation to
your project's website and the technology used to build it. Documentation
is vital, and being able to improve the project's web site is a skill that
you will need. If your project has not documented how to rebuild the
website, then ask on your dev mailing list and use the answer to create a
document describing how to do that. It will be gratefully received!</p>
<p>Here are some general infrastructure notes about how to manage your
<a href="project-site.html">project website</a>.</p>
<h1 id="security and pgp">Security and PGP</h1>
<p>Security is vital and Apache pays great attention to it. Please remember
that at all times.</p>
<p>Security is vital and Apache pays great attention to it. Please remember
that at all times.</p>
<p><a href="http://www.openpgp.org/">OpenPGP</a> is a
<a href="http://www.ietf.org/rfc/rfc2440.txt">standard</a> which provides (amongst
other things) methods to create digital signatures for documents. These
documents could be emails or could be ASF releases. A variety of
applications exist which provide OpenPGP compatible signatures including
the well known <a href="http://www.gnupg.org/">GPG</a> and <a href="http://www.pgp.com/">PGP</a>.</p>
<p>It is recommended that you create a PGP key for your <code>apache.org</code> address now
(or add that address to an existing key, if you have one). <b>DO NOT</b> create
this key on minotaur.apache.org or any other machine to which multiple
users have access and <b>DO NOT</b>, ever, copy your private
key to people.apache.org or any other shared machine. Release managers need
to take particular <a href="/dev/release-signing.html#private-key-protection">care of keys used to sign releases</a>.</p>
<p>Upload the public key to a public key server (for example <a href="http://pgp.mit.edu/">MIT</a>).
Afterwards, add your keys' primary fingerprints to <a href="https://id.apache.org/">your LDAP
profile</a>; this will cause your to be added to the
individual and per-project pre-fetched KEYS files on
<a href="https://people.apache.org/keys/committer/">https://people.apache.org/keys/committer/</a>, and allow
automated tools to encrypt communications to you.
Start to build up a good
web of trust now before you need to use it in earnest. Be prepared to
exchange key information at any face-to-face events where ASF folks may be
present. The best practice is to insist on identification before signing
another's key. See <a href="http://www.apache.org/dev/release-signing.html#link-into-wot">signing guide</a> and
Henk's <a href="http://people.apache.org/%7Ehenkp/sig/pgp-key-signing.txt">Key Signing
HOWTO</a>.</p>
<p>Henk's <a href="http://home.apache.org/%7Ehenkp/">Apache home page</a> provides some useful information
related to the use of signatures both in general and specifically at
Apache. See also the <a href="http://www.apache.org/dev/release-signing.html">signing
guide</a>.</p>
<h1 id="other resources">Other resources</h1>
<p><a href="http://people.apache.org">Apache People</a> maintains public resources about
Apache committers.
<a href="http://people.apache.org/foaf/index.html">Participation</a> is easy but
optional. If you want to take part, now is a good time to add your details.</p>
<p>Although the Apache Way is to keep things as public as possible, there are
some resources here at Apache which are closed to those who are not
committers.</p>
<h1 id="committers-only subversion modules">Committers-only Subversion modules</h1>
<p>You should do a checkout of the private <code>committers</code> module. This is stored
in the subversion repository with url
<code>https://svn.apache.org/repos/private/committers</code>. (See
<a href="index.html#svn">notes</a> for those unfamiliar with subversion.)</p>
<p>Once you have checked out this module, you need to read all the documents
contained in the <code>docs</code> directory, especially the resources.txt file. There
are a number of private mailing lists you need to know about. Join in the
Apache community by signing up to every list that interests you. It is
better to sign up (even if you sign off later) than to miss out! Please
respect the usage guidelines for these private lists.</p>
<h1 id="community">Community</h1>
<p>The community makes Apache fun. The community list is a public
<a href="http://mail-archives.apache.org/mod_mbox/www-community/">readable</a> list
for topics that cut across <a href="pmc.html">PMC</a> boundaries. Discussions of all
kinds are on topic as long as the matter doesn't need to be sensitive or
confidential.</p>
<p>The <a href="http://labs.apache.org/">Apache Labs</a> project is open to all ASF
Committers (and only them).</p>
<p><a href="http://labs.apache.org/">Apache Labs</a> is a place for innovation where
committers of the foundation can experiment with new ideas. The aim is to
provide the necessary resource to promote and maintain the innovative power
within the Apache community without the burden of community building.</p>
<p>If you have an idea that you want to explore and collaborate on with other
committers then come and discuss it at <a href="http://labs.apache.org/">Labs</a>.
Even if you don't have anything at the moment, then come and take a look at
what other committers are working on.</p>
<h1 id="responsibilities">Responsibilities</h1>
<p>Join your project's commit mailing list if one exists (some projects send
all commit emails to the dev list).</p>
<p>Each committer has a responsibility to monitor the changes made for
potential issues, both coding and legal. If you spot any potential issues
in a commit, the right course of action is to post a reply (to the email)
raising your concerns to the dev list. In extreme situations, it may be
necessary to veto (-1) a commit but please beware that this is an extreme
sanction and rarely warranted.</p>
<p>Do not be surprised if your first commit has a delayed diff email. It needs
to go through the human moderators.</p>
<h1 id="apachecon">ApacheCon</h1>
<p>If you don't have one already, make a note in your diary about the next
<a href="http://www.apachecon.com/">ApacheCon</a>. This is a great opportunity to meet
other Apache folks, hack code and dream about great new open source
projects. Watch the lists as the conference dates approach for details
about special deals for committers and opportunities to speak.</p>
<h1 id="personal web space # {#personal-web-space}">Personal web space # {#personal-web-space}</h1>
<p>You might already be aware that some Apache folks have content served from
Apache web servers. For example, Henk and Vadim both provide
<a href="committers.html#statistics">statistics</a>. The server does not enforce rules
about appropriate content: committers should know how to behave! Most other
folks use it for Apache related content and some for interesting private
projects. If you do use it, please use it responsibly.</p>
<p>Material placed in the <code>public_html</code> directory will be available under
the <code><a href="http://home.apache.org/%7E*username*/">http://home.apache.org/~*username*/</a></code> url (where
<em>username</em> is your ASF account Id).</p>
<p>The following are NOT permitted to be hosted in your personal web space:</p>
<ul>
<li>Releases - These should be uploaded to <a href="https://dist.apache.org/repos/dist">https://dist.apache.org/repos/dist</a></li>
<li>Release candidates - These should be uploaded to <a href="https://dist.apache.org/repos/dist">https://dist.apache.org/repos/dist</a></li>
<li>Nightly builds - These should be hosted by <a href="https://ci.apache.org/">https://ci.apache.org/</a></li>
<li>Maven repositories - These should be hosted by <a href="https://repository.apache.org/">https://repository.apache.org/</a></li>
<li>Project documentation</li>
<li>Project data backups</li>
<li>Installation media for any software</li>
</ul>
<p>As a guide, your personal web space is not expected to exceed a few hundred MB. If it does, you may be required to justify to the infrastructure team why you require so much personal web space.</p>
<h1 id="identity theft">Identity theft</h1>
<p>Please be aware that Apache Software Foundation committers are targets for
identity theft. These spoof attacks resemble the
<a href="http://en.wikipedia.org/wiki/Phishing">phishing</a> attacks used to gain
access to bank accounts and other web subscriptions. They typically seek to
persuade you to enter your access details into a fake website.
The foundation will <strong>never</strong> solicit such 'verification'.</p>
<p>Leaking your access to Apache can have very destructive consequences.
<strong>Never</strong> disclose your ASF password to anyone.</p>
<p>The Apache team is clueful about DNS maintenance: do <strong>not</strong> trust any
redirection by IP address. Your access to Apache will be through the
machines serving the <code>svn.apache.org</code> and <code>git-wip.apache.org</code> domains. The
ssh/ssl fingerprints are <a href="machines">listed on the machines page</a>.</p>
<p>Please use caution. Do not hesitate to ask if you have doubts: post a
question to infrastructure before taking any action.</p>
<p><strong>Note:</strong> the fingerprint for the key used for ssh is different to the
fingerprint of the certificate used to <a href="version-control.html#cert">securely serve the
website</a>. A full list of fingerprints is maintained
on the <a href="machines">machines</a> page.</p>
<h1 id="unofficial resources">Unofficial resources</h1>
<p>If you like, get involved with unofficial resources open to ASF committers:</p>
<ul>
<li><a href="committers.html#planetapache">Join</a>
<a href="http://planet.apache.org/committers/">PlanetApache</a></li>
</ul>
<p>Please help to improve this document (see <a href="infra-site.html">guidelines</a> for
website update). <a href="infra-volunteer.html">Subscribe</a> to the Infrastructure
list if you want to discuss the improvements, or just to find out how the
good ship Apache is kept afloat (and to help).</p>
</div>
</div>
</div>
</div>
<!-- footer -->
<div class="row">
<div class="large-12 medium-12 columns">
<p style="font-style: italic; font-size: 0.8rem; text-align: center;">
Copyright 2020, <a href="https://www.apache.org/">The Apache Software Foundation</a>, Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>
Apache&reg; and the Apache feather logo are trademarks of The Apache Software Foundation...
</p>
</div>
</div>
<script src="/theme/js/vendor/jquery.js"></script>
<script src="/theme/js/vendor/what-input.js"></script>
<script src="/theme/js/vendor/foundation.js"></script>
<script src="/theme/js/app.js"></script>
</body>
</html>