Thanks for your interest in contributing! This project is friendly to new contributors and first-time PRs. The goal is to keep the installer simple, reliable, and easy to audit.
Please make sure to follow our Code of Conduct in all project interactions.
- Open an issue describing the bug, feature, or improvement.
- We'll discuss scope and approach.
- Submit a pull request once the plan is clear.
This helps avoid duplicated effort and keeps changes aligned with the project direction.
There are no strict coding style requirements. Keep changes readable and focused.
Polaris is intentionally data-driven.
Most app changes should be done in:
src/polaris(theFEATURESlist)src/polaris-helper(helper actions)
Each item is a dict with keys like:
id(unique)namedesccheck(installed-state rule)install(list of helper action steps)- optional
remove - optional
contains(shown in in-app Details popup)
Example:
{
"id": "mytool",
"name": "🧰 My Tool",
"desc": "Short description",
"check": {"kind": "rpm", "pkg": "mytool"},
"install": [["install_pkg", "mytool"]],
"remove": [["remove_pkg", "mytool"]],
}Current kinds:
rpmrpm_allflatpakzramrepo_and_pkgtailscalepkg_and_serviceappimage_globappimage_glob_any
If you need a new pattern, add it in _feature_applied().
Every action in install / remove must exist in
src/polaris-helper dispatcher.
If missing, add:
- helper function
casedispatcher entry
python3 -m py_compile src/polaris
bash -n src/polaris-helperBasic checks:
- Launch the UI and verify the flow you changed.
- Make sure logs show clean output.
Build the RPM locally (Fedora 43 example):
sudo dnf install -y rpm-build rpmdevtools rsync tar python3-pyside6 polkit
rpmdev-setuptree
./src/packaging/build-rpm.sh 1.0.0Build artifacts are written to:
~/rpmbuild/RPMS/noarch/polaris-<version>-1.fc43.noarch.rpm~/rpmbuild/SRPMS/polaris-<version>-1.fc43.src.rpm
- Keep PRs small and focused when possible.
- Explain what you changed and why.
- Include screenshots for UI changes.
If you're unsure about anything, open an issue and ask — it's welcome.