Thank you for contributing.
SUPLA is a multi-repository platform. Before opening an issue or pull request, make sure you are working in the correct repository.
Use the organization profile and repository index to route work correctly:
- Organization profile:
profile/README.md - Repository index:
docs/repositories.md - Architecture overview:
docs/architecture.md
Common routing examples:
- deployment / self-hosting →
supla-docker - cloud backend / REST API / web UI →
supla-cloud - server core / protocol →
supla-core - device-side SDK / firmware building blocks →
supla-device - Android application →
supla-android - iOS application →
supla-ios - generated PHP API client →
api-client-php
Please:
- search existing issues and pull requests,
- read the target repository
README.md, - read any local
Development.md,SECURITY.md, or repository-specific contribution notes, - check whether the repository is active, legacy, or archived,
- use the correct support channel for usage questions.
For setup or usage questions, use the channels listed in SUPPORT.md instead of opening a bug immediately.
Do not assume the same branch model across the entire organization.
Historical reality:
- some repositories use
main, - some repositories use
master, - some repositories may also use
developfor unreleased work.
Contribution rule:
- target the repository's current development branch,
- if maintainers ask for
develop, usedevelop, - otherwise, target the default branch unless local documentation says otherwise.
More detail: docs/branch-policy.md
Keep pull requests focused.
A good pull request should:
- describe the problem clearly,
- explain the chosen solution,
- mention affected repositories or components,
- describe how the change was tested,
- include screenshots for UI changes when relevant,
- mention compatibility impact, migrations, or breaking behavior,
- update related docs when behavior changes.
Avoid mixing unrelated refactors with functional changes.
Some repositories are public integration surfaces. Changes there need extra care.
Examples:
- public REST API
- device/server protocol behavior
- client-visible behavior
- deployment contracts and configuration
When changing shared or public behavior:
- prefer backward compatibility,
- document compatibility risk explicitly,
- update changelog / release notes where relevant,
- update dependent repositories if the change spans multiple components.
Some repositories are generated artifacts rather than hand-maintained sources.
Example:
api-client-phpis generated from the SUPLA Cloud OpenAPI definition.
For generated repositories:
- do not submit large manual edits to generated output unless maintainers explicitly request it,
- prefer changing the source definition or generator inputs,
- mention the source repo and source version in the pull request.
Documentation updates are welcome, including:
- fixing incorrect setup or build steps,
- clarifying repository scope,
- improving architecture explanations,
- adding migration notes for legacy repositories.
If a change affects how the whole organization is explained or routed, update:
profile/README.mddocs/repositories.mddocs/architecture.md
If a change only affects a single component, keep the detailed docs in that repository.
Some repositories remain visible for compatibility or migration reasons.
Rules:
- do not propose new feature work in archived repositories,
- prefer migrating users to the successor repository,
- keep redirect / deprecation notes accurate,
- treat legacy repositories as reference material unless maintainers explicitly reactivate them.
See docs/legacy-and-archived.md.
Do not open public issues for vulnerabilities.
Use the process described in SECURITY.md.
By participating, you agree to follow the Code of Conduct.
