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.

There are antiquated scripts in utils-dev/ that will only run on Unix compatible systems such as Linux, BSD, Mac OS X, Cygwin, MSYS2, or WSL. However over time these scripts will be integrated into the Gradle build accordingly.

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. Continue reading below for a 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.

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 (and Multi-Phasic Applications) an
irrevocable license that:

 1. That you own the contributing work.
 2. Grants a patent license, as per the GNU GPLv3.
 3. Granting Stephanie Gawroriski (and Multi-Phasic Applications)
    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: