<html>
<head>
  <style media="all">
    pre {
      background: #f2f2f2;
      padding: 1em;
    }

    body {
      max-width: 40em;
      padding: 3em;
    }
    ol {
    }

    li {
      padding: 0;
      margin: 1em;
    }

  </style>
  <style media="print">
    body {
      max-width: 1000em;
      padding: 1em;
    }
    pre {
      background: #fff;
      padding: 1em;
    }
    iframe { display: none; }
    #signelectronically { display: none; }
  </style>
</head>

<body>

<h1>NodeJS</h1>
<h2>Contributor License Agreement (&quot;Agreement&quot;)</h2>


<p>
Thank you for your interest in the NodeJS open source
project being administered by Joyent, Inc , dba NodeJS
(&quot;NodeJS&quot;). The form of license below is a document that
clarifies the terms under which You, the person listed
below, may contribute software, bug fixes, configuration
changes, documentation, or any other materials that you send
to us related to the Project (each a &quot;Contribution&quot;) to the
project.  We appreciate your participation in our project,
and your help in improving the project, so we want you to
understand what will be done with the Contributions.  This
license is for your protection as well as the protection of
NodeJS and its licensees; it does not change your rights to
use your own Contributions for any other purpose.  Please
complete the following information about you and the
Contributions and sign electronically by filling out the form
below.

<p>
If you have questions about these terms, please contact us
at isaacs@joyent.com.


<h3>Corporate Contributions:</h3>

<p>
If you are employed as a software engineer, or if your
employer is in the business of developing software, or
otherwise may claim rights in the Contributions, please
provide information about your employer's policy on
contributing to open source projects, including the name of
the supervisor to contact in connection with such
contributions.


<h3>You and NodeJS agree:</h3>

<ol>

<li>
You grant us the ability to use the Contributions in any
way.  You hereby grant to NodeJS, a non-exclusive,
irrevocable, worldwide, royalty-free, sublicenseable,
transferable license under all of Your relevant intellectual
property rights (including copyright, patent, and any other
rights), to use, copy, prepare derivative works of,
distribute and publicly perform and display the
Contributions on any licensing terms, including without
limitation: (a) open source licenses like the GNU General
Public License (GPL), the GNU Lesser General Public License
(LGPL), the Common Public License, or the Berkeley Software
Distribution license (BSD); and (b) binary, proprietary, or
commercial licenses.  Except for the licenses granted
herein, You reserve all right, title, and interest in and to
the Contribution.

<li>
You are able to grant us these rights.  You represent
that You are legally entitled to grant the above license.
If Your employer has rights to intellectual property that
You create, You represent that You have received permission
to make the Contributions on behalf of that employer, or
that Your employer has waived such rights for the
Contributions.

<li>
The Contributions are your original work.  You represent
that the Contributions are Your original works of
authorship, and to Your knowledge, no other person claims,
or has the right to claim, any right in any invention or
patent related to the Contributions.  You also represent
that You are not legally obligated, whether by entering into
an agreement or otherwise, in any way that conflicts with
the terms of this license.  For example, if you have signed
an agreement requiring you to assign the intellectual
property rights in the Contributions to an employer or
customer, that would conflict with the terms of this
license.

<li>
We determine the code that is in our project.  You
understand that the decision to include the Contribution in
any project or source repository is entirely that of NodeJS,
and this agreement does not guarantee that the Contributions
will be included in any product.

<li>
No Implied Warranties.  NodeJS acknowledges that, except
as explicitly described in this Agreement, the Contribution
is provided on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED,
INCLUDING, WITHOUT   LIMITATION, ANY WARRANTIES OR
CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR
FITNESS FOR A PARTICULAR PURPOSE.
</ol>

</div>


<h2 id="signelectronically">Sign Electronically</h2>

<iframe
  src="http://spreadsheets.google.com/embeddedform?formkey=dFhpTW5kWUtUVG1DTUpHOGR5U2VXNXc6MQ"
  width="760" height="1240" frameborder="0" marginheight="0"
  marginwidth="0">Loading...</iframe>


<p>As an alternative to electronic signing, you may also print
the document and send the original to:

<p>
Joyent, Inc <br/>
One Embarcadero Center, 9th Floor<br/>
San Francisco, CA 94111<br/>
U.S.A.

<p>
Scanned agreements may also be emailed in PDF format to
isaacs@joyent.com. You should also keep a copy for your own
records.

<pre>
Full name: _________________________________________________

Mailing Address: ___________________________________________

____________________________________________________________

Country:   _________________________________________________

Telephone: _________________________________________________

Facsimile: _________________________________________________

E-Mail:    _________________________________________________

Employer:  _________________________________________________

Employer Contact:   ________________________________________

Employer Open Source Contribution Policy:  _________________

____________________________________________________________

____________________________________________________________

Please sign: _______________________________________________

Date: ______________________________________________________
</pre>
</body>
</html>
