|
| 1 | +# Contributing to VX6 |
| 2 | + |
| 3 | +VX6 is being developed as a networking project with a narrow initial scope and a long technical runway. Contributions should improve correctness, clarity, and operational confidence. |
| 4 | + |
| 5 | +## Project Priorities |
| 6 | + |
| 7 | +- Keep IPv6 behavior explicit. |
| 8 | +- Prefer simple designs over speculative abstraction. |
| 9 | +- Build stable transport primitives before layering discovery or routing features. |
| 10 | +- Document behavioral changes in the same change set as the code. |
| 11 | + |
| 12 | +## Development Baseline |
| 13 | + |
| 14 | +- Go 1.22 or newer |
| 15 | +- Linux-first workflow |
| 16 | +- An environment where IPv6 can be tested directly |
| 17 | + |
| 18 | +## Repository Conventions |
| 19 | + |
| 20 | +- `cmd/` contains executable entrypoints. |
| 21 | +- `internal/` contains implementation packages. |
| 22 | +- `docs/` contains architecture, roadmap, and protocol notes. |
| 23 | + |
| 24 | +## Pull Requests |
| 25 | + |
| 26 | +Keep pull requests focused. A good change set should: |
| 27 | + |
| 28 | +- solve one clearly defined problem |
| 29 | +- include tests when behavior can be exercised automatically |
| 30 | +- update documentation when commands, structure, or semantics change |
| 31 | +- explain operational impact in plain language |
| 32 | + |
| 33 | +## Coding Standards |
| 34 | + |
| 35 | +- Run `gofmt` on all Go changes. |
| 36 | +- Keep exported APIs minimal. |
| 37 | +- Return contextual errors. |
| 38 | +- Do not silently fall back from IPv6 to IPv4. |
| 39 | +- Avoid introducing dependencies without a clear payoff. |
| 40 | + |
| 41 | +## Design Changes |
| 42 | + |
| 43 | +Open an issue or short design note before changing: |
| 44 | + |
| 45 | +- wire formats |
| 46 | +- identity semantics |
| 47 | +- routing behavior |
| 48 | +- discovery models |
| 49 | +- configuration layout |
| 50 | + |
| 51 | +## Security |
| 52 | + |
| 53 | +Do not commit private keys, captured traffic, credentials, or lab secrets. If a change affects trust boundaries or transport guarantees, document the assumptions directly in the pull request. |
0 commit comments