You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by Apache Wiki <wi...@apache.org> on 2011/12/06 18:12:23 UTC
[Lucene-java Wiki] Update of "HowToContribute" by SteveRowe
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Lucene-java Wiki" for change notification.
The "HowToContribute" page has been changed by SteveRowe:
http://wiki.apache.org/lucene-java/HowToContribute?action=diff&rev1=32&rev2=33
= How to Contribute to Lucene =
+
+ <<TableOfContents>>
+
=== Getting the source code ===
- First of all, you need the Lucene source code.<<BR>>
+ First of all, you need the Lucene source code.
Get the source code on your local drive using [[http://svn.apache.org/viewvc/lucene/dev/|SVN]]. Most development is done on the "trunk":
{{{
svn checkout http://svn.apache.org/repos/asf/lucene/dev/trunk/ lucene-trunk
+ }}}
- }}}
Depending on where you are located the European mirror might be faster or slower:
{{{
@@ -29, +32 @@
But take care about the following points:
* Code compatibility:
- * All core code to be included in 2.X releases should be compatible with Java 1.4.
- * All contrib code should be compatible with either Java 5 or 1.4.
* All code to be included in 3.X releases should be compatible with Java 5.
- * All public classes and methods should have informative [[http://java.sun.com/j2se/javadoc/writingdoccomments/|Javadoc comments]].
+ * All code to be included in trunk, from which 4.0 will be released, should be compatible with Java 6.
+ * All public classes and methods should have informative [[http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html|Javadoc comments]].
* Code should be formatted according to [[http://java.sun.com/docs/codeconv/|Sun's conventions]] with one exception:
* indent two spaces per level, not four.
* Contributions should pass existing unit tests.
* New unit tests should be provided to demonstrate bugs and fixes (http://www.junit.org).
- * In the trunk, the java source code is in the directory src/java and the java test code is in the directory src/test.
+ * The java source code is in the directory lucene/src/java and the java test code is in the directory lucene/src/test.
=== Generating a patch ===
+ A "patch file" is the format that all good contributions come in. It bundles up everything that is being added, removed, or changed in your contribution.
+
==== Unit Tests ====
- To run your test case from ant use the following:
+ Please make sure that all unit tests succeed before constructing your patch.
+
+ To run your test case from ant use the following from the {{{lucene/}}} directory in your working copy:
{{{
- > cd lucene-trunk/lucene
- > ant -Dtestcase=NameOfYourUnitTest test-core
+ ant -Dtestcase=NameOfYourUnitTest test-core
}}}
+
In case your contribution fixes a bug, try and make your test case fail to show the presence of the bug. A test case showing the presence of a bug is also a good contribution by itself.
- Once your test case passes, please make sure that all unit tests (core, contrib, back-compatibility, and Solr tests) succeed before constructing your patch, by running this from the top-level:
+ Once your test case passes, please make sure that all unit tests (core, contrib, back-compatibility, and Solr tests) succeed before constructing your patch, by running this from the {{{lucene/}}} directory in your working copy:
{{{
- > cd lucene-trunk
- > ant clean test
+ ant clean test
}}}
+
After a while, if you see
{{{
BUILD SUCCESSFUL
}}}
+
all is ok, but if you see
{{{
BUILD FAILED
}}}
+
please, read carefully the errors messages and check your code.
Since running all test cases can take some time, after any change try running a previously failing single test case first.
@@ -75, +83 @@
{{{
svn stat
}}}
+
Add any new files with:
{{{
svn add src/.../MyNewClass.java
}}}
+
Edit the ''CHANGES.txt'' file, adding a description of your change, including the bug number it fixes.
In order to create a patch, just type:
{{{
- svn diff > LUCENE-NNN.patch
+ svn diff > LUCENE-NNNN.patch
}}}
- This will report all modifications done on Lucene sources on your local disk and save them into the ''LUCENE-NNN.patch'' file. Read the patch file. Make sure it includes ONLY the modifications required to fix a single issue.
- Note the ''LUCENE-NNN.patch'' patch file name. Please use this naming pattern when creating patches for uploading to JIRA. Once you create a new JIRA issue, note its name and use that name when naming your patch file. For example, if you are creating a patch for a JIRA issue named LUCENE-123, then name your patch filename LUCENE-123.patch. If you are creating a new version of an existing patch, use the existing patch's file name. JIRA will automatically "gray out" the old patch and clearly mark your newly uploaded patch as the latest.
+ This will report all modifications done on Lucene sources on your local disk and save them into the ''LUCENE-NNNN.patch'' file. Read the patch file. Make sure it includes ONLY the modifications required to fix a single issue.
+ Note the ''LUCENE-NNNN.patch'' patch file name. Please use this naming pattern when creating patches for uploading to JIRA. Once you create a new JIRA issue, note its name and use that name when naming your patch file. For example, if you are creating a patch for a JIRA issue named LUCENE-3456, then name your patch filename LUCENE-3456.patch. If you are creating a new version of an existing patch, use the existing patch's file name. JIRA will automatically "gray out" the old patch and clearly mark your newly uploaded patch as the latest.
+
- Please do not:
+ Please '''do not''':
* reformat code unrelated to the bug being fixed: formatting changes should be separate patches/commits.
* comment out code that is now obsolete: just remove it.
@@ -99, +110 @@
* make things public which are not required by end users.
* Add @author tags to your code. (Instead, give yourself credit in the CHANGES.txt file.)
- Please do:
+ Please '''do''':
* try to adhere to the coding style of files you edit;
* comment code whose function or rationale is not obvious;
@@ -108, +119 @@
=== Contributing your work ===
Finally, patches should be attached to a bug report in [[http://issues.apache.org/jira/browse/LUCENE|Jira]].
- Please be patient. Committers are busy people too. If no one responds to your patch after a few days, please make friendly reminders. Please incorporate other's suggestions into into your patch if you think they're reasonable. Finally, remember that even a patch that is not committed is useful to the community.
+ Please be patient. Committers are busy people too. If no one responds to your patch after a few days, please make friendly reminders. Please incorporate others' suggestions into into your patch if you think they're reasonable. Finally, remember that even a patch that is not committed is useful to the community.
== Stay involved ==
Contributors should join the [[http://lucene.apache.org/java/docs/mailinglists.html|Lucene mailing lists]]. In particular, the commit list (to see changes as they are made), the dev list (to join discussions of changes) and the user list (to help others).
@@ -119, +130 @@
The following resources may prove helpful when developing Lucene contributions. (These are not an endorsement of any specific development tools)
* [[http://people.apache.org/~rmuir/Eclipse-Lucene-Codestyle.xml|Eclipse Galileo codestyle.xml file for Lucene's coding conventions]]
- * [[attachment:Intellij-Lucene-Codestyle.xml|IntelliJ IDEA codestyle.xml file for Lucene's coding conventions]]
* Setting up the .classpath - copy the contents of [[attachment:eclipse.lucene.classpath|this]] file to your project's .classpath file. Note that you may need to change the location of ant.jar.
* IntelliJ, Eclipse, Maven: information for both Lucene and SOLR can be found at [[http://wiki.apache.org/solr/HowToContribute#Development_Environment_Tips|SOLR How To Contribute]]
* Additional information on [[RunningTests|running tests]].
+ == Getting your feet wet: where to begin? ==
+
+ New to Lucene? Want to find JIRA issues that you can work on without taking on the whole world?
+
+ The Lucene/Solr developers use the "newdev" label to mark issues that developers new to Lucene might be interested in working on. The rough criteria used to make this selection are:
+
+ * Nobody has done any work on the issue yet.
+ * The issue is likely not controversial.
+ * The issue is likely self-contained with limited scope.
+
+ To see a list of open Lucene and Solr issues with the newdev label, use the JIRA query [[https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&jqlQuery=%28project%3DSOLR+OR+project%3DLUCENE%29+AND+%28status%3DOPEN+OR+status%3DREOPENED%29+AND+labels%3Dnewdev|(project=SOLR OR project=LUCENE) AND (status=OPEN OR status=REOPENED) AND labels=newdev]]
+
+ '''Note:''' Fixing these issues may require asking questions on the developer list to figure out what they mean - there is no guarantee that any of these will be either quick or easy.
+