Development Guide
Technical guidelines for contributing to Arrow's GitHub repositories.
First Steps
- Create a GitHub account
- Create a Discord account
- Sign the CLA
- Join the Arrow Discord
- Set up commit signing (see Sign Your Commits)
Git Workflow
Working on a Task
-
Fork or clone the target repository
- If you're not a member of an Arrow GitHub team, work from a fork
- How to fork a repository
-
Create a branch with a descriptive name
- Use the format:
username/short-description - Example:
thomasg/fix-landing-gear-docs
- Use the format:
-
Make your changes
- Follow our Code Style Guides
- Keep commits focused and well-described
-
Sign and push your commits
- All commits must be signed (see Sign Your Commits)
git commit -S -m "fix: correct motor arm dimensions"
Pull Requests
-
Target the correct branch
- Most repos: target
develop - Website repo: target
staging
- Most repos: target
-
Confirm the
cla-signedlabel appears- If you haven't signed the CLA, the bot will block your PR
-
Confirm CI checks pass
- Checks vary by repository
-
Get approvals
- Approvals generally come from Arrow team members
- Number of required approvals varies by repo
-
Merge!
PR Best Practices:
- Keep PRs small and focused — easier to review
- Write clear descriptions of what changed and why
- One PR per issue/task
- If commit history is messy, use "Squash and Merge"
Sign Your Commits
We require signed commits for security and accountability.
Setup:
- Generate a GPG key
- Tell Git about your key
- Add the key to GitHub
- Enable signing by default:
git config --global commit.gpgsign true
Sign individual commits with -S: git commit -S -m "your message"
Commit Messages
We use conventional commits for automated releases and changelogs.
<type>[(scope)]: <description>
[optional body]
[optional footer]
Types:
| Type | Description | Release |
|---|---|---|
fix | Bug fix | Patch |
feat | New feature | Minor |
docs | Documentation only | Patch |
refactor | Code restructuring | Patch |
test | Adding/updating tests | Patch |
build | Build system changes | Patch |
ci | CI configuration | Patch |
perf | Performance improvement | Patch |
style | Code formatting | Patch |
Breaking changes: Add ! after the type (e.g., feat!: redesign API) for a Major release.
Guidelines:
- Title: max 50 characters, start lowercase, no period
- Body: max 72 characters per line
- Keep it concise and descriptive
VS Code Extensions
Recommended extensions for Arrow development:
General
ext install bierner.github-markdown-preview
ext install docsmsft.docs-yaml
ext install stkb.rewrap
ext install eamodio.gitlens
ext install ms-vscode-remote.vscode-remote-extensionpack
ext install tamasfe.even-better-toml
ext install EditorConfig.EditorConfig
- GitHub Markdown Preview — Mermaid diagrams and emoji in preview
- docs-yaml — YAML intellisense and validation
- Rewrap — Wrap comments to 80 characters
- GitLens — Git blame and history on hover
- Remote Development — SSH development
- Even Better TOML — Rust config file support
- EditorConfig — Consistent editor settings
Web Projects
ext install esbenp.prettier-vscode
ext install johnsoncodehk.volar
- Prettier — Auto-formatting
- Volar — Vue.js support
Terraform
ext install 4ops.terraform
Build Automation
Arrow repos use Makefiles with containerized tooling via arrow-sanitychecks.
make help # See all targets
make test # Run all tests/lints
make all # Test, build, and release
You don't need to install linting tools locally — everything runs in Docker.
Repository Management
Repositories are managed through Terraform. For repo changes, contact @owlot.
Admin Access
Elevated platform access is limited. Ping @thomasg or @owlot with what you need.