Mathew Brown

Totally: I'd Ship It This Way Again

One of the tradeoffs I accepted when building my Android app is that I don't have any internet permissions. No analytics, no crash reporting SDK, no tracking, no silent telemetry, nothing.

I like that choice. I still like that choice.

It means the app is simpler, more private, and easier to explain. There's no hidden "well, technically we only collect…" paragraph. If the app doesn't need network access to do its job, I'd rather not ask for it.

The downside shows up after release.

Without production telemetry, post-release monitoring is basically nonexistent. I can't watch dashboards. I can't inspect crash logs from the field. I can't see what devices are struggling, what flows people abandon, or what weird edge cases are showing up in the wild. When something goes wrong, I only know if someone takes the time to tell me.

That makes bug finding harder than it would be in a more conventional Android setup. I have unit tests, instrumented tests, and UI tests. I test on physical devices and in emulators. I try to cover the obvious paths and likely failure modes. But Android is Android: there's a wide range of devices, OS versions, vendor customizations, and behaviors. I can test a lot, but I can't test everything.

Still, in practice, it has not felt like shipping blind.

What I have gotten instead is direct feedback from people who care enough to reach out. That has meant thoughtful issue reports, emails, suggestions, and pull requests. People have reported accessibility problems, translation issues, F-Droid build failures, device-specific bugs, and small UI improvements. They have suggested features I would not have thought of on my own. They have contributed translations and fixes directly.

A lot of that has come from F-Droid users, which is probably not surprising. People on F-Droid tend to care about openness, user control, and software that is not constantly phoning home. They also tend to understand the value of software that asks for less and collects less.

That kind of feedback loop does not scale the way telemetry scales, and it asks more of the people using the app. But it creates a different relationship. Instead of silently collecting data from users, I am depending on users who care enough to tell me what is wrong, explain what they are seeing, and sometimes help fix it. That is slower than a dashboard. It feels more human.

This is also not just how I built the app. I took the same approach with this website. I do not want to track people just because tracking is easy. I do not want to collect data simply because I might someday find it useful. I would rather know less and be able to say that I respected the people using what I made.

That choice means less visibility and more uncertainty. But it also creates a better relationship with the people on the other side of the software. When people report bugs, suggest improvements, send emails, or open pull requests, that is not just "monitoring." It becomes a community helping make the software better.

Would I do it this way again?

As Cartman said after speed-running Casa Bonita: "Totally."