How to Contribute

Your first pull request

First, thank you - Let's work together and make something cool!

First Steps

  • Star the AndHow project on GitHub. This shameless bit of promotion raises the profile of AndHow a bit and may help others become contributors.

  • If you are unfamiliar with the project, read through the home page (4 minute read).

Work from the main branch

  • The main branch is the branch to work from: branch from it, make PRs to it

  • The homepage branch is the default branch displayed on GitHub

This can be confusing because most projects use main as the default branch, but there are advantages to this structure.

Typical Task / Issue workflow

AndHow uses the typical feature branch repository strategy (aka fork-and-branch), where developers work on a branch in their own repository. Basically:

  • Fork the AndHow project on GitHub

  • Clone from your fork to your local machine to work on it

  • Work on a task in a new branch created just for that task - create the branch from your main

  • Submit completed work (or work in progress for review) as a Pull Request to main of the canonical repository

Feature branch names should look like this: Issue123-A-short-name-for-the-issue

If that is all new to you, here is a bit of help with a first git checkout.

Unit Testing

As a contributor, please:

  • Write tests for new functionality at or new 100% test coverage

  • Write tests for untested code if you are modifying it

...and always feel free to contribute tests for untested or poorly tested code

Code style

  • This project uses tabs for indentation. If you are working on a file that is not tab indented, please convert it to tabs (but don't do other files).

  • Add complete Javadocs for new methods and classes (other than test classes unless needed)

  • Good javadocs comments what and why. We usually don't need comments on how.

More help getting started

Workstation setup is typical for Java development, but there is a New Workstation setup page if you need additional help, or post a question on the forum.

Working well together

One of the joys of a project like this is collaborating with others. Collaboration is more than completing issues, it is discussing ideas, asking questions, learning, discovering something new and cool together. Some ways to help that happen:

  • Post Work In Progress (WIP) pull requests and ask for review - its a good way start discussion.

  • Ask questions on issues: Is this really the best approach? Does this feature really need to be in this release?

  • Take part in the Discussions or the user forum

Project Tenets and Development Guidelines

AndHow must use no runtime dependencies

AndHow is a low level utility that can be used in any application or other utility. If AndHow has dependencies, that can lead to version conflicts when included in other projects. AndHow does have dependencies for testing and at compile time (the tools.jar / jdk.compile module), but none of these are dependencies at runtime.

AndHow must have good quality and effective test coverage

As a low level utility, we don't want user's to have to second guess if it is working correctly. That does not mean that test coverage must be 100%, but the tests should give confidence that the code functions as intended and is capable of catching new bugs.

Part of AndHow is an annotation processor at compile time, so there are unique testing challenges. Caveats aside, the current test coverage (around 87%) should be improved.

Other ways to contribute

  • Report a bug or suggest a feature on the issue tracker

  • Submit pull-requests to improve the Javadocs or test coverage

  • Any corrections or added documentation needed on this site can be opened as an issue on the project.

  • Suggest a new example for the AndHow Samples Project

Last updated