Contributing Guide
Help us build resilient, scalable cloud infrastructure. This guide covers how to report issues, propose features, and submit code to the CloudNexus ecosystem.
Welcome Contributors
CloudNexus thrives on community-driven innovation. Whether you're fixing a typo, improving documentation, or engineering a new provider module, your contributions are valued. We maintain a set of repositories across the cloudnexus GitHub organization, including the CLI, Terraform providers, Kubernetes operators, and core infrastructure tooling.
Before diving in, please review our Community Guidelines and ensure your proposed work aligns with our architectural roadmap.
Getting Started
Prerequisites
To contribute to CloudNexus projects, ensure your local environment meets these requirements:
- Go 1.21+ (for core services & CLI)
- Node.js 18+ / npm or pnpm (for frontend dashboards & plugins)
- Docker & Docker Compose (for local orchestration)
- Terraform 1.5+ (for provider development)
- kubectl & kind/minikube (for Kubernetes integration tests)
Environment Setup
# Fork & clone the repository git clone https://github.com/YOUR_USERNAME/cloudnexus-cli.git cd cloudnexus-cli # Install dependencies & toolchainmake bootstrap # Spin up local test environmentdocker compose up -d # Run initial tests to verify setupmake test-unit
Run make bootstrap exactly once. It configures linting, downloads required binaries, and sets up pre-commit hooks.
Development Workflow
We follow a standard Gitflow-inspired process optimized for rapid iteration and strict stability guarantees.
- Fork & Branch: Create a descriptive branch from
main. Use prefixes:feat/,fix/,chore/,docs/. - Commit Convention: Follow Conventional Commits. Example:
feat(core): add auto-scaling thresholds - PR Creation: Open a Pull Request against
main. Link any related GitHub Issue. - Code Review: Wait for at least one maintainer approval. CI must pass all checks.
- Squash & Merge: Once approved, squash commits to maintain a clean history.
| Branch Prefix | Usage | Example |
|---|---|---|
feat/ | New features or capabilities | feat/storage:add-s3-lifecycle-rules |
fix/ | Bug fixes or patches | fix/cli:resolve-auth-timeout-issue |
refactor/ | Code restructuring without behavior changes | refactor:extract-metrics-collector |
docs/ | Documentation, README, or guides | docs:clarify-k8s-deployment-steps |
Code Standards
Consistency ensures maintainability across our distributed codebase. All submissions are automatically validated via CI.
- Linting: Go code uses
golangci-lint. JavaScript/TypeScript useseslint+prettier. - Type Safety: No
anyin TypeScript. Strict mode enabled by default. - Error Handling: Never ignore errors. Use structured error wrapping (
fmt.Errorf("context: %w", err)). - API Design: RESTful endpoints must follow RFC 7807 problem details. gRPC services require protobuf comments.
- Security: No hardcoded secrets. Use
dotenvor secret managers. Rungitleaksbefore committing.
Testing Requirements
Cloud infrastructure demands rigorous validation. All PRs must include appropriate tests.
Pull requests with < 80% coverage or failing integration tests will be automatically blocked from merging.
- Unit Tests: Cover core logic, parsers, and configuration handlers.
- Integration Tests: Validate interactions with mock APIs, databases, and storage backends.
- E2E Tests: Spin up ephemeral clusters to verify deployment pipelines.
- Load Tests: Required for any changes affecting scaling or network throughput.
func TestAutoScaler_ScaleUp(t *testing.T) { scaler := NewAutoScaler(config.HighLoadThreshold) err := scaler.TriggerScale(context.Background(), "pool-alpha", 5) require.NoError(t, err) assert.Equal(t, "scaled", scaler.GetStatus()) }
Reporting Issues
Found a bug or have a feature request? Please use GitHub Issues with the appropriate template.
Bug Reports
Include reproduction steps, expected vs actual behavior, environment details (Go version, OS, provider version), and relevant logs. Redact all sensitive data (tokens, IP addresses, cluster names).
Feature Requests
Clearly describe the problem you're solving, proposed solution, and any alternative approaches considered. Link to related RFCs or architecture docs if available.
Community & Code of Conduct
We are committed to providing a safe, respectful, and inclusive environment for all contributors. By participating, you agree to abide by our Contributor Covenant v2.1.
Key principles:
- Be empathetic and constructive in feedback.
- Focus on technical merit, not identity or background.
- Respect differing viewpoints and experiences.
- Accept responsible criticism gracefully.
Violations will be addressed by the moderation team. Report concerns to conduct@cloudnexus.io.
FAQ
Do I need to sign a CLA?
Yes. All contributions require signing our Contributor License Agreement via our automated GitHub bot. It's a one-time process per author.
How long does PR review take?
Most PRs receive initial feedback within 48 hours. Complex infrastructure changes may take longer due to security and performance validation.
Can I contribute to the commercial Enterprise tier?
Core infrastructure is fully open-source. Enterprise features (SLA guarantees, dedicated support, advanced security modules) are maintained internally but benefit from community feedback via our public roadmap.
Explore good-first-issues on GitHub or join our community Discord to ask questions before starting. We appreciate your help!