CatimaLoyalty/Android

Implement crash report capturing

Opened this issue · 3 comments

Sometimes, things crash. Google Play's "Crashes and ANRs" feature is... subpar, to say the least. Recently I was trying to debug something with an user and their crashes would not show up in Google Play. Asking people to configure Scoop just isn't viable for a lot of non-technical users.

There are a few requirements to this crash reporting:

  1. No reporting without user consent
  2. Client library must be fully FOSS
  3. Crash reporting must be at no cost (preferably a hosted Open Source plan on a FOSS backend, I know this is a hard ask but Catima simply has no budget)

I've looked into ACRA and Sentry a bit.

ACRA is definitely pretty easy, but there doesn't seem to be any kind of hosted backend. Sending emails is free but that is definitely not user-friendly for non-technical users (and may scare some users when it "suddenly" opens their email client).

Another very popular library is the Sentry library. While Sentry seems to have gone closed source recently (they call it "Fair Source"), other hosted alternatives like GlitchTip seem to exist. The problem with Sentry seems to be that it by default does not respect user consent at all. It will just send everything online. It is possible to start Sentry in a disabled state, but I have not yet found documentation on how to make Sentry ask for permission the first time a crash report happens. It may be acceptable to just ask permission to report all crashes on first launch, but I'd rather not bother users until a crash actually happens.

We also need to consider the internet access thing. We may want to create a new "offline" flavour, which remains fully offline. Google Play should probably just use the online flavour, but we should discuss with app stores like @IzzySoft's IzzyOnDroid what their users may prefer (most likely most IzzyOnDroid users are technical enough to be able to install Scoop or in other ways provide a crash log, but there may be other online features in the future at some point).

While it's possible to install Sentry as opt-in (I can check and give you a list of examples with apps having done so), since DroidCon I have my questions concerning consent as well (they've subscribed me to one of their mailing lists without my consent, which I was not much amused about).

That said, there are some more alternatives you might wish to take a look at (we should integrate (parts of) that snippet with the IoD wiki at one point, to make such things easier to find), e.g. Plausible Analytics, Swetrix and umami. The latter describes itself as a "privacy-focused alternative to Google Analytics"; I haven't yet checked those three at all, so I cannot really say what I'd recommend. aptabase sounds like a good candidate as well: "Open Source, Privacy-First and Simple Analytics for Mobile, Desktop and Web Apps"; self-hostable, but also has a managed cloud solution with a free trial.

I looked at your suggestions (thanks for that!) but most of them don't really seem to be written around logging crashes but more about general analytics, just like trying to follow a visitor on a website (like "Google Analytics" or "Matomo") and I couldn't quickly find any way info on implementing crash reporting.

My main concern is crashes. While performance metrics could be interesting as well for further optimizing the speed of the app I care more about stability than speed and keeping Catima lightweight and fast has historically not really been a big issue.

My main concern is crashes.

Beetle and backtrace would fit that, IIRC. But I haven't looked deeper into them. Not to mention tracedroid, that seems no longer maintained (or absolutely mature and no changes because of that) – but yeah, Beetle hasn't seen an update in 2 years either. Backtrace sounds like a real match – but unfortunately with a real catch: account needed, meh.

Oh, must update the list! How about CrashReporter from Sunil (author of the IzzyOnDroid app)? Ah, OK, "mail only" again, hm… Yeah, afraid I'm out of ideas then, sorry.