What is Meshery?
Meshery is a self-service engineering platform and the open source, cloud native manager enabling the design and management of all Kubernetes-based infrastructure and applications. With support for 300+ integrations, Meshery provides:- Visual and collaborative GitOps
- Infrastructure lifecycle management
- Workspaces for team collaboration
- Design pattern catalogs
- Performance management
- Multi-tenancy capabilities across any cloud or on-premises environment
Repository Structure
Understanding the repository structure will help you navigate the codebase:/server– Meshery Server backend written in Go; handles REST/GraphQL APIs, Kubernetes cluster management, adapter orchestration, and database operations (PostgreSQL)/ui– Meshery UI built with Next.js and React; includes Material UI components, Redux Toolkit state management, and Relay for GraphQL queries/mesheryctl– Meshery CLI built with Go and Cobra framework; provides commands for installation, lifecycle management, pattern deployment, and system validation/docs– Documentation site powered by Jekyll; contains user guides, concepts, contributing guides, and API references/install– Installation artifacts including Dockerfiles, Kubernetes manifests, Helm charts, Docker Compose files, and platform-specific deployment scripts/provider-ui– Provider-specific UI extensions; isolated React application for remote provider integrations/policies– Open Policy Agent (OPA) Rego policies for relationship evaluation and design validation/.github– GitHub Actions workflows, issue templates, Copilot agent definitions, and community health files
Ways to Contribute
Code Contributions
- Server Development – Improve the Go-based backend (Server Development Guide)
- UI Development – Enhance the Next.js/React frontend (UI Development Guide)
- CLI Development – Extend mesheryctl capabilities (CLI Development Guide)
Non-Code Contributions
- Documentation – Improve user guides, API references, and tutorials
- Testing – Write tests, report bugs, and verify fixes (Testing Guide)
- Design – Contribute UX/UI designs and improvements
- Community – Help users on Slack, review pull requests, and participate in community calls
Getting Started
Prerequisites
Before you begin, ensure you have the following installed: For Server Development (Go):- Go 1.21 or later
- Docker (for containerized builds)
- PostgreSQL (for database operations)
- Node.js 16, 17, 18, 19, or 20
- npm or yarn
- Go 1.21 or later
- Git
- Make
- kubectl (for Kubernetes integration testing)
Development Workflow
- Fork the Repository – Create your own fork of the Meshery repository
- Create a Branch – Branch from
masterwith a descriptive name (e.g.,feature/add-workspace-filter) - Make Changes – Implement your changes following our Code Style Guide
- Test Locally – Run tests and verify your changes work as expected
- Commit Changes – Use conventional commit messages with DCO sign-off
- Open a Pull Request – Submit your changes for review
Git Workflow
Branching Strategy
master– Main development branch; all PRs target this branch- Feature branches – Create from
masterwith descriptive names - Release branches – Managed by maintainers for stable releases
Commit Messages
Follow this format for commit messages:[UI] Add workspace filter dropdown[Server] Fix Kubernetes connection timeout[CLI] Add support for pattern validation
Developer Certificate of Origin (DCO)
All commits must be signed with the Developer Certificate of Origin (DCO). This certifies that you have the right to submit the code you are contributing. Sign your commits with:-s flag automatically adds the Signed-off-by line.
Linking Issues and PRs
Reference related issues and pull requests in your commit messages:Fixes #1234– Closes issue #1234 when the PR is mergedRelates to #5678– Links to issue #5678 without closing it
Code Review Process
- Automated Checks – CI runs linting, tests, and builds
- Maintainer Review – At least one maintainer reviews your code
- Community Feedback – Other contributors may provide feedback
- Revisions – Address review comments and update your PR
- Approval – Once approved, your PR will be merged
Quality Standards
Before submitting a pull request, ensure:- All Go code passes
make golangci - All JavaScript code passes
make ui-lint - Tests pass locally
- Code follows project conventions
- Documentation is updated for new features
Community Resources
- Slack – Join the CNCF Slack and find us in
#meshery - Community Meetings – Weekly community calls (see Community Calendar)
- Discussion Forum – GitHub Discussions
- Social Media – Follow @mesheryio on Twitter
Security
If you discover a security vulnerability, please DO NOT open a public issue. Instead, email security@meshery.dev. We will acknowledge your report within 10 business days. See our Security Policy for more details.License
By contributing to Meshery, you agree that your contributions will be licensed under the Apache License 2.0.Next Steps
Development Setup
Set up your local development environment
Code Style Guide
Learn Meshery’s coding conventions
Server Development
Contribute to the Go backend
UI Development
Contribute to the React frontend