So, you would like to contribute to Art of Illusion? Great! Here's how.
There are several things you can do to help that do not require any programing ability.
- Report a bug
- Propose a new feature
- If you speak a language other than English, you can contribute, review, or update a translation
- Create a tutorial
- Help update the website, www.artofillusion.org. We're currently in the middle of re-designing the site. Please see the github project for details.
If you would like to help with any of these, please drop in to the discussion forums.
Please take a few minutes to become familiar with the basics of git and making a pull request on github. Github's documentation team has provided an awesome getting started guide, and a special tour of forking, which you will need to understand to contribute. Don't worry about the advanced stuff yet, we'll help you through it if you need a hand.
Next, follow our instructions for building AOI all the way through to confirm that everything is working for you.
If you came here with a specific bug or feature in mind, feel free to work on it.
If you are searching for a project, browse through our bug and feature lists. If you are not sure how much experience or time might be required for a specific project, ask on the forums.
Please put the changes related to one bug or feature in each pull request.
- If you change three files to fix one bug, that is one pull request.
- If you change a file to fix a bug and then change the same file to add a new feature, that is two pull requests.
- If you are not sure about the scope of an idea, please ask.
A consistent formatting style throughout a codebase helps developers to stay oriented and focused on the content. AOI generally follows the following formating convention:
public class Example
{
public static String blocks = "Braces should be on the left.";
public static String blockDetails = "Indent them the same as the enclosing declaration.";
public static int indentStatementsInsideBlockSpaces = 2;
public void longParameterLists(boolean areStacked,
String toPrevent,
int theLength,
String fromRunningInto,
int wrappingIssues)
{
if (youUseAConditionalWithALongOneLiner)
System.out.println("Just indent the statement to be executed!");
for (Object obj: Collection group)
obj.indent("Also good for operating on the contents of a Collection");
}
}
This convention can flex if it gets too cumbersome, but should be a good general guideline.
We're looking forward to seeing your pull requests!