[pkg-go] [RFS] nftban v0.32.20 — DFSG review, DEP-14 workflow & init system flexibility
Antonios Voulvoulis
contact at nftban.com
Sat Nov 8 14:30:40 GMT 2025
Hello Debian Developers and Go Packaging Team,
NFTBan v0.32.20 has reached feature-freeze and we are preparing for Debian Mentors submission.
Below is a brief summary of packaging details and open questions regarding DFSG, init-system support, and Go build policy.
We’d greatly appreciate senior maintainer feedback before our first upload attempt.
---
## Executive Summary
NFTBan is a production-ready nftables automation framework designed for security auditing and adaptive network defense.
We’re targeting official inclusion into Debian via `mentors.debian.net` under MPL-2.0.
**Project:** https://github.com/itcmsgr/nftban
**License:** MPL-2.0 (DFSG-free)
**Language:** Go + Bash
**Build system:** debhelper compat 13, dh-golang
**Init:** systemd service + sysv fallback (via dh_installinit)
**Target:** Debian Bookworm / Trixie / Sid
---
## Packaging Overview
### 1. DFSG Compliance
All components are MPL-2.0 licensed, with no external binaries or blobs.
Upstream vendored Go modules will be **stripped** for Debian builds using `dh-make-golang` conventions.
**Question:**
- Q1.1: Is MPL-2.0 still considered DFSG-compatible without special license clarifications?
- Q1.2: Should we provide `debian/copyright` using DEP-5 machine-readable format for Go module licensing metadata?
---
### 2. Source Layout and DEP-14
Our repository follows a hybrid structure:
```
main/
├── cmd/feeds/
├── cmd/geoip/
├── internal/
├── pkg/
└── packaging/debian/
```
We intend to migrate to **DEP-14** branch naming (`debian/latest`, `debian/bookworm`, `debian/trixie`).
**Questions:**
- Q2.1: Should we maintain `debian/latest` or align directly to Debian releases (bookworm/trixie)?
- Q2.2: Is DEP-14 now mandatory for new Go packages, or still recommended best practice?
---
### 3. Init System Compatibility
NFTBan runs as a background daemon with systemd units and optional SysV scripts.
**Questions:**
- Q3.1: Is it acceptable to use systemd as default with SysV fallback via `dh_installinit`?
- Q3.2: Are there preferred debhelper macros for timer-based services instead of cron?
- Q3.3: Should timers install disabled by default (Debian Policy 9.11)?
---
### 4. Go Packaging Policy (dh-golang)
We’re currently using Go 1.21 and plan to switch to `dh-golang` with minimal vendor data.
**Questions:**
- Q4.1: Should Go modules be vendored in the source tarball or removed for Debian builds?
- Q4.2: Is `XS-Go-Import-Path: nftban` required in `debian/control` for non-library tools?
- Q4.3: Should builds use `go generate` in `%build` or pre-generated assets?
---
### 5. Security and Linting Integration
NFTBan includes an internal security self-check (`nftban-maintenance.timer`).
It validates UID/GID, file integrity, and log retention. This timer is disabled by default on Debian.
**Questions:**
- Q5.1: Should we provide a `systemd-preset` file or leave activation manual?
- Q5.2: Are timers acceptable for EPEL/Debian dual maintenance?
- Q5.3: Should we include a `lintian-overrides` entry for Polkit rules and sysusers.d?
---
### 6. Debian Mentors Path and Sponsorship
We intend to publish via **mentors.debian.net** and seek sponsorship from the **pkg-go** team.
We will maintain an upstream watch file for GitHub releases and follow `uscan` versioning.
**Questions:**
- Q6.1: Should nftban go under the pkg-go team namespace, or as an independent package?
- Q6.2: Are there specific mentors preferred for Go + systemd projects?
- Q6.3: Any policy guidance for hybrid Go/Bash packages (dh-golang + shell hooks)?
---
### 7. Lintian and Policy Goals
Current `lintian` results (clean except warnings):
- `no-upstream-changelog` → resolved in v0.32.20
- `hardening-no-relro` → false positive (Go binary)
- `binary-without-manpage` → adding sectioned manpages for CLI tools
**Questions:**
- Q7.1: Should nftban ship manpages for internal daemons too, or only user-facing commands?
- Q7.2: Should we mark nftban-maintenance.timer as a “system service” in `debian/control`?
---
### 8. Log and State Handling
By design, nftban preserves logs and config files on uninstall (`apt remove`).
We follow Debian’s “preserve user data” principle but want to confirm expectations.
**Questions:**
- Q8.1: Should nftban purge logs on `apt purge` only?
- Q8.2: Is `/var/lib/nftban/config/system.conf` acceptable under FHS?
- Q8.3: Is it acceptable to keep `/var/log/nftban/` ownership as `root:root` post-uninstall?
---
### 9. Architecture and Build Reproducibility
NFTBan builds reproducibly on amd64, arm64, and ppc64le under pbuilder/sbuild.
No embedded timestamps are generated (`SOURCE_DATE_EPOCH` respected).
**Questions:**
- Q9.1: Should nftban adopt `reprotest` before submission?
- Q9.2: Should we include a `Testsuite: autopkgtest-pkg-go` entry?
- Q9.3: Is Salsa CI integration recommended prior to ITP?
---
## Contact
Antonios Voulvoulis
Founder & Architect — NFTBan
Security by Design • Open Source Transparency
https://nftban.com | https://github.com/itcmsgr/nftban
More information about the Pkg-go-maintainers
mailing list