#summary Guidelines for contributing to Melange
#labels Contents-Complete,Phase-Guidelines,Importance-Useful

The [MelangeIntro Melange project] has a variety of opportunities for the
community to contribute, including:

 * [http://code.google.com/p/soc/issues/entry Filing an issue] reporting a defect or requesting a new feature
 * Contributing a change to Melange's code implementing new behavior

Each of these contributions is subject to review by other members of the
Melange community.  The guidelines for the review of various types of
contributions are described here.

== CLA ==

<h4>All contributors must [ContributorLicenseAgreements sign the CLA] before we can accept their contributions.<h4>

== Committers ==

Committers in the Melange community are those individuals who have been
made project members or project owners in the
[http://code.google.com/p/soc/ SoC project] on
[http://code.google.com Google Code].  These individuals have been given
commit privileges as a result of their previous contributions to the
Melange community, usually in the form of
[ContributionReviews#Patches patches].  These individuals are the
"gatekeepers" of the community, helping to insure that standards such
as [PythonStyleGuide programming style] and
[TestingGuidelines testing] that are important to the community as a
whole are adhered to by each contributor and for each contribution.

<wiki:comment>
Each committer will:

 * be a project member (or possibly project owner) at http://code.google.com/p/soc/
 * be a [MailingListsGuidelines#Developer_list developer mailing list] manager (or possibly list owner) at http://groups.google.com/group/melange-soc-dev
 * have an account at at [http://mail.google.com/a/googleopensourceprograms.com googleopensourceprograms.com]
 * be able to [ContributionReviews#Using_Rietveld_for_code_reviews conduct code reviews] at http://codereviews.googleopensourceprograms.com/
 * have `ACCESS` template `VOP` (`AUTOVOICE`) in the [IrcChannelGuidelines `#melange` IRC channel]
</wiki:comment>

=== Casual contributors ===

Casual developers can contribute to the [MelangeIntro Melange project]
primarily through the [ContributionReviews#Patches patch process]
described below.  Casual contributors still need to agree to the
[ContributionTerms guidelines for contributors] before their patch
can be accepted and commmitted by a
[ContributionReviews#Committer committer].

== Code reviews ==

Code reviews are handled in a variety of ways, depending on the size of
the change and the role of the contributor in the Melange community.  Most
contributions will be in the form of small
[ContributionReviews#Suggested_patches_from_casual_contributors patches] and
[ContributionReviews#Reviews_after_committed_patches commits]. Larger
contributions, such as entire new features, probably require a different
approach, such as incremental patches and communication with the other 
developers.  These have similar review approaches, but tailored to the 
specific situation.

=== Code changes should be atomic ===

The commit of a source code change should result in a source repository
where the software [BuildingMelange builds] and passes any existing
[TestingGuidelines tests].  So, all related changes need to be committed
in such a way that each patch passes the test suite.  That usually means
that new functionality is introduced in one patch, 'enabled' in another one,
and the old functionality removed in a third one.

=== Patches ===

The term "patches" is used to refer to relatively small changes to the
code (and, yes, this definition is intentionally vague).

Patches should be sent for review via our [Gerrit] instance.

=== Patchfiles ===

It is prefered that all Patches be sent via Gerrit, but if you need to
create a traditional Patchfile, you can follow these instructions:

Usually these
are in the form of output from the `git diff` command.

Patches should be sent for review to the
[MailingListsGuidelines#Developer_list developer mailing list] and
presented in the "unified `diff`" format, which is de-facto standard
for many tools and the output from the `git diff` command (the same
format as that produced by `diff -uNr`).  Using Git:

{{{
git diff --no-prefix > your-patch-name.patch
}}}

The reviewer can then apply the patch using something like:

{{{
patch -p0 < your-patch-name.patch
}}}

==== Patch emails ====

Patch emails sent to the developer mailing list should begin with
`[PATCH]` as the first text in the email subject line, followed by a
brief (one line) description of the change.

For "small" patches (for some definition of "small", please use good
judgment), include the diff in the email body, to facilitate inline
commenting in the code review email thread.  For _all_ patches, including
both "small" and "non small" ones, include the diff itself as an email
attachment, to make it easier for reviewers to patch the change into a
working copy with `patch`.  Such a diff attachment can be produced with
the methods described above.

<wiki:comment>
==== Suggested patches from casual contributors ====

The Melange community is interested in patches and other contributions
from casual developers.  To that end, casual developers can submit
patches for review in a couple of ways:

 * attach a patch to an [http://code.google.com/p/soc/issues/list issue in the issue tracker]
 * mailing a patch to the [MailingListsGuidelines#Developer_list developer mailing list] (membership in the list is required to post to it; see the [MailingListsGuidelines#Developer_list list guidelines])

Committers can then discuss the contribution with the author on the
[MailingListsGuidelines#Developer_list developer mailing list], or on the
[MailingListsGuidelines#General_discussion_list general discussion list]
if the contributor is not on the developer list.  Since the
[MelangeIntro Melange project] and the [SoCOverview SoC framework] is mostly
about code, there are likely to be at least a few code discussions on the
general announcement list.  Serious discussions will likely result in the
casual contributor being invited to the developer list to move the discussion
there.

Once the patch is accepted, a committer will patch a working copy and commit
the changed (or added or deleted) source files to the repository,
supplying a suitable commit log message.
</wiki:comment>

==== Code Review ====

Code review happens in the [Gerrit] system.

All patches need a +2 from a Comitter before they can be submitted.

<wiki:comment>
==== Reviews after committed patches ====

Contributors with [ContributionReviews#Committers commit access] can submit
changes prior to review.  The participants on the
[MailingListsGuidelines#Developer_list developer mailing list] are then
encouraged to review the change, which will be present in the commit
email that was sent to the mailing list.  At least one other person with
commit access should acknowledge the change with a brief "looks good to me" (LGTM)
message in response (sent back to the list).  This does of course not prevent
other list participants from being able to make suggestions, request
changes, etc.

If one or more of the list participants requests changes to the submitted
code, they can either discuss it and have the original committer submit a
subsequent change, or the they can make the change themselves.  Please
avoid conflict by trying to reach a consensus before making commits.  One
way to do this is to
[ContributionReviews#Patches follow the patch contribution method] for
reviewing a change on the developer mailing list, even if the contributor
has commit access.

===== Review after commit using Google Code code reviews =====

Google Code now has a feature that enables
[http://code.google.com/p/support/wiki/CodeReviews code reviews of committed code].
This feature can also be used by project owners and members to do review-after-commit
style code reviews.

</wiki:comment>

=== Committing ===

Once all of the
[TestingGuidelines#All_changes_should_pass_smoke_tests_before_review
pre-commit tests] pass *and* the [ContributionReviews#Patches patch
has been code-reviewed] a [ContributionReviews#Committers committer]
(who may or
[ContributionReviews#Suggested_patches_from_casual_contributors may
not] be the actual contributor), the submit button in [Gerrit] or `git
merge && git push` can be used to commit the change into the
[http://code.google.com/p/soc/source/browse SoC project repository].

==== commit messages ====

Committers should use the template below for `git commit` log messages:

{{{
One line, under 68 characters giving a short description of the change

After a blank line, a more detailed log message explaining the reason
of the change (not necessarily what was changed, as that can be seen
by readin the patch). Please wrap your lines at 70 characters again.
}}}

If committing contributor patch (outside of Gerrit) please include:

{{{
Reviewed by: Rick Reviewer
}}}

Note that previously the person listed with "Patch by:" was the
contributor (that is, author) of the patch, however we have switched
to Git and now we are committing patch from contributors as if
they would have commit access using command:

{{{
git commit -u "FirstName LastName <somebody@example.com>"
}}}

Patches from
[ContributionReviews#Suggested_patches_from_casual_contributors casual
contributors] will, by definition, need to be committed by someone
other than the author but Git repository history will indicate
contributor as committer.

== Documentation ==

Code files should include enough internal documentation in the form of
`__doc__` strings, comments and functions with self-explanatory names
(see PythonStyleGuide) that the automatic documentation suffices.
This is the recommended way to ensure that code documentation and the
code itself stay in step.

The wiki is in the transition zone between dialog (IRC and mailing
lists) and formally reviewed content (code and its comments).  Changes
to the wiki are 'review after commit'.  Any committer can log comments
for a wiki page and participate in review.  At the moment rights to
create pages and edit pages directly are restricted to committers and
regular contributors to documentation.

----
_Copyright 2008 Google Inc._
_This work is licensed under a_
[http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
