Skip to content

Contributing

Dogubako is free software under the AGPL-3.0-or-later, developed on GitHub. Bug reports, tool ideas, fixes and docs improvements are all welcome.

  • Bugs: open an issue with what you ran (app, CLI command or API call), what you expected, what happened, and the output of dogubako --version and dogubako deps.
  • Security issues: report them privately through GitHub security advisories, not public issues. See Security.
  • Tool ideas: describe the job to be done and which mature library or program could do it well.
  1. Fork the repository and create a branch.

  2. Make the change, with tests. See Building to get set up.

  3. Run the checks for what you touched:

    Terminal window
    cargo fmt --all
    cargo clippy -p <crate> --all-targets -- -D warnings
    cargo test -p <crate>
    cd web && npx vitest run && npm run build # web changes
    cd site && npm run build # docs changes
  4. Open a pull request describing what changed and why. CI runs the web, Rust (three operating systems), desktop and Docker builds.

  • It really works. No placeholders, no fake results. If part of it can’t be done well, leave that part out and say so.
  • It reuses a mature library or program with an AGPL-compatible license, rather than reimplementing one.
  • It is safe: no shell, guarded arguments, limits on decompression and image size, SSRF-guarded network access, previews before destructive changes. See Writing a Rust tool.
  • It has a clear spec: a one-sentence description, keywords people actually search for, sensible defaults and rare options under Advanced.
  • It has tests that generate their own fixtures and skip gracefully when an engine isn’t installed.
  • The tool catalog is regenerated (npm run gen:tools in site/) so the docs list it.

Contributions are accepted under the project’s license, AGPL-3.0-or-later. New dependencies must have compatible licenses: MIT, Apache-2.0, BSD, ISC, Zlib, MPL-2.0, LGPL and GPL are fine; non-commercial or proprietary licenses are not. See Licensing.