Contributing
dockmesh is maintained in spare time by a small group of developers. Contributions are welcome — and crucial.
Ways to help
Section titled “Ways to help”You don’t need to write Go or Svelte to contribute:
- Report bugs — with a clear reproduction, on GitHub Issues
- Answer questions — on GitHub Discussions
- Improve docs — typos, unclear sections, missing guides on the docs repo
- Write tutorials — deploy guides for apps not yet covered
- Translate the UI — translation infrastructure not in place yet; see Translations below
- Triage issues — confirm bugs, ask for clarification, label
- Design dashboards — Grafana / Prometheus dashboards welcome in the community gallery
- Financial support — via GitHub Sponsors
Code contributions
Section titled “Code contributions”Dev environment
Section titled “Dev environment”# Clonegit clone https://github.com/Dockmesh/dockmeshcd dockmesh
# Go backendgo build ./cmd/dockmesh
# Svelte frontendcd webnpm installnpm run devRun both with make dev at the repo root — starts backend on :8080 with live reload and the Svelte dev server on :5173 proxying API calls.
Coding standards
Section titled “Coding standards”- Go:
golangci-lint runmust pass. Error handling: always explicit, never silent_ =. - Svelte: Svelte 5 with runes (
$state,$derived,$effect). Tailwind v4 CSS-first. - Tests: new features need tests. Go:
go test ./.... Frontend: Playwright E2E for UI flows. - Commits: imperative mood (“Add foo”), focused on the why in the body. No AI attribution trailers.
PR process
Section titled “PR process”- Fork the repo
- Create a branch:
feat/my-featureorfix/bug-description - Keep PRs small — one logical change each
- Reference the issue:
Fixes #123 - Add tests
- Run
make testandmake lintlocally - Open PR with a clear title + what-and-why description
- Respond to review feedback
- Squash-merged after approval
What we likely won’t merge
Section titled “What we likely won’t merge”- Large architectural changes without prior discussion (open an Issue first)
- New features that significantly expand scope (e.g. “add Kubernetes support”)
- Changes that break backward compatibility without a clear upgrade path
- Dependencies with ambiguous licensing
What we’ll merge quickly
Section titled “What we’ll merge quickly”- Bug fixes with tests
- Security patches
- Doc improvements
- Translation contributions
- Performance improvements with benchmarks
Documentation
Section titled “Documentation”The docs live in dockmesh.dev repo alongside the marketing site. They’re Markdown files — easy to edit.
git clone https://github.com/BlinkMSP/dockmesh.devcd dockmesh.devnpm installnpm run dev # localhost:4321Edit files under src/content/docs/docs/. Open a PR.
Each doc page should answer: “What do I need to know to actually do this?” Favor concrete examples over exhaustive reference.
Translations
Section titled “Translations”dockmesh UI is English-only today and no translation pipeline is wired up — strings live as inline text inside the Svelte components, there is no extracted message catalog yet.
If you’re interested in adding i18n, open a GitHub Discussion before starting work. The scope (string extraction approach, locale switcher placement, fallback behaviour, runtime vs build-time loading) needs alignment before any code lands so the first PR doesn’t get stuck in review.
Getting help with contributing
Section titled “Getting help with contributing”- Unsure if your idea fits? Open a Discussion first (not an Issue).
- Stuck on a PR? Ping in the Discussion thread you opened.
- Want to claim an issue? Comment on it, we’ll assign it.
Recognition
Section titled “Recognition”Contributors are credited in:
- The changelog entries for their work
- The dockmesh
CONTRIBUTORS.mdfile (automatic via Git history) - Optionally: the Hall of Fame in SECURITY.md for security researchers
Code of Conduct
Section titled “Code of Conduct”All contributors and community members are expected to follow our Code of Conduct. Be kind, be constructive, be patient.
See also
Section titled “See also”- Roadmap — what’s being worked on
- Release Process — how releases are cut