We welcome any kind of contributions with open arms. Whether it's a help with translation, reporting bugs or code contribution.
Reporting bugs should be done via GitHub issue tracker
Translations are not hosted anywhere yet, please let us know if you wish to contribute by translating Maxima to a new language!
When contributing code you should fork the repository and make any Pull Requests from there. More about working with forks
Currently Maxima is split into crates that serve different purposes. Let's break them down
- maxima-lib - main crate of maxima, all frontend crates link against it
- maxima-ui - contains
eguibased frontend code (GUI application code) - maxima-cli - CLI frontend code
- maxima-tui - TUI client built using
ratatui - maxima-bootstrap - separate utility used for handling
link2ea,origin,origin2andqrc(for auth) protocols - maxima-service - (Windows only) a background service for tasks requiring privilege elevation
- maxima-resources - (Windows only) small crate exposing common assets and metadata
Available binary targets are:
maxima(ui frontend)maxima-climaxima-tuimaxima-bootstrapmaxima-service(Windows)
As of now, Maxima requires a nightly build of rust toolchain, as it makes use of some unstable features of the language.
We recommend setting up rustup, it lets you install and manage multiple rust toolchains at the same time.
Then install nightly build
rustup toolchain install nightlyAfterwards build the crate(s) with cargo
cargo +nightly buildAnd/or run particular binary target
Note
Some binary targets depend on others, always make sure to build whole project when running from source before reporting any bugs.
cargo +nightly run --bin maxima-cliPlease keep consistent code style throughout the project, as it makes it simpler to contribute and collaborate.
Use rustfmt to automatically format the code to meet all the expectations
cargo +nightly fmt