Contributing to Synapse
May 29, 2026 ยท View on GitHub
Contributor License Agreement (CLA)
Synapse is dual-licensed (Sustainable Use License + Enterprise License), so we ask every contributor to sign a CLA before we can merge their first pull request. The CLA grants Gen0Sec the right to relicense contributions across both license tracks, including the Enterprise tracks โ without it, we can't lawfully include community contributions in the paid modules.
There are two CLAs; pick the one that fits your situation:
Individual CLA (default)
Most contributors use the Individual CLA.
Signing is automated: when you open your first pull request, the
CLA Assistant workflow will check your status and, if needed, post a
comment with a one-line response you can paste to sign. It's a one-time
action per GitHub account; future PRs are gated automatically.
Bot accounts (dependabot, renovate, github-actions) are exempt.
Corporate CLA (for companies)
If you're contributing on behalf of a company that cannot bind itself through individual click-through (common at large enterprises, regulated industries, and any org whose policy requires a company-to-company IP contract), use the Corporate CLA instead.
Process:
- Your legal team reviews
.github/CORPORATE_CLA.md. - An authorized officer signs it (electronic signature is fine).
- Fill in Schedule A with either named employees + their GitHub usernames, or org-wide coverage by email domain / GitHub org.
- Email the signed CCLA to legal@gen0sec.com.
- Gen0Sec countersigns and adds the covered GitHub accounts to the CLA Assistant allowlist. Future PRs from those accounts bypass the per-PR ICLA prompt.
The CCLA only needs to be signed once per company; Schedule A can be updated by email as employees join or leave.
Development environment
Install deps (Ubuntu 24.04):
sudo apt-get install -y git build-essential clang llvm \
libelf-dev libssl-dev \
zlib1g-dev libzstd-dev pkg-config libcap-dev \
binutils-multiarch-dev curl cmake
vmlinux.h generation notes
This workspace contains a vmlinux.h header generated from the running kernel's BTF.
How it was fixed:
- The error
failed to load BTF from /sys/kernel/btf/vmlinux: Invalid argumentoccurred because the systembpftool(v5.15.x) was too old to parse the kernel 6.10 BTF types. - We built a newer
bpftoolfrom the Linux v6.10 sources, which uses a recent libbpf with support for new BTF kinds.
Steps to regenerate:
- Build bpftool from kernel tools:
git clone --depth=1 --branch v6.10 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git /tmp/linux make -C /tmp/linux/tools/bpf/bpftool -j$(nproc) sudo make install -C /tmp/linux/tools/bpf/bpftool - Generate header:
/usr/local/sbin/bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h
Tip: You can also use /usr/local/sbin/bpftool btf dump file /sys/kernel/btf/vmlinux > vmlinux.json if you want to inspect raw BTF in JSON form.
bpftool version used during this run:
/usr/local/sbin/bpftool -V=> v7.5.0, libbpf v1.5