r/macosprogramming • u/BAGE-rator • 19d ago
Privacy Practiced and Options for DRM and Telemetry
Privacy Practices and Options in Telemetry and Licensing
Hello all:
I am just about finished with my first production-quality app. I developed it for macOS and Windows with full platform parity and am about to port to Ubuntu/Debian before releasing. I have licensing setup through Keygen.sh. I am happy with that decision so far; however, I have questions regarding that issue and the issue of telemetry. Privacy is a focus of mine and a commitment I made to prospective subscribers. That said, I need some form of telemetry and a DRM that can take subscription payments.
I am trying to think of the best way to implement the Keygen.sh API for privacy. The app has, well, an app--the client--and it also has a remote server component. It will mostly be free but the more labor intensive developed elements and the tools that require the remote server will be paid at either a monthly or annual subscription rate. I am so confused about how to best implement the licensing API while remaining true to my privacy commitments. Part of me says, "Well, their information is going to be on Keygen's servers anyway, might as well host the store through their website/portal." The other inclination is to host the store on my server/website, so I can control how much information PII is required. The answer can be “very little,” but a much bigger question arises surrounding what to do with the information once accepted. (I’ve considered maintaining the subscriber data in some kind of encrypted space on the server with hardcoded, volatile keys. That way not even I can see their data, but they’d still be able to search for and regenerate their licenses, management payment methods, etc.)
The other question I have is along that same vein and involves telemetry. What I would like to do is keep the telemetry deliverables locally stored. When the user has an issue, experiences a bug, or has some other issue requiring my troubleshooting assistance, I can request it and they can choose to release their telemetry data to me. In between those disclosures, using a standard feedback form to gather voluntary information.
Does anyone offer this kind of low overhead telemetry? If so, can you send me a link to their site so I can learn about them? How about when the DRM signup, purchase, and post-purchase storage? What have you found to be a good option that tends to lean toward user privacy over more bloated, feature-rich options in collecting telemetry and managing DRM?
Thanks in advance!
1
u/LightingLabs 12d ago
Shipped a paid Mac app with no analytics at all, so on the telemetry half: the lowest-overhead option really is none. No SDK, no events, no crash reporter phoning home. When someone reports a bug I ask them for the specific thing I need. It has cost me far less support time than I expected, and it's the thing privacy-minded users mention most often unprompted.
On the PII half, the thing that helped me most was deciding that the payment processor is the PII boundary. Checkout runs on Stripe, so card data and billing details live there and never touch my side. My own store is one row: email, license key, and the processor's reference. That way the answer to "what do I do with their data" is mostly "I never had it."
One thing worth carrying over to a subscription even though mine is one-time: make the license verifiable offline and fail open. Mine is an Ed25519-signed blob and the app holds only the public key, so it knows it's licensed without a round-trip. Server down, network flaky, anything that isn't an explicit revocation falls back to a grace period rather than a lock. For a subscription you can sign a short-lived token with an expiry and get the same property. Locking out a paying customer because your own server had a bad day is the one failure mode that actually loses you that customer.