Skyformac is still in active development, and contributions are very welcome — testing against real cameras/mounts, feature proposals, code, bug reports, anything.
- Test against real hardware. Only the ZWO ASI camera line is verified against physical devices today; the webcam/Continuity Camera path and guiding (ST4) support need real-world testing. If you have a ZWO (or other) camera, mount, or other astro gear you'd be willing to lend or send to the author for compatibility testing, that's especially appreciated.
- Report bugs via Issues using the bug report template — include macOS version, camera/hardware model, and steps to reproduce.
- Propose features via Issues using the feature request template.
- Contribute code — see below.
Every bug and feature proposal starts as a GitHub Issue, then follows a fixed path from "reported" to "shipped":
- Issue filed — a bug report or feature request (see above).
- Added to the Roadmap project — every open issue that isn't a trivial fix lands on the project board.
- Prioritized — a maintainer sets its priority on the board. This is what decides when something gets picked up, not whether it's welcome.
- Spec written — for anything non-trivial, an
skyformac_<FeatureName>_Spec.mdgets written inspecs/before implementation starts (seespecs/README.md).specs/skyformac_NINA_Parity_Roadmap_Spec.mdis the current top-level example: a roadmap of larger gaps, each of which gets its own dedicated spec once prioritized. - Implemented, against that spec.
- Tested — the full suite (
make test) plus manual verification of the actual feature, not just that it compiles. - Alpha → Beta → GA — a non-trivial feature ships behind this progression (an
[Unreleased]CHANGELOG.mdentry through at least one tagged pre-release before it's considered done), not straight to a stable release.
This is the same discipline specs/README.md already describes for spec-driven development —
this section is just the wider loop that starts before a spec is even written and ends after
the code ships.
- For a small, obvious fix (typo, small bug), just open a PR.
- For anything non-trivial — a new feature, a behavior change, a new
camera/device integration — please open an issue or discussion first so
the approach can be agreed on before you put in the work. New non-trivial
features go through spec-driven development; see
specs/README.mdfor how that works and how to add one.
See the main README and
Building and running sections for
toolchain requirements and make targets. In short:
make build # build into ./build
make test # run the unit tests and UI tests
make run # build and launch skyformac.app
CI (.github/workflows/ci.yml) runs make build/make test on every
push/PR — make sure both pass locally before opening a PR.
- Keep PRs focused — one change per PR is easier to review than a bundle of unrelated fixes.
- Update relevant docs (
README.md,docs/,CHANGELOG.md's[Unreleased]section) alongside code changes where it applies. - Explain the why in the PR description, not just the what — the diff already shows what changed.
Technical details — project layout, rendering/threading architecture, and
the non-obvious design decisions behind them — live in
docs/:
docs/architecture.md— what's in each part of the codebase.docs/design-notes.md— decisions and gotchas worth knowing before changing the capture/rendering pipeline.docs/features.md— the current feature set in detail.
This project follows the Contributor Covenant. By participating, you're expected to uphold it.
By contributing, you agree that your contributions will be licensed under the project's GPLv3 license.