benchControlPlatform
Docs

Contributing

If you integrate an instrument, in a fork or just for yourself, please send it as a merge request, also when it is not finished. An unfinished device is welcome as experimental, and nobody has to integrate the same instrument a second time. The license does not require this; we ask for it.

The four checks

Before you open a merge request, make sure that these four pass. The pipeline runs the same four, and each of them has to pass.

cargo fmt --check
cargo clippy --all-targets -- -D warnings
cargo test
cargo deny check licenses

cargo deny is a tool of its own (cargo install cargo-deny --locked). The pipeline (.gitlab-ci.yml) adds --locked to clippy and test. cargo test runs every test except the three hardware tests. Building, running and demo mode, which needs no instrument: Getting started.

Adding an instrument

What a device needs, the layers of the code, the rules a device keeps, its tests and docs, and the Device merge request template are in the guide: Add an instrument. In short: a device is verified when its merge request has everything the Device template asks for, otherwise it is experimental; the status is set in review.

Working with a coding agent

Contributions made with an AI agent are welcome. The rule is the same for everybody: a new device needs somebody who ran it on the hardware. An agent starts at AGENTS.md in the repository root: the commands, a map of the code, the hard rules and the definition of done.

  • An agent starts the app only in demo mode. A normal start loads the user's settings.toml, saves it when a setting changes, and starts the four workers.
  • The hardware tests are #[ignore] (three today) and only read or restore what they change. They are never run without the instrument and its owner.
  • An agent cannot confirm that a device works. The person with the instrument does, in the merge request, with the Device template.

Issues

Open an issue on GitLab with one of the templates: Bug for something that does not work as expected, Instrument-request for an instrument you would like to see supported.

device wanted
a request for an instrument nobody works on yet
good first issue
small, self-contained, and needs no hardware
needs hardware test
a change that waits for somebody to run it on the instrument

License and conduct

benchControlPlatform is licensed under either the MIT license (LICENSE-MIT) or the Apache License, Version 2.0 (LICENSE-APACHE), at your option.

There is no agreement to sign. Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Everybody who takes part follows the code of conduct in CODE_OF_CONDUCT.md.

Condensed from CONTRIBUTING.md, AGENTS.md and the README in the repository.