Contributing
The Source
From September 2011, The Grinder source code and documentation is hosted in a Git repository. You can obtain a copy from Sourceforge.
Note, the documentation branch (docs) refers to the latest
released version of The Grinder, and so can lag the Git
HEAD
.
What do I need to build The Grinder?
If you want to build The Grinder from source, you'll need:
Java Standard Edition 6 ("Java 6") or higher | |
Apache Maven 3.0.3 |
Dependencies on third party libraries are managed by Maven.
What do I need to test and package The Grinder?
The following optional packages are necessary to run The Grinder unit tests.
Jython 2.1, 2.5.0, 2.5.1, 2.5.2 | to verify The Grinder works with alternative Jython versions |
How to give back
If you feel you have something worth sharing, please first
discuss your ideas on the grinder-development list. If
your ideas develop into code, you can submit patches to this list.
Patches should be generated using git format-patch -M -B
against either the latest released version of The Grinder 3, or the
Git master
branch. Patches should also include updates
to the relevant documentation sources. Please include a statement in
your email that you, and where appropriate your employer, are happy
for your work to be distributed under the terms of The Grinder license.
Coding Standards
Contributions of Java code should be checked with the
FindBugs static analysis tool, and pass with no
warnings. A FindBugs filter file for The Grinder can be found in the
etc
directory.
I actively track code coverage, and expect full JUnit tests for new code. I use Clover; you can get a free Clover license for development of The Grinder.
I have a strong preference for classes that take all the things they need as parameters to their constructors (like constructor injection), and for contracts to be specified in terms of Java interfaces. This makes unit testing easier, and forces the developer to think about the purpose and contract of each class.
Please pay attention to the existing coding style of The Grinder.
There is a Checkstyle configuration
file for The Grinder in etc
which you should use to
check the formatting of your code. You can do this using the
checkstyle:checkstyle
Maven goal. Checkstyle helps to
make the code readable, catches quite a few silly errors, and makes
applying patches a much nicer experience. Patches that do not pass
the Checkstyle rules will be rejected.
Documentation help wanted
Documentation can always be improved. Tutorials and examples from users of The Grinder are always welcome. Please mail suggestions, corrections, and improvements to the grinder-development@lists.sourceforge.net mailing list.
The Subversion repository for The Grinder documentation is public. Authors who have made valuable contributions can ask for check-in rights via the grinder-development@lists.sourceforge.net mailing list.
Internationalisation help wanted
If you are bilingual you might fancy translating the console into a language of your choice. Jose Antonio Zapta Rey did just this and produced a Spanish translation.

This translation will be automaically be the default for users
with their locale set correctly for the Spanish language. If your
locale is set otherwise and you are curious to try this out,
specify the Java user.language
system property.
Bertrand Ave produced a translation for French speaking
users (user.language="fr"
), Huibert Alblas
produced a German translation (user.language="de"
),
and Italian, Polish, Russian, and Chinese translations have since followed.
How to provide or update a translation
The translation properties files are stored in
the source repository. Getting the file directly from the
repository will make your translation is as up to date as
possible, and avoid duplicating effort. The definition of all
English text used by the console is contained in the
Console.properties
file. Individual translations
are contained in Console_XX.properties
where XX is
the two letter ISO 639 language
code. For example, the Spanish translation is contained in
Console_es.properties
. If you want to update an
existing translation, make a copy of the file. If you want to
create a new translation, create a new file.
Use a text editor to edit your file. Existing translations
will guide you as to which properties you need to translate.
You should only include properties that have translated text.
Don't include properties such as scriptTab.image
that refer to images, or properties that refer to logical names
such as action.menu
.
To test your file before contributing it, place the file in a
directory structure matching
translation/net/grinder/console/swingui/resources
and add
the translation
directory to the start of the
CLASSPATH
that you use to start the console. You
may need to set user.language
as described
above. The Grinder is being actively developed, and you will not be
able to test new translation properties added since the last
release without building the latest source from the repository.
If you can't find the time for this, an untested translation is better
than no translation.
Post your translation to the grinder-development list, stating the git hash of the revision upon which it was based. Please also include a statement that you are happy for your work to be distributed under the terms of The Grinder license.
Writing software that depends on The Grinder
There are many projects that build upon, or otherwise complement, the features provided by The Grinder. Some of these are referenced from the links page.
On release, The Grinder jar files are deployed to the Sonatype OSS Nexus repository, and will be synchronised to Maven Central soon afterwards.