Ella Core is an open-source project and we welcome contributions from the community. This document provides guidelines for contributing to the project. Contributions to Ella Core can be made in the form of code, documentation, bug reports, feature requests, and feedback. We will judge contributions based on their quality, relevance, and alignment with the project's tenets.
You will need a Linux machine with the following software installed:
- Docker
- Go
- Npm
- Rockcraft
Create a local registry
docker run -d -p 5000:5000 --name registry registry:2Build the image and push it to the local registry
rockcraft pack
sudo rockcraft.skopeo --insecure-policy copy oci-archive:ella-core_v1.8.0_amd64.rock docker-daemon:ella-core:latest
docker tag ella-core:latest localhost:5000/ella-core:latest
docker push localhost:5000/ella-core:latestINTEGRATION=1 go test ./integration/... -vgo test ./...Install pre-requisites:
sudo snap install node --channel=24/stable --classicnpm install --prefix ui
npm run build --prefix uiInstall pre-requisites:
sudo apt install clang llvm gcc-multilib libbpf-dev
sudo snap install go --channel=1.26/stable --classicGenerate the eBPF Go bindings:
go generate ./...Build the backend:
REVISION=`git rev-parse HEAD`
go build -ldflags "-X github.com/ellanetworks/core/version.GitCommit=${REVISION}" ./cmd/core/main.gouvx --with-requirements requirements-docs.txt mkdocs buildsudo snap install rockcraft --classic --edge
rockcraft pack -v
sudo rockcraft.skopeo --insecure-policy copy oci-archive:ella-core_v1.8.0_amd64.rock docker-daemon:ella-core:latest
docker run ella-core:latestgo test ./... -coverprofile coverage.out
go tool cover -func coverage.outElla Core's backend is written in Go. Please follow standard Go conventions for code structure, formatting, and documentation.
- Lint:
golangci-lint run - Vet:
go vet ./...
Ella uses an embedded SQLite database to store its data. Type mappings between Go and SQLite are managed using sqlair.
Ella Core's frontend is built with Vite and static files are embedded into the Go binary.
Running Docker in the same system as Ella Core can cause some issues because of IP forwarding. If your containers lose internal connectivity, you can restore Docker networking via sudo nft delete table inet filter.