Contributing & code style

How a change gets into the omega8cc repos, and the style contract it is reviewed against. Code enters at each repo's default branch — 5.x-dev everywhere except the Drush fork — is promoted selectively through the -base branches, and once tagged on 5.x-pro/5.x-lts is picked up by SKYNET-enabled production servers, which on their daily release check self-upgrade as root wherever the optional self-upgrade cron is configured — no operator in the loop. That deployment model, not taste, sets the review strictness: reworks are about fleet safety.

Two mechanics dominate review feedback. First, fleet delivery is serial-gated: tools under aegir/tools/ reach deployed boxes only through _fetch_versioned() (BOA.sh.txt:1056), which refetches when the stamp <name>.ctrl.<serial>.<tree>.<xsrl>.pid no longer matches and cleans old stamps on refresh (BOA.sh.txt:1097) — so a tool change without a same-commit fNN serial change at its BOA.sh.txt call site is invisible to the fleet. Files under lib/ ride the release version serial instead. Second, the backend PHP floor is old: the PHP-CLI options in lib/settings/barracuda.sh.cnf still include 5.6, so Provision/Hosting/Drush PHP must stay parse- and behaviour-safe far below current syntax.

The non-negotiables, each grounded in the tree:

Contract Ground truth
PRs target the default branch; release lines (5.x-lts/5.x-pro, -base, -edge) are maintainer-managed promotion branches origin/HEAD5.x-dev on omega8cc/boa
Every bug report links a boa info Gist docs/CONTRIBUTING.md; _display_info() at aegir/tools/bin/boa:2384, dispatch boa:3038
One logical change per PR, single-concern commits -base promotion is selective; a mixed commit cannot be cherry-picked cleanly
fNN serial bumped in the same commit as any fetched-tool change _fetch_versioned() BOA.sh.txt:1056; stamp cleanup :1097
Bash: two-space indent, no tabs, quoted "${_VAR}" expansions, _SNAKE_CASE script vars, lowercase_with_underscores functions, ShellCheck-clean house style throughout BOA.sh.txt/BARRACUDA.sh.txt/OCTOPUS.sh.txt + lib/; justified inline # shellcheck disable= only (BOA.sh.txt:1071)
Output via _msg with INFO:/NOTE:/OOPS:/ERROR:/FATAL ERROR: prefixes in main scripts and lib/functions/; standalone aegir/tools/bin/ tools define their own local _alrt/_die _msg() lib/functions/helper.sh.inc:16; e.g. clearwebbans:55-56, renameaegirhost:84
master.sh.inc and satellite.sh.inc are deliberate parallel copies — mirror a fix into both, never DRY them into one never co-loaded: BARRACUDA.sh.txt:275 sources master, OCTOPUS.sh.txt:266 sources satellite
Fork PHP holds the 5.6 floor — no post-5.6 syntax, no silently divergent runtime behaviour PHP-CLI version options include 5.6, lib/settings/barracuda.sh.cnf
Shell commands built in PHP: escapeshellarg() at the caller; the transit layer is a backstop that refuses \n/\r/NUL Provision_Context_server::shell_exec(), Provision/Context/server.php:164-173
Caller-supplied paths and SQL identifiers in bash pass the safe-value helpers, never raw chmod/chown or string-built SQL _is_safe_ident aegir/tools/system/mysql_cleanup.sh:113; _validate_path_prefix/_chmod_safe aegir/tools/bin/fix-drupal-platform-permissions.sh:31,47

Pages in this topic

  • Contributing to BOA — the mechanics: where to file (the omega8cc/boa queue is the single tracker for the whole stack, forks included), what separates an actionable bug report from a closed one (boa info Gist, _DEBUG_MODE=YES capture, log locations), per-repo PR targets, what gets a PR merged instead of reworked (single-concern commits, serial bumps, the PHP floor), private security disclosure, and what the promotion pipeline does with a merged change.
  • Code style & conventions — the enforceable contract: bash layout, naming, quoting and the output-helper/locking exemplars, ShellCheck discipline, the hard PHP 5.6 floor with the forbidden-syntax list, the shell-escaping and safe-value-helper contracts, commit style, and the pre-submission checklist.

Adjacent developing topics

  • Maintainer overview & fork model — the repo set these rules apply to, the sourced library layout, and why omega8cc is upstream.
  • Release model & SKYNET pipeline — the branch/tag promotion path and the serial mechanics in full: what a tag triggers on deployed fleets.
  • Build & test — how to verify a change before the PR: local checks and the disposable-VM install/upgrade gate.

Reference