Difference between revisions of "Documentation/Labs/ApplicationUsageAnalytics"

From Slicer Wiki
Jump to: navigation, search
(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 < ApplicationUsageAnalytics

Requirements

  • 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