
CONTRIBUTING
============

INBOUND LICENSE
---------------

Contributions are governed by the license that applies to relevant
specific file or by the license specified in the COPYING file, that
governs the license of its containing directory and its subdirectories.

Most of the Xen Project code is licensed under GPLv2, but a number of
directories are primarily licensed under different licenses.

Most notably:
 - tools/libs         : LGPL v2.1
 - tools/libxc        : LGPL v2.1
 - tools/libxl        : LGPL v2.1
 - tools/xl           : LGPL v2.1
 - xen/include/public : MIT license

See LICENSES/ for a list of licenses and SPDX tags currently used.

When creating new components, new files, or importing code please follow
the conventions outlined below. As a general rule, whenever code using a
license other than GPLv2 is introduced, attention must be drawn to the
difference, such that maintainers can make an informed decision about the
deviation. Any new code must be GPLv2 compatible.

New components
--------------

When creating new components and directories that contain a
significant amount of files that are licensed under licenses other
than GPLv2 or the license specified in the COPYING file, please
create a new COPYING file in that directory containing the SPDX tag
and a rationale for using a different license. This helps ensure that
the license of this new component/directory is maintained consistently
with the original intention.

New files
---------

New files should start with a single-line SPDX comment to express the
license. For instance, if the file is GPLv2, the comment would look
like:

/* SPDX-License-Identifier... */

The recommended license of a directory will depend on the COPYING file.
If the new file is using a different license, this should be highlighted
and discussed in the commit message or cover letter introducing the
file.

See LICENSES/ for a list of licenses and SPDX tags currently used.

Importing code
--------------

When importing code from other upstream projects into this repository,
please create a README.source file in the directory the code is imported
to, listing the original source of the code. An example can be found at
m4/README.source

Developer's Certificate of Origin
---------------------------------

All patches to the Xen Project code base must include the line
"Signed-off-by: your_name <your_email>" at the end of the change
description. This is required and indicates that you certify the patch
under the "Developer's Certificate of Origin" which states:

  Developer's Certificate of Origin 1.1

  By making a contribution to this project, I certify that:

  (a) The contribution was created in whole or in part by me and I
      have the right to submit it under the open source license
      indicated in the file; or

  (b) The contribution is based upon previous work that, to the best
      of my knowledge, is covered under an appropriate open source
      license and I have the right under that license to submit that
      work with modifications, whether created in whole or in part
      by me, under the same open source license (unless I am
      permitted to submit under a different license), as indicated
      in the file; or

  (c) The contribution was provided directly to me by some other
      person who certified (a), (b) or (c) and I have not modified
      it.

  (d) I understand and agree that this project and the contribution
      are public and that a record of the contribution (including all
      personal information I submit with it, including my sign-off) is
      maintained indefinitely and may be redistributed consistent with
      this project or the open source license(s) involved.

GOVERNANCE AND WORKFLOW
-----------------------

The following documents provide a general overview of governance and
contribution guidelines for the Xen Project:
 - https://xenproject.org/governance.html
 - https://xenproject.org/help/contribution-guidelines.html

For more information on contributing to this repository, see
 - CODING_STYLE file in this directory
 - https://wiki.xenproject.org/wiki/Submitting_Xen_Project_Patches
 - https://wiki.xenproject.org/wiki/Submitting_Xen_Patches_with_Git
 - https://wiki.xenproject.org/wiki/Asking_Developer_Questions
 - https://wiki.xenproject.org/wiki/Category:Developers


