Files
NotAlterra/CONTRIBUTING.md
T

2.2 KiB

Contributing to NotAlterra

Thanks for considering a contribution. NotAlterra is maintained by a single developer and every improvement — code, documentation, design, or testing — is appreciated.

Getting Started

  1. Fork the repository and clone it locally.
  2. Build with cargo build.
  3. Run the test suite with cargo test.
  4. Read the docs at https://forkless.github.io/NotAlterra/notalterra/.

Making Changes

  • Work on a feature branch from master.
  • Keep changes focused — one logical change per pull request.
  • Write or update inline documentation for any new or modified function. The check script python3 tests/_check.py enforces 100% doc coverage.
  • Add tests for new behaviour. Integration tests live in tests/, unit tests are inline in src/.
  • Run cargo fmt before committing if you have rustfmt installed.

Commit Convention

Commits should be atomic and descriptive. No strict format required, but clear messages help reviewers. Example:

Add timeout to save-folder discovery scan

The scan can hang on slow network shares.  Added a
5-second per-drive timeout with a warning to the user.

Pull Requests

  1. Push your branch and open a PR against master.
  2. GitHub Actions will run checks and tests automatically.
  3. A maintainer will review within a few days.
  4. All PRs must pass CI before merging.

Code of Conduct

Be respectful. Be constructive. Assume good intent.

NotAlterra is a small project built by someone learning as they go. Questions are welcome, patience is appreciated, and kindness is non-negotiable.

AI-Assisted Contributions

NotAlterra uses agentic AI tools in its development process. If you use AI assistance in your contribution:

  • Review everything the AI generates before submitting.
  • Do not submit AI-generated changes you do not understand.
  • Disclose significant AI usage in your PR description.
  • The same quality standards apply regardless of how code is generated.

Need Help?

Open a discussion or file an issue with the "question" label. No question is too basic.