11 KiB
Contributing Guidelines
Welcome to SigNoz Contributing section 🎉
Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional documentation, we greatly value feedback and contributions from our community.
Please read through this document before submitting any issues or pull requests to ensure we have all the necessary information to effectively respond to your bug report or contribution.
Sections:
- General Guidelines
- How to Contribute
- Develop Frontend
- Contribute to Query-Service
- Contribute to SigNoz Helm Chart
1. General Instructions 📝
Before making any significant changes and before filing an issue, please check existing open, or recently closed, issues to make sure somebody else hasn't already reported the issue. Please try to include as much information as you can.
Details like these are incredibly useful:
- Requirement - what kind of use case are you trying to solve?
- Proposal - what do you suggest to solve the problem or improve the existing situation?
- Any open questions to address❓
If you are reporting a bug, details like these are incredibly useful:
- A reproducible test case or series of steps.
- The version of our code being used.
- Any modifications you've made relevant to the bug🐞.
- Anything unusual about your environment or deployment.
Discussing your proposed changes ahead of time will make the contribution process smooth for everyone.
Once the approach is agreed upon✅, make your changes and open a Pull Request(s).
Note: Unless your change is small, please consider submitting different Pull Rrequest(s):
- 1️⃣ First PR should include the overall structure of the new component:
- Readme, configuration, interfaces or base classes, etc...
- This PR is usually trivial to review, so the size limit does not apply to it.
- 2️⃣ Second PR should include the concrete implementation of the component. If the size of this PR is larger than the recommended size, consider splitting it into multiple PRs.
- If there are multiple sub-component then ideally each one should be implemented as a separate pull request.
- Last PR should include changes to any user-facing documentation. And should include end-to-end tests if applicable. The component must be enabled only after sufficient testing, and there is enough confidence in the stability and quality of the component.
You can always reach out to ankit@signoz.io to understand more about the repo and product. We are very responsive over email and SLACK.
- If you find any bugs → please create an issue.
- If you find anything missing in documentation → you can create an issue with the label
documentation. - If you want to build any new feature → please create an issue with the label
enhancement. - If you want to discuss something about the product, start a new discussion.
Conventions to follow when submitting Commits and Pull Request(s).
- We try to follow Conventional Commits. , more specifically the commits and PRs should have type specifiers prefixed in the name. This should give you a better idea.
e.g. If you are submitting a fix for an issue in frontend, the PR name should be prefixed with fix(FE):
-
Follow GitHub Flow guidelines for your contribution flows.
-
Feel free to ping us on #contributing or #contributing-frontend on our slack community if you need any help on this :)
2. How to Contribute 🙋🏻♂️
There are primarily 2 areas in which you can contribute to SigNoz
- Frontend (Written in Typescript, React)
- Backend (Query Service, written in Go)
Depending upon your area of expertise & interest, you can choose one or more to contribute. Below are detailed instructions to contribute in each area.
Please note: If you want to work on an issue, please ask the maintainers to assign the issue to you before starting work on it. This would help us understand who is working on an issue and prevent duplicate work. 🙏🏻
⚠️ If you just raise a PR, without the corresponding issue being assigned to you - it may not be accepted.
3. Develop Frontend 🌝
Need to update https://github.com/SigNoz/signoz/tree/main/frontend
3.1 Contribute to Frontend with Docker installation of SigNoz
-
git clone https://github.com/SigNoz/signoz.git && cd signoz -
comment out frontend service section at
deploy/docker/clickhouse-setup/docker-compose.yaml#L62 -
run
cd deployto move to deploy directory -
Install signoz locally without the frontend
- Add below configuration to query-service section at
docker/clickhouse-setup/docker-compose.yaml#L38
ports: - "8080:8080"- If you are using x86_64 processors (All Intel/AMD processors) run
sudo docker-compose -f docker/clickhouse-setup/docker-compose.yaml up -d - If you are on arm64 processors (Apple M1 Macbooks) run
sudo docker-compose -f docker/clickhouse-setup/docker-compose.arm.yaml up -d
- Add below configuration to query-service section at
-
cd ../frontendand change baseURL tohttp://localhost:8080in filesrc/constants/env.ts -
yarn install -
yarn dev
Notes for Maintainers/Contributors who will change Line Numbers of Frontend & Query-Section. Please Update Line Numbers in
./scripts/commentLinesForSetup.sh
3.2 Contribute to Frontend without installing SigNoz backend
If you don't want to install the SigNoz backend just for doing frontend development, we can provide you with test environments that you can use as the backend. Please ping us in the #contributing channel in our slack community and we will DM you with <test environment URL>
git clone https://github.com/SigNoz/signoz.git && cd signoz/frontend- Create a file
.envwithFRONTEND_API_ENDPOINT=<test environment URL> yarn installyarn dev
Frontend should now be accessible at http://localhost:3301/application
4. Contribute to Backend (Query-Service) 🌕
Need to update: https://github.com/SigNoz/signoz/tree/main/pkg/query-service
4.1 To run ClickHouse setup (recommended for local development)
- Clone SigNoz,
git clone https://github.com/SigNoz/signoz.git
- run
cd signozto move to signoz directory, - run
sudo make dev-setupto configure local setup to run query-service, - comment out frontend service section at
docker/clickhouse-setup/docker-compose.yaml, - comment out query-service section at
docker/clickhouse-setup/docker-compose.yaml, - add below configuration to clickhouse section at
docker/clickhouse-setup/docker-compose.yaml,
expose:
- 9000
ports:
- 9001:9000
-
run
cd pkg/query-service/to move toquery-servicedirectory, -
Open
./constants/constants.go,- Replace
const RELATIONAL_DATASOURCE_PATH = "/var/lib/signoz/signoz.db"
with →const RELATIONAL_DATASOURCE_PATH = "./signoz.db".
- Replace
-
Now, install SigNoz locally without the
frontendandquery-service,- If you are using
x86_64processors (All Intel/AMD processors) runsudo make run-x86 - If you are on
arm64processors (Apple M1 Macs) runsudo make run-arm
- If you are using
Run locally
ClickHouseUrl=tcp://localhost:9001 STORAGE=clickhouse go run main.go
Notes for Maintainers/Contributors who will change Line Numbers of Frontend & Query-Section. Please Update Line Numbers in
./scripts/commentLinesForSetup.sh
Query Service should now be available at http://localhost:8080
If you want to see how the frontend plays with query service, you can run the frontend also in your local env with the baseURL changed to
http://localhost:8080in filesrc/constants/env.tsas the query-service is now running at port8080
5. Contribute to SigNoz Helm Chart
Need to update https://github.com/SigNoz/charts.
5.1 To run helm chart for local development
- run
git clone https://github.com/SigNoz/charts.gitfollowed bycd charts - it is recommended to use lightweight kubernetes (k8s) cluster for local development:
- create a k8s cluster and make sure
kubectlpoints to the locally created k8s cluster - run
make dev-installto install SigNoz chart withmy-releaserelease name inplatformnamespace. - run
kubectl -n platform port-forward svc/my-release-signoz-frontend 3301:3301to make SigNoz UI available at localhost:3301
To install the HotROD sample app:
curl -sL https://github.com/SigNoz/signoz/raw/main/sample-apps/hotrod/hotrod-install.sh \
| HELM_RELEASE=my-release SIGNOZ_NAMESPACE=platform bash
To load data with the HotROD sample app:
kubectl -n sample-application run strzal --image=djbingham/curl \
--restart='OnFailure' -i --tty --rm --command -- curl -X POST -F \
'locust_count=6' -F 'hatch_rate=2' http://locust-master:8089/swarm
To stop the load generation:
kubectl -n sample-application run strzal --image=djbingham/curl \
--restart='OnFailure' -i --tty --rm --command -- curl \
http://locust-master:8089/stop
To delete the HotROD sample app:
curl -sL https://github.com/SigNoz/signoz/raw/main/sample-apps/hotrod/hotrod-delete.sh \
| HOTROD_NAMESPACE=sample-application bash
Again, feel free to ping us on #contributing or #contributing-frontend on our slack community if you need any help on this :)