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...")
 
(Updated link based on request from Revenera)
Tag: 2017 source edit
 
(One intermediate revision by one other user not shown)
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
  
 
=Server options=
 
=Server options=
 
* Hosted services: easier to get started, no need for experts to maintain/update; may be locked out from certain countries, limited customization
 
* 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. - [https://www.revulytics.com/blog/tracking-desktop-applications-with-google-analytics-what-you-should-know see comparison to Revulytics] for a list of limitations).
+
** 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. - [https://www.revenera.com/blog/software-monetization/tracking-desktop-applications-with-google-analytics-what-you-should-know/ see comparison to Revenera] for a list of limitations).
 
** Many other similar services, for a small monthly fee (typically below $100), see https://github.com/onurakpolat/awesome-analytics
 
** Many other similar services, for a small monthly fee (typically below $100), see https://github.com/onurakpolat/awesome-analytics
** [https://www.revulytics.com/ 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).
+
** [https://www.revenera.com/ Revenera]: 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
 
* 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
 
** https://piwik.org/
 
** https://piwik.org/
 
** http://www.openwebanalytics.com/
 
** http://www.openwebanalytics.com/

Latest revision as of 20:28, 4 December 2020

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 Revenera for a list of limitations).
    • Many other similar services, for a small monthly fee (typically below $100), see https://github.com/onurakpolat/awesome-analytics
    • Revenera: 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