commons-app / apps-android-commons

The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons
https://commons-app.github.io/
Apache License 2.0
1.02k stars 1.23k forks source link

Update crash reporting framework #858

Open psh opened 7 years ago

psh commented 7 years ago

I notice that the app is using the ACRA crash reporter. In the commercial app experience I've had, we moved away from ACRA to Crashlytics several years ago. Google bought Crashlytics back in January and are now suggesting that people use it in preference to Firebase crash reporting. Crashlytics is free.

Out of the box, in addition to crash reporting, Crashlytics offers

Crash reports are collected in the web interface so everyone with an account (say, all the folk with commit access here) would be able to look at them. Want to try it out / evaluate it?

The code to switch is on a branch in my fork if you're curious.

misaochan commented 7 years ago

The link to Crashlytics brings up Fabric - was that intended?

If the link is correct, is Fabric/Crashlytics open source? I understand that it is free, but AFAIK according to our policies we cannot use non-open source dependencies?

janpio commented 7 years ago

according to our policies we cannot use non-open source dependencies?

These were mentioned a few times already. Are these documented anywhere?

psh commented 7 years ago

Crashlytics started out a standalone crash reporting service that was bought by Twitter and integrated into the wider Fabric SDK in 2013. Last year it was bought by Google with the plan for Crashlytics to replace their existing Firebase crash reporting system.

So, no it's not open source but it is free and part of the overall portfolio of other Google tools. Do we plan on using Google SDKs for push notifications (https://firebase.google.com/products/cloud-messaging/)? This would likely fall into a similar category as that.

I wasn't aware of the open-source only rule. I'm happy to close this issue in that case.

janpio commented 7 years ago

(HockeyApp would be an alternative whose SDKs are open source on Github)

nicolas-raoul commented 7 years ago

The HockeyApp server is not open source either. We have no requirement that server-based code is 100% open source, but in accordance with https://wikimediafoundation.org/wiki/Privacy_policy we must be very careful about what we let third-party companies know about our users.

janpio commented 7 years ago

What are the "main" Wikipedia apps doing for crash reporting? If they built their own thing, maybe one can piggyback on them...

misaochan commented 7 years ago

@nicolas-raoul Wasn't there an issue with the use of Google Maps SDKs for lat/long calculations when I was implementing the list of Nearby places? https://github.com/commons-app/apps-android-commons/issues/73#issuecomment-239756301 Perhaps we might need to discuss this and agree on a policy for which external libraries and SDKs we can and cannot use (and document it on the wiki, as @janpio suggests).

Also, what are the requirements for F-Droid inclusion? Is it just apps relying on Google Play Services that cannot be included?

@psh Yeah, I was wondering about that, too. We have been finding it difficult to implement push notifications for that reason.

nicolas-raoul commented 7 years ago

That comment was about using a proprietary Android component directly on the phone. Google Play Services can be considered a library, as it provides methods for all sorts of random things. A Apache2 program can not call a proprietary library.

Calling a proprietary server via HTTP calls, on the other hand, is less of a problem, if privacy is respected.

If we choose to call a proprietary service, though, we will get a negative badge on F-Droid saying "promotes non-free network services". (free being used with the meaning of free software)

nicolas-raoul commented 7 years ago

I started a wiki paragraph about this topic here: https://github.com/commons-app/apps-android-commons/wiki/Code-style#external-libraries

misaochan commented 7 years ago

Thanks for the clarification @nicolas-raoul ! I would be on board with using Crashlytics in that case, assuming the privacy policy isn't contravened, and if the benefits exceed the downsides (the negative F-Droid badge). :)

nicolas-raoul commented 7 years ago

That means telling Microsoft the IP address of our users. I am not sure how WMF will see that :-/

On Tue, Sep 5, 2017 at 7:04 PM, Josephine Lim notifications@github.com wrote:

Thanks for the clarification @nicolas-raoul https://github.com/nicolas-raoul ! I would be on board with using Crashlytics in that case. :)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/commons-app/apps-android-commons/issues/858#issuecomment-327131170, or mute the thread https://github.com/notifications/unsubscribe-auth/AAGFBisC6UDXT8K7QRfg50wmx6PgT6qtks5sfRykgaJpZM4PE3wW .

misaochan commented 7 years ago

If it contravenes the privacy policy, perhaps not a good idea then.

nicolas-raoul commented 7 years ago

That's a grey area. For some reason giving our users' IP addresses to Mapbox did not sound problematic to them. Better ask WMF case-by-case I think, with a clear explanation of the benefits.

On Tue, Sep 5, 2017 at 8:25 PM, Josephine Lim notifications@github.com wrote:

If it contravenes the privacy policy, perhaps not a good idea then.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/commons-app/apps-android-commons/issues/858#issuecomment-327147683, or mute the thread https://github.com/notifications/unsubscribe-auth/AAGFBkdZl264dWGG5GZVC9HT6dW_J8ySks5sfS-agaJpZM4PE3wW .

psh commented 7 years ago

Looks like the main Wikipedia app uses HockeyApp for Android for crash reporting.

janpio commented 7 years ago

Haha, I also still had a tab open where I researched this a few minutes ago: https://github.com/wikimedia/apps-android-wikipedia/search?utf8=%E2%9C%93&q=hockeyapp&type=

nicolas-raoul commented 7 years ago

I guess we can use it then.

On Tue, Sep 5, 2017 at 10:47 PM, Jan Piotrowski notifications@github.com wrote:

Haha, I also still had a tab open where I researched this a few minutes ago: https://github.com/wikimedia/apps-android-wikipedia/search? utf8=%E2%9C%93&q=hockeyapp&type=

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/commons-app/apps-android-commons/issues/858#issuecomment-327180314, or mute the thread https://github.com/notifications/unsubscribe-auth/AAGFBqRmHxDcMmt5CFL3qsXapf_AjgMYks5sfVD0gaJpZM4PE3wW .

maskaravivek commented 5 years ago

Yes, the Wikipedia app uses Hockey app for Crash reporting and @sharvaniharan from the Wikipedia Android team confirmed the same during the hackathon. It would be great if our app also starts using Hockeyapp. Its open source so unlike Fabric or Firebase it should be safe to use this.

Apart from automatic crash reporting, Hockeyapp has a few other features as well, which we check and use if needed. https://github.com/bitstadium/HockeySDK-Android

Also, Hockeyapp is different from Acra as:

As the device metadata, crash reports are automatically grouped, its easier to find patterns and understand the issue easily.

For eg.

HockeyApp

@misaochan @ashishkumar468 It would be nice to have your opinions on this. :)

janpio commented 5 years ago

Note that HockeyApp won't be available much longer and has be replaced by Visual Studio App Center: https://hockeyapp.net/

maskaravivek commented 5 years ago

Thanks for pointing it out @janpio! I didn't know about App Center.

Looks like App center SDK is also open source. https://github.com/microsoft/appcenter-sdk-android

@dbrant @sharvaniharan Do you have any opinions on what platform we should use for crash reporting?

ashishkumar468 commented 5 years ago

I think adding the hockey app sdk will be of great help. As @maskaravivek mentioned

Also, Hockeyapp is different from Acra as:

it sends the crash reports automatically, rather than the user having to send an email the crash reports are automatically grouped on a dashboard so it is easy to track and resolve issues.

Right now it is really painful to browse and fix the crashes from the google groups. Also, as the crashes are grouped together, it will also help us prioritise them based on the frequency.

misaochan commented 5 years ago

Hmm, I guess it depends on whether the new App Center is allowed under policy - if it is, I'm good with doing the switch from ACRA considering its multiple benefits. @dbrant @sharvaniharan What does the Wikipedia app plan to do when Hockey is deprecated? Will you be switching to App Center?

dbrant commented 5 years ago

Yes, presumably HockeyApp is being folded into AppCenter. I don't think it's going away, so we'll keep using it. It's been useful to us for being able to add extra metadata to the crashes, such as the user's language selection. If the new AppCenter experience proves to be inadequate in some way, then we'll happily go back to using the generic Play Store crash reporting, which is perfectly fine, too.

misaochan commented 5 years ago

Yay, thanks for the feedback @dbrant ! Let's proceed with integrating HockeyApp/AppCenter in that case. :)

Re: Play Store crash reporting, it is a problem for us to rely on that as only myself and @nicolas-raoul have access to the WMF Play Store account at the moment. Adding more people would require Legal's consent (and we did not get it the last time we asked). However, if we use HockeyApp, we can just migrate all the core devs over since the NDA that they signed should suffice for that (I don't think Hockey gives us any additional information that ACRA isn't already, it just organizes it better).

misaochan commented 5 years ago

I just realized that there might be a benefit of ACRA - it lets the user comment on what they are doing during the crash, and we can follow up with them because we have their email address from the email that they sent us. @ashishkumar468 how important do you think this would be for your bug-solving? Maybe we should keep Acra AND implement Hockey (as a replacement for the generic Play Store crash reporting)?

ashishkumar468 commented 5 years ago

I am okay with having both :-), The comment from users is definitely valuable.