feat: Minimize identifying information in bugreport

In order to comply with recent privacy laws such as GDPR and CCPA, the
bug report utility has been updated to remove personally identifiable
information such as device serial number and system hostname from the
output.

In addition, this change also adds a PRIVACY.md file which describes how
this project handles data, in compliance with GDPR/CCPA. Documentation
is updated to link to the privacy document as well.
pull/58/head
nirenjan 2026-03-03 17:55:26 -08:00
parent 9361c7af5c
commit 108293abdf
6 changed files with 72 additions and 4 deletions

58
PRIVACY.md 100644
View File

@ -0,0 +1,58 @@
# Privacy
This document describes how the libx52 project handles data, for compliance with
privacy laws such as the GDPR and CCPA.
## Summary
- **No automatic collection**: The software does not transmit any data to the
- project or third parties. No telemetry, analytics, or crash reporting is
- implemented.
- **Local operation**: All processing is on your machine. Configuration and logs
- stay local unless you choose to share them (e.g. when opening a bug report).
## Data that may be displayed or stored locally
| Data | Where | Purpose |
|------|--------|---------|
| **Device serial number** | `evtest` only | Shown when you run evtest against a connected device (for local identification). **Not** included in **x52bugreport** output. |
| **Device type info** | `x52bugreport`, `evtest` | Vendor ID, product ID, device version, manufacturer and product name (e.g. "Saitek" / "X52 Pro"). No serial number or hostname in bugreport. |
| **System information** | `x52bugreport` only | Kernel name/release, machine architecture, kernel version string. **Hostname is not included.** |
| **Build environment** | `x52bugreport` only | Compiler, build date, kernel/arch/OS version at build time. No hostname or other machine identifier. |
| **Paths** | Daemon logs (if enabled) | Log file path, config path, socket path. Default paths use system directories (e.g. `/var`, `/run`, `/etc`), not your home directory. |
| **Configuration** | Config files (e.g. under `/etc/x52d/`) | MFD/LED and daemon settings. Stored only on your system. |
None of this data is sent anywhere by the software. The only way it leaves your
system is if you voluntarily paste it (e.g. into a GitHub issue).
## Bug reports
**x52bugreport** output is designed to avoid personal and device identifiers:
- **Device serial number** and **system hostname** are **not** included in the output.
- Included: package/build version, compiler, build date, kernel and machine type, library versions, device vendor/product ID and device name (manufacturer/product strings only).
You may still redact any line before posting if you prefer. For most bugs, the information above is sufficient.
## Your rights (GDPR / CCPA style)
- **No account or sign-up** is required to use the software, so we do not hold
an account-based profile on you.
- **No selling of data**: We do not collect or sell personal data.
- **Transparency**: This document describes what the software can display or
store locally.
- **Control**: You decide whether to run `x52bugreport` and what to include when
opening an issue.
## Third-party services
- **Source and issues**: If you clone the repo or open an issue on GitHub,
GitHubs privacy policy applies to that interaction ([GitHub Privacy
Statement](https://docs.github.com/en/site-policy/privacy-policies/github-privacy-statement)).
- **Packages**: Installation via Ubuntu PPA or Arch AUR is subject to
Canonicals or the AURs respective terms and privacy practices.
## Changes
We may update this document to reflect changes in the software or in legal
requirements. The current version is in the project repository.

View File

@ -18,6 +18,8 @@ capable of reading the joystick, but it cannot control the MFD or LEDs.
Most of the extra functionality can be handled from userspace. See
the individual folders for README information.
For data handling and privacy (e.g. GDPR/CCPA), see [PRIVACY.md](PRIVACY.md).
**Note:** This repository currently only provides commandline interfaces to
control the MFD and LEDs. If you are not comfortable working in the commandline,
then the [gx52](https://gitlab.com/leinardi/gx52) project might be a better fit

View File

@ -21,4 +21,6 @@ x52bugreport_LDFLAGS = \
x52bugreport_LDADD = libx52io.la
$(x52bugreport_OBJECTS): version-info.h
EXTRA_DIST += bugreport/bugreport.dox

View File

@ -59,8 +59,6 @@ static void print_devinfo(void)
printf("Device name: '%s' '%s'\n",
libx52io_get_manufacturer_string(ctx),
libx52io_get_product_string(ctx));
printf("Serial number: '%s'\n",
libx52io_get_serial_number_string(ctx));
libx52io_close(ctx);
devinfo_cleanup:
@ -75,7 +73,9 @@ int main(int argc, char **argv)
puts("================");
printf("Package version: %s\n", VERSION);
printf("Build version: %s\n", BUILD_VERSION);
printf("Built on: %s\n", BUILD_HOST);
printf("Build host kernel: %s\n", BUILD_KERNEL);
printf("Build host architecture: %s\n", BUILD_ARCH);
printf("Build host version: %s\n", BUILD_OS_VERSION);
printf("Compiler: %s\n", BUILD_COMPILER);
printf("Build date: %s\n", BUILD_DATE);
printf("version-info %s\n", BUILD_VERSION_INFO_IDENT);

View File

@ -15,6 +15,10 @@
current system and build environment. The reported information can be provided
when raising a bug report on https://github.com/nirenjan/libx52/issues.
The output does not include device serial number or system hostname. You may
redact any line before posting if you prefer. See the project PRIVACY.md for
details.
# USAGE
\b x52bugreport

View File

@ -34,7 +34,9 @@ fi
cat <<EOM
#define BUILD_VERSION "${DESCRIBE}"
#define BUILD_DATE "$(date +%Y-%m-%dT%H:%M:%S%z)"
#define BUILD_HOST "$(uname -a)"
#define BUILD_ARCH "$(uname -mp)"
#define BUILD_KERNEL "$(uname -sr)"
#define BUILD_OS_VERSION "$(uname -v)"
#define BUILD_COMPILER "$(${CC} --version | head -n1)"
EOM
echo '#define BUILD_VERSION_INFO_IDENT "$Id$"'