Implement #1359: collect telemetry#2283
Conversation
|
Well, since it was decided in the devcall to implement this, it is ok for me if you go ahead. Regarding the choice of the tracking technology, I trust your skills. The code that is needed to track a dialog seems to be very simple in any case. I am just not sure if an opt-out is the way to go, or if it should rather be an opt-in. Maybe we could display a dialog asking for consent on first startup. That would be more privacy-friendly in my point of view and we do not want JabRef to appear that it tries to grab user data. I am sure there would be enough people who are willing to contribute their data even in case of opt-in. |
|
👍 for opt-in |
| <ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30"> | ||
|
|
||
| <!-- The key from the Azure portal: --> | ||
| <InstrumentationKey>c2435fd3-cb59-423c-846b-04898b101cc1</InstrumentationKey> |
There was a problem hiding this comment.
We should probably inject this later via an ENV variable?
There was a problem hiding this comment.
This is possible yes, but what is the advantage?
There was a problem hiding this comment.
Security by obscurity. In that way, the key is not in the source, but in TravisCI environment variables, where only JabRef developers have access to by using "echo $key" in the travis.yml in a pull request. If we can somehow encrypt the JAR file, we can further prevent others from stealing the key.
|
Nice that you give it a try 😄 👍 GA had no appropriate library? |
|
Why do you want to spy almost everything I do? |
|
@grimes2 My guess (I haven't participated in the discussion on this) is that this would enable us to see which features are actually used and which are not. If we had had data on content selector usage, we would not have removed them. At the same time, we would be able to see if there is a point at all in optimizing JabRef usage for really large databases or if this is a waste of time. |
|
I tried it out locally, the dialog appears as desired, and the option can be disabled via the preferences. Code-wise, I have no objections. However, JabRef does not terminate when I close it and I get the a lot of messages in the console, e.g.: Since this is a very sensitive topic, I think we should make the dialog a little more explanatory. Currently it says
While everything is in that statement, I think we should be more explicit and repeat ourselves. Suggestion:
I know this is quite long, but since this is a delicate topic, I think it is necessary. Btw.: where is the data actually stored? @JabRef/developers I think this is so important that everyone should consider it briefly. And a last comment: We will get flack from the Linux freaks when they find out that we dare to include a microsoft library. So be prepared for it ;-) |
|
I like your suggestion for the dialog text and updated it accordingly. The data is store on Microsoft Azure server...no idea where exactly 😄 . The reason for the error message is that a correct instrumentation key is only inserted by travis and thus you get these messages when you run JabRef from the IDE. |
* upstream/master: (39 commits) Fix fetcher test Allow failures for fetcher test (#2730) Use JabRefExecutor service Move DOI fetching to separate thread #2682 Remove gui dependency in logic (#2726) Fixed freeze on Mac OS X when creating/editing groups (#2727) Only ask once if telemetry data should be collected Update wiremock from 2.5.1 to 2.6.0 Update mockito-core from 2.7.21 to 2.7.22 Update log4j to latest version Azure test (#2724) Fix build Move expand filename to FileUtil Unicode conversion bibtexkey (#2720) Add sorting of all groups and subgroups, recursively (#2666) Only check capitalization of note and howpublished fields if they start with a word character Remove overhauled @author tag Implement #1359: collect telemetry (#2283) Add licenses of new dependencies Fix cssStyleHelper warnings ...


In this PR, Microsoft Azure Application Insights is used to record the following information about how JabRef is used:
If you give your ok, I will continue and implement the following:
In #1359, we decided to use google analytics for this, but as Microsoft already provided a nice interface for java, I went for this route.
gradle localizationUpdate?