Skip to main content

Development Guide

Technical guidelines for contributing to Arrow's GitHub repositories.

First Steps

  1. Create a GitHub account
  2. Create a Discord account
  3. Sign the CLA
  4. Join the Arrow Discord
  5. Set up commit signing (see Sign Your Commits)

Git Workflow

Working on a Task

  1. Fork or clone the target repository

  2. Create a branch with a descriptive name

    • Use the format: username/short-description
    • Example: thomasg/fix-landing-gear-docs
  3. Make your changes

  4. 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

  1. Target the correct branch

    • Most repos: target develop
    • Website repo: target staging
  2. Confirm the cla-signed label appears

    • If you haven't signed the CLA, the bot will block your PR
  3. Confirm CI checks pass

    • Checks vary by repository
  4. Get approvals

    • Approvals generally come from Arrow team members
    • Number of required approvals varies by repo
  5. 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:

  1. Generate a GPG key
  2. Tell Git about your key
  3. Add the key to GitHub
  4. 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:

TypeDescriptionRelease
fixBug fixPatch
featNew featureMinor
docsDocumentation onlyPatch
refactorCode restructuringPatch
testAdding/updating testsPatch
buildBuild system changesPatch
ciCI configurationPatch
perfPerformance improvementPatch
styleCode formattingPatch

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.