This document contains the LLVM Developer Policy which defines the
+ project's policy towards developer's and their contributions. The intent of
+ this policy is to eliminate mis-communication, rework, and confusion that
+ might arise from the distributed nature of LLVM's development. By stating
+ the policy in clear terms, we hope each developer can know ahead of time
+ what to expect when making LLVM contributions.
A change or set of changes, whether by
+ patch or commit, that are
+ related by a single common purpose. Increments are atomic as they
+ leave LLVM in a stable state (both compiling and working properly).
We address here the issues of copyright and license for the LLVM project.
+ A copyright is literally the "right to copy". It is a set of exclusive rights
+ granted to a party regulating the particular expression of information.
+ In this case, the information is LLVM. A license is something granted by a
+ copyright holder to other parties that controls the use of the information
+ by them. Currently, the University of Illinois is the LLVM copyright holder
+ and the terms of its license to LLVM users and developers is the
+ University of Illinois Open Source License (see LICENSE.txt).
The LLVM project believes in correct attribution of contributions to
+ their contributors. Developers should, therefore, place their name at the
+ top of any source file they originate and list their contributions in the
+ CREDITS.TXT file. Furthermore, correct attribution of submitted patches
+ should be made in the commit comments.
+
However, for consistency and ease of management, the project requires the
+ copyright for all LLVM software to be held by a single copyright holder.
+ Although UIUC may assign the copyright of the software to another entity,
+ the intent for the project is to always have a single entity hold the copy
+ rights to LLVM at any given time.
+
Having multiple copyright holders for various portions of LLVM is
+ problematic in the management of the software. Having a single copyright
+ holder is in the best interests of all developers and users as it greatly
+ reduces the managerial burden for any kind of administrative or technical
+ decisions about LLVM.
LLVM licensing decisions will be made by the LLVM Oversight Group. Any
+ issues, comments or suggestions with the licensing should be sent to
+ oversight@llvm.org.
+
The LLVM Oversight Group intends to keep LLVM perpetually open source
+ and to use liberal open source licenses. The current license is the
+ University of Illinois Open Source License (see LICENSE.TXT), which boils
+ down to this:
+
+
You can freely distribute LLVM.
+
You must retain the copyright notice if you redistribute.
+
Binaries derived from LLVM must reproduce the copyright notice.
+
You can't use our names to promote your LLVM derived products.
+
There's no warranty on LLVM at all.
+
+
We believe this fosters the widest adoption of LLVM because it allows
+ commercial products to be derived from LLVM with few restrictions and
+ without a requirement for making any derived works also open source. The
+ intent of the license is to let people use LLVM freely with only the
+ obligation to be honest about where it came from.
Developers should stay informed by reading at least the
+ llvmdev email list. If you are doing
+ anything more than just casual work on LLVM, it is highly suggested that you
+ also subscribe to the llvm-commits list and pay attention to changes being
+ made by others.
+
Active developers must register an email account with bugzilla
+ (http://llvm.org/bugs/) and preferably
+ subscribe to the llvm-bugs email list to keep track of bugs occuring in
+ LLVM.
When a developer begins new work with the aim of contributing it back to
+ LLVM, s/he must inform the community with an email to llvm-dev email list,
+ to the extent possible. The reason for this is to:
+
+
keep the community informed about future changes to LLVM,
+
avoid duplication of effort by having multiple parties working on the
+ same thing and not knowing about it, and
+
ensure that any issues around the proposed work are discussed and
+ resolved before any significant work is accomplished.
LLVM has a code review policy. Code review is an excellent way to ensure
+ high quality in the software. The following policies apply:
+
+
All developers are required to have any significant changes reviewed
+ before they are committed to the repository.
+
Code reviews are conducted by email.
+
Code can be reviewed either before it is committed or after.
+
The developer responsible for a code change is also responsible for
+ making all necessary review changes.
+
Developers should participate in code reviews as both a reviewer and
+ a reviewee. We don't have a dedicated team of reviewers. If someone is
+ kind enough to review your code, you should return the favor for someone
+ else.
LLVM uses an incremental development style and all developers are expected
+ to follow this practice. Incremental development is a big key to LLVM's
+ success and it is essential that developers submit incremental patches. The
+ following defines the incremental development approach:
+
+
The first task is to define the increment and get consensus (with the
+ LLVM development community) on what the end goal of the change is. Making
+ random small changes that go nowhere is not useful for anyone.
+
An increment is the smallest patch size necessary to effect one change
+ in LLVM.
+
Increments can be stand alone (e.g. to fix a bug), or part of a planned
+ series of increments towards some development goal.
+
Increments should be kept as small as possible. This simplifies your
+ work (into a logical progression), simplifies code review and reduces the
+ chance that you will get negative feedback on the change. Small increments
+ also facilitate the maintenance of a high quality code base.
Code must compile cleanly (no errors, no warnings) on at least one
+ platform.
+
Code must pass the deja gnu (llvm/test) test suite.
+
+
+
Additionally, the committer is responsible for all of the following items.
+ It is considered significantly preferable for all of these items to be
+ accounted for before the code is submitted for review or committed.
+
+
Code must compile cleanly on all platforms.
+
Code must pass the llvm-test test suite including
+ SPEC CINT2000, SPEC CFP2000, SPEC CINT2006, and SPEC CFP2006.
+
The changesat must not cause performance or correctness regressions
+ for the LLVM tools.
+
The changes must not cause performance or correctness regressions in
+ code compiled with LLVM on all applicable targets.
Developers are required to create test cases for regressions and new
+ features and include them with their changes. The following policies
+ apply:
+
+
All feature and regression test cases must be added to the
+ llvm/test directory. The appropriate subdirectory should be
+ selected (see the Testing Guide for
+ details.
+
Test cases should be written in LLVM assembly language unless the
+ feature or regression being tested requires another language.
+
Test cases, especially for regressions, should be as reduced as
+ possible, preferably by
+ bugpoint. It is unacceptable
+ to place an entire failing program into llvm/test as this creates
+ a time-to-test burden on all developers. Keep them short!
+
More extensive test cases (applications, benchmarks, etc.) should be
+ added to the llvm-test test suite, after approval from the
+ Oversight Group. This test suite is for coverage not features or
+ regressions.
When submitting a patch, developers must follow these rules:
+
+
Patches must be made against the CVS HEAD (main development trunk),
+ not a branch.
+
Patches must be made with this cvs command:
+ cvs diff -Ntdup -5
or with the utility utils/mkpatch.
+
Patches must not include differences in generated code such as the
+ code generated by flex, bison or tblgen. The
+ utils/mkpatch utility takes care of this for you.
When a patch is ready to be submitted, these policies apply:
+
+
Patches should be submitted immediately after they are generated. Stale
+ patches are unlikely to apply correctly and could be rejected simply due to
+ age.
+
Patches must be submitted by e-mail to the
+
+ llvm-commits list.
After a patch has been submitted, these policies apply:
+
+
The patch is subject to review by anyone on the llvm-commits email list.
+
+
Any changes recommended by the reviewer must be made by the submitter
+ of the patch and the patch re-submitted.
+
If the submitter believes the review comment is in error, a response to
+ the
+ llvm-commits list should be made explaining why the recommendation
+ cannot be followed.
For those who have recently obtained commit access, the following policies
+ apply:
+
+
You are granted commit-after-approval to all parts of LLVM.
+ To get approval, submit a patch to llvm-commits per the patch policies
+ above. When approved you may commit it yourself.
+
You are granted commit-without-approavl to those portions of LLVM
+ that you own (contributed) or maintain (have been assigned responsibility
+ for), with the proviso that such commits must not break the build. This is
+ a "trust but verify" policy and commits of this nature are reviewed after
+ they are committed.
+
Commits that violate the quality standards may
+ be reverted. This is necessary when the change blocks other developers from
+ making progress. The developers is welcome to re-commit the change after
+ the problem has been fixed.
+
Multiple violations of these policies or a single aggregious violation
+ may cause commit access to be revoked, at the sole discretion of the
+ LLVM Oversight Group.