Contributing

Before you contribute you should read and understand the license that SquirrelJME is under. You should abide by the Code of Conduct, if you fail to keep the pledge your contribution will not be accepted since it can create a toxic and unwelcoming environment for developers and users.

Development can happen on any operating system that has an installation of Gradle, a Java JDK, any text editor/IDE (IntelliJ Ultimate is recommended), and enough disk space to store the code and repository.

SquirrelJME uses the Fossil source control system and as such it generally is expected that it is to be used. There also are GitHub Pull Requests however since the GitHub is a mirror of another repository it cannot be directly committed to as those commits will be erased, however Pull Requests can still be made. Any pull requests made on GitHub will be converted to Fossil then merged in accordingly.

Continue reading below for the contributing guide.

Etiquette For Contributing

As with various other projects that exist, please be considerate of how SquirrelJME is structured along with maintaining consistency within the repository as a whole.

If there are any issues regarding these, please open an issue describing in detail the problem and a proposed solution if there is one on GitHub.

Exceptions to Contributing

If you have worked on the following projects for the following companies, you are not permitted to contribute to this project due to potential poisoning:

Additionally, for legal purposes, code that is derived from the source code from these projects cannot be used.

Contributor Agreement

ALL CONTRIBUTORS MUST ACCEPT THE FOLLOWING AGREEMENT BEFORE THEIR CODE WILL BE ACCEPTED IN THE PROJECT. IF THE DEVELOPER IS EMPLOYED AND DEVELOPS THE CODE "ON THE CLOCK" OR UNDER CONTRACT, THEN THAT DEVELOPER MUST SEEK THE PERMISSION OF THE EMPLOYER.

You grant Stephanie Gawroriski an irrevocable license that:

 1. That you own the contributing work.
 2. Grants a patent license, as per the Mozilla Public License 2.0.
 3. Granting Stephanie Gawroriski permission to redistribute, sell, lease,
    modify, transform, translate, and relicense the specified works. This
    is to simplify the licensing of the project and permit it to be
    consistent. Your contribution may be commercially licensed to other
    parties supporting the project through this means.
 4. If employed by a company, you have a right by that company to provide
    contributions to this project.
 5. Have pledged to follow the Code of Conduct.
 6. Have read and understand the Ettiquite.

Committing and Submitting Changes

As previously stated, SquirrelJME is developed using Fossil but if you are not comfortable with it and would like to stick to something more familiar then you may also as well use Git.

For reference, the two sections will accordingly be:

All development should be done in branches so that way trunk on your own copy of the repository is always aligned to trunk on the remote repository.

With Fossil

SquirrelJME uses Fossil which is a distributed version control system that keeps the entire repository within a single file along with having support for other features such as web hosting and otherwise. It is slightly different from Git but it is simple to use and works on Windows, Linux, and Mac OS X.

After fossil is installed, the repository can be checked out as follows (do make sure that yourname does not contain any spaces and is all lowercase, it may contain dots, an example being: jane.doe):

It is preferred that your commits are signed using a PGP/GPG key, to enable this do the following:

After this you are ready to start development!

For reference, there are some guides for Fossil:

Starting A Branch

Development should be done in branches and not the main trunk as there will be a number of changes and will require constant updates:

Please start your branch with wip- when making a branch!

Committing and Making Changes

When you are ready to commit your changes to your branch, you may do the following:

Staying Up To Date

Since SquirrelJME is actively worked on, there will be changes to other branches and the main trunk line. You can use the following commands for this:

Submitting

When you are ready to submit please note that your submission will be reviewed and may or may not be accepted. There may be additional requests for changes as well. To make a submission do the following:

With Git

Although SquirrelJME does not use Git there are mirrors to both GitHub and GitLab. Do note that the primary mirror is on GitHub. Note that if you are using GitHub or GitLab you should fork the repository.

Once you have a fork you may check it out:

It is preferred that your commits are signed using a PGP/GPG key, to enable this do the following:

After this you are ready to start development!

Starting A Branch

Development should be done in branches and not the main trunk as there will be a number of changes and will require constant updates:

Please start your branch with wip- when making a branch!

Committing and Making Changes

When you are ready to commit your changes to your branch, you may do the following:

Staying Up To Date

Since SquirrelJME is actively worked on, there will be changes to other branches and the main trunk line. You can use the following commands for this:

Submitting

When you are ready to submit please note that your submission will be reviewed and may or may not be accepted. There may be additional requests for changes as well. To make a submission do the following:

Alternatively a Git Bundle may be used: