Difference between revisions of "Documentation/Labs/ApplicationUsageAnalytics"
From Slicer Wiki
(Created page with "=Requirements= * We would need to know: ** Slicer application downloads ** extension downloads ** Slicer application startups ** Slicer module usage (how many times user switc...") |
(added non-blocking) |
||
Line 17: | Line 17: | ||
** data uploading: this is the only server-specific component | ** data uploading: this is the only server-specific component | ||
** Probably it would be a Python module, as Python SDK is available for almost all services | ** Probably it would be a Python module, as Python SDK is available for almost all services | ||
+ | ** must be non-blocking | ||
* Server: there are many options, none of them are perfect, see below | * Server: there are many options, none of them are perfect, see below | ||
Revision as of 17:16, 10 March 2017
Home < Documentation < Labs < ApplicationUsageAnalyticsRequirements
- We would need to know:
- Slicer application downloads
- extension downloads
- Slicer application startups
- Slicer module usage (how many times user switched to a module and % of time used)
- Possibility of hosting our own server would be preferred (to avoid blocked in certain countries, ensuring long-term access to our data, etc.)
- User should be notified and have the option to opt out
- It should not be tightly integrated into Slicer (should be an optional module that can be excluded from the build)
- It should be possible to customize it for private builds of Slicer (so that it can use a different backend)
Design
- Slicer-side:
- add a few Qt events that a Python module can observe (application startup, module switch, crash, etc)
- data caching (so that data can be uploaded later, when there is network connection)
- data accumulation (report metrics such as total hours of Slicer and individual modules used instead of reporting each module switch)
- data uploading: this is the only server-specific component
- Probably it would be a Python module, as Python SDK is available for almost all services
- must be non-blocking
- Server: there are many options, none of them are perfect, see below
Server options
- Hosted services: easier to get started, no need for experts to maintain/update; may be locked out from certain countries, limited customization
- Google Universal Analytics: The largest and most sophisticated solution for traffic analysis that you can get for free. APIs are provided for desktop app tracking, but built-in features are mostly geared towards website and e-commerce tracking - and not optimal for desktop applications (where you would want to send aggregate metrics, accumulate and upload data in batches, etc. - see comparison to Revulytics for a list of limitations).
- Many other similar services, for a small monthly fee (typically below $100), see https://github.com/onurakpolat/awesome-analytics
- Revulytics: Specialized desktop app usage tracker. It is supported on win/mac/linux, could do everything what we need very nicely, but it's not open (you have to link a binary library into your application).
- Self-hosted open-source systems: free, we can control our destiny, chance of being locked out from countries can be minimized; significant amount of work to set up and maintain