Contributing
Please do! Thanks for your help! π Meshery is community-built and welcomes collaboration. Contributors are expected to adhere to the CNCFβs Code of Conduct.
General Contribution Flow
Meshery and itβs various architectural components are written in different languages, including Golang, Javascript (React.js and Next.js) To make building, testing, and the experience of contributing consistent across all Meshery components, a Makefile is included in the every repository. These make targets are what you will use to build, run, test, and document.
To contribute to Meshery, please follow this basic fork-and-pull request gitflow.
Adding your sign-off on commits (Developer Certificate of Origin)
- To contribute to this project, you must agree to the Developer Certificate of Origin (DCO) for each commit you make. The DCO is a simple statement that you, as a contributor, have the legal right to make the contribution.
-
See the DCO file for the full text of what you must agree to
and how it works here.
To signify that you agree to the DCO for contributions, you simply add a line to each of your
git commit messages:
Signed-off-by: Jane Smith <jane.smith@example.com> -
In most cases, you can add this signoff to your commit automatically with the
-sor--signoffflag togit commit. You must use your real name and a reachable email address (sorry, no pseudonyms or anonymous contributions). An example of signing off on a commit:$ git commit -s -m βmy commit message w/signoffβ -
To ensure all your commits are signed, you may choose to add this alias to your global
.gitconfig: ~/.gitconfig
Or you may configure your IDE, for example, VSCode to automatically sign-off commits for you:[alias] amend = commit -s --amend cm = commit -s -m commit = commit -s
Not sure where to start?
Follow these steps and you'll be right at home.
- See the Newcomers Guide for how, where, and why to contribute.
- Sign up for a MeshMate to find the perfect Mentor to help you explore the projects and find your place in the community.
- Familiarize yourself with the broader set of projects in Meshery's ecosystem, including the meshery-extensions repositories (this Repository Overview is a helpful resource): Spend time understanding each of the initiatives through high-level overviews available in the community drive and through discussions with your MeshMate.
- Identify your area of interest: Use the time with your MeshMate to familiarize yourself with the architecture and technologies used in the projects. Inform your MeshMate of your current skills and what skills you aim to develop.
- Play with Meshery: Put on your user hat and walk-through all of Mesheryβs features and functions as a user.
- Build Meshery Server and UI: Confirm that you have a usable development environment. See Guides below.
- Discuss with the community by engaging in the discussion forum.
- Contribute by grabbing any open issue with the help-wanted label and jump in. If needed, create a new issue. All pull requests should reference an open issue. Include keywords in your pull request descriptions, as well as commit messages, to automatically close issues in GitHub.
- Fill in a community member form to gain access to community resources.
Specific Contribution Guides
Here is a complete list of all of Mesheryβs contributing guides from Server to UI to CLI to Extensions and so on.
- Build & Release (CI) - Details of Meshery's build and release strategy.
- Contributing to Meshery Adapters - How to contribute to Meshery Adapters
- Contributing to Meshery CLI End-to-End Tests - How to contribute to Meshery Command Line Interface end-to-end testing with BATS.
- Contributing to Meshery CLI - How to contribute to Meshery Command Line Interface.
- Contributing to Meshery Docker Extension - How to contribute to Meshery Docker Extension
- Meshery Documentation Structure and Organization - Audience, high-Level outline & information architecture for Meshery Documentation
- Contributing to Meshery Docs - How to contribute to Meshery Docs.
- How to write MeshKit compatible errors - How to declare errors in Meshery components.
- Contributing to Meshery using git - How to contribute to Meshery using git
- Meshery CLI Contributing Guidelines - Design principles and code conventions.
- Contributing to Model Components - How to contribute to Meshery Model Components
- Contributing to Model Relationships - How to contribute to Meshery Models Relationships, Policies...
- Contributing to Models Quick Start - A no-fluff guide to creating your own Meshery Models quickly.
- Contributing to Models - How to contribute to Meshery Models, Components, Relationships, Policies...
- Contributing to Meshery Policies - How to contribute to Meshery Policies
- Contributing to Meshery Schemas - How to contribute to Meshery Schemas
- Contributing to Meshery Server Events - Guide is to help backend contributors send server events using Golang.
- Contributing to Meshery UI - Notification Center - How to contribute to the Notification Center in Meshery's web-based UI.
- Schema-Driven UI Development in Meshery - How to contribute to Meshery Schemas for UI
- Contributing to Meshery UI - Sistent - How to contribute to the Meshery's web-based UI using sistent design system.
- Contributing to Meshery UI End-to-End Tests - How to contribute to end-to-end testing in Meshery UI using Playwright.
- Contributing to Meshery UI - Dashboard Widgets - Guide to extending Meshery dashboards with custom widgets.
- Contributing to Meshery UI - How to contribute to Meshery UI (web-based user interface).
- Contributing - How to contribute to the Meshery project and any of its components.
- Contributing and Community - Information about contributing to the Meshery project and participating the Meshery community.
- Contributing to Meshery Server - How to contribute to Meshery Server
- Setting up Meshery Development Environment on Windows - How to set up Meshery Development Environment on Windows
- End-to-End Test Status - Status reports of Meshery's various test results.