===========================
Contributing to Apache Lucy
===========================

MAKE A PLAN:

  If you're looking for something to work on, see the STATUS file for a list
  of development priorities that the Lucy community has already built
  consensus around.

  If you propose to make non-trivial changes to Lucy, especially changes to
  the public API, send a note to the Lucy developer's list describing your
  plans:

    http://lucy.apache.org/mailing_lists.html
  
GET THE CODE:

  Lucy's codebase is available via Git from git.apache.org.  Start by creating
  a clone of the repository:

    # Non Committers
    git clone http://git-wip-us.apache.org/repos/asf/lucy.git

    # Committers
    git clone https://git-wip-us.apache.org/repos/asf/lucy.git

  There is also a mirror on Github.

    https://github.com/apache/lucy

MAKE CHANGES:

  Edit the source code as you see fit, then follow the instructions in INSTALL
  to build Lucy and run its test suite.

  Please bear the following in mind:

    * All code will eventually need to be portable to multiple operating
      systems and compilers. (This is a complex requirement and it should not
      block your contribution.)
    * All public APIs must be documented.
    * Code should be formatted according to the style guidelines at
      <http://wiki.apache.org/lucy/LucyStyleGuide>.
    * All unit tests must pass.
    * New code needs to be accompanied by new unit tests.
    * Simplicity, both in terms of API and implementation, is highly valued
      within the Lucy development community; the simpler the contribution, the
      more quickly it can be reviewed and integrated. 

GENERATE A PATCH:

  The easiest way to create a patch with Git is to capture the output of
  `git diff`:

    git diff > my_changes.patch

  More experienced Git users may wish to generate patch sequences using
  `git format-patch`.

CONTRIBUTE YOUR PATCH

  Lucy's issue-tracker/bug-tracker installation runs Atlassian JIRA and we
  generally use the term "issue" rather than "bug" because not every
  contribution fixes a "bug".
  
     https://issues.apache.org/jira/browse/LUCY
  
  1. Create a JIRA account for yourself and sign in.
  2. Once you have signed in, the "create new issue" link will appear.  Either
     use it to open a new issue or navigate to an existing one as appropriate.
  3. Attach your patch to the issue using the menu command
     'More Actions > Attach Files'.

  Attaching a file to an issue causes an email notification to be sent to the
  lucy-issues list signalling that a patch has arrived.  Please be patient but
  persistent while engaging with the Lucy committers who review and apply such
  patches.

GITHUB PULL REQUESTS

  At this time, we have no way to accept pull requests for the Github
  read-only mirror, so please use the JIRA patch submission process.

