Contribution guidelines
This page contains guidelines for contributing code to jabara.
Source access
jabara is developed on a dedicated Forgejo instance hosted at git.zelda.sr. The primary repository is located under the jabara organization at jabara/jabara.
Submitting changes
Contributions to jabara should be made as pull requests to the repository. (Guidelines TBD)
Git guidelines
Git commit messages should follow the Conventional Commits conventions. Here are a few well-formed examples:
chore(core): flatten imports and re-export `Cpu`fix(docs): use `align` instead of `style`
After the first release, changelogs will be kept as described by Keep a Changelog in the file `CHANGELOG.md`.
Code guidelines
All comments should make use of Markdown formatting where applicable.
If referencing external sources for implementation details (e.g. SwitchBrew, source code of emulators such as Ryujinx or Eden), include a comment linking to the source referenced.
Check for Clippy lints by running cargo clippy and apply suggested changes, if any. If there is good reason not to apply a suggestion, add an #[allow(clippy::some_lint)] attribute to the smallest possible region (e.g. the function containing the offending code), along with a comment explaining your decision.
Ensure that all code has been formatted with Rustfmt before committing. This can be done by configuring your editor to autoformat on save or by running cargo fmt.
You can disallow local commits with clippy lints or formatting issues by creating a pre-commit hook. Create an executable file at .git/hooks/pre-commit with the following content:
#!/bin/sh cargo clippy -- -Dwarnings cargo fmt --check
Documentation guideines
Lint all Markdown documentation with markdownlint before committing.
Use of generative AI
Generative AI of any form may not be used in any way at any step of the process of modifying or creating any data included in any contributions, nor may any existing data published as part of the jabara project as a whole be used as input to any generative AI model. This includes, nonexhaustively, using; or enabling, assisting in, or otherwise encouraging the use of; generative AI to, in any capacity:
- Generate, autocomplete, or suggest all or part of any content consisting of source code; documentation, commit messages, or other prose; assets; or translations or other internationalization data; or any other content under the copyright of the jabara Team;
- Access any part of the jabara codebase or its online documentation or wiki;
- Execute; or generate, autocomplete, or suggest for execution; any shell commands that interface with the jabara codebase in any way;
- Locate and/or analyze, summarize, or otherwise ingest any external resources with the intent to gather any kind of information or data for use in further modification or analysis of jabara; or
- Generate, autocomplete, or suggest all or part of any communication with the jabara Team or the maintainers of the jabara project, including titles, descriptions, or attached files of pull requests or issues or their comments; or messages regarding jabara sent in the jabara Matrix room.
Violating any of the above will result in a permanent ban from contributing to any part of jabara.