Mister Download Manager
  1. Home
  2. Contributing

Contribute to Mister Download Manager

Bug reports, ideas, translation fixes and pull requests are all welcome. Everything happens in the open on GitHub.

Getting set up

You need Windows 10 or 11 and Rust stable 1.95 or later (the MSVC toolchain).

cargo build
cargo run -p mdm-app

To try changes without touching your own downloads, give the app a separate data folder:

set MDM_DATA_DIR=C:\some\empty\folder
cargo run -p mdm-app

cargo run -p mdm-labserver -- --faults "rate=2M" starts a local test server that serves generated files with whatever trouble you ask for (slow connections, cuts, busy answers, no ranges; GET / lists them), so downloads can be tested without the internet.

Before you open a pull request

These are the checks CI runs; each works on a clean clone:

cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
python tools/i18n/extract.py      # then: git diff --exit-code i18n/en.tsv
node tools/extension/test.mjs

Keep changes focused and match the code around them. A few rules hold everywhere:

Translations

The interface is in every language Windows 11 offers. The catalogs in i18n/ were made by machine translation, and each row marked #, machine waits for a native speaker:

  1. Open i18n/<code>.tsv (the codes are in i18n/languages.tsv).
  2. Fix the translation in the row's third column and delete its #, machine line.
  3. Keep {placeholders} and the one & (the keyboard shortcut letter) as they are.

cargo test -p mdm-app every_catalog checks every catalog. To see whether your texts fit, set MDM_FIT_AUDIT to a file and take the screenshots in your language (tools\lab\docs-shots.ps1 ... -Lang <code>): every text that runs past its window or over another one is listed there. See Languages for how the language list, the installer and the right-to-left layout fit together.

Reporting problems

Use Help → Report a problem in the app: it opens the bug report form with your version, system, how MDM was installed and its language filled in. The form asks for the same when you open it yourself. Security problems: see SECURITY.md.

Pull requests are accepted under the project's licence, the GNU GPL, version 3 or later.