Contributing
Contributions to SIMPLE are welcome across all three components. Each component lives in its own subdirectory of the simple.toolchain or simple.webplatform repository.
Prerequisites
Before contributing:
- Build the component from source successfully. See Building from Source.
- Understand the architecture of the component you are changing. For the WebPlatform, see WebPlatform Architecture.
Branch workflow
- Fork the relevant repository on GitHub.
- Create a feature branch from the default branch:
git checkout -b feature/my-feature
- Make your changes and commit with a descriptive commit message.
- Push the branch to your fork and open a Pull Request against the upstream default branch.
Pull request conventions
The simple.webplatform repository includes a PR template at .github/PULL_REQUEST_TEMPLATE.md. Fill it out fully: describe what changed, why, and how to test it.
Bug reports and feature requests are managed via GitHub Issues. The simple.webplatform repository provides issue templates in .github/ISSUE_TEMPLATE/ for bug reports and feature requests.
Code style
WebPlatform
- TypeScript strict mode is enabled (
"strict": trueintsconfig.json). - ESLint is configured with
@typescript-eslint,eslint-plugin-react,eslint-plugin-react-hooks, andeslint-plugin-react-refresh. - No dedicated
npm run lintscript is defined; run the linter with:npx eslint . - Frontend components use React functional components with hooks.
GAMA Plugin
- Java code follows Eclipse Tycho plugin conventions.
- Source encoding is UTF-8 (enforced in the parent POM via
project.build.sourceEncoding). - GAML source files reside in
gaml.extension.unity/gaml/and model files ingaml.extension.unity/models/.
Unity Template VR
- C# scripts follow Unity's standard naming conventions (PascalCase for classes and public members, camelCase for private fields).
- All
*Managerscripts use the Singleton pattern. Never instantiate them manually — access them viaNameOfClassManager.Instance.SomeMethod(). - New interaction scripts should extend the appropriate
SimulationManager*base class rather than modifying it directly.
Testing
WebPlatform
GAMA Plugin
Run the full Maven build including any integration tests:
cd "GAMA Plugin/eu.project-simple.parent"
mvn verify
Unity Template VR
The Unity Test Runner is referenced in the CI workflow (game-ci/unity-builder@v4 on Ubuntu runners). Running tests locally requires a valid Unity license configured in the editor.