Capturing usage of features for analysis

Introduction

In this wiki, we will discuss an approach to compute usage of various features across different components. The usage of features can be captured using telemetry events and then subsequently used for analysis of different feature usage. We will discuss the following computations as part of this wiki

  • Approach for computation of feature for existing features.
  • Approach for capturing required details for feature usage computation for new features.

Solution:

Description:  The usage of various features can be directly derived from telemetry events after defining a structure for instrumenting the usage of features. A data product summariser will operate on the telemetry events to compute the feature usage data. The usage data can then be indexed into Druid for further visualisation or analysis.


      Event Flow:     

     

      Event Name:   FEATURE

  

      Event Data Structure:

Feature Event Object
{
	id:"Feature Identifier", //required
	name:"Editor Undo Redo", // Optional
	description:"", // Optional
    version:"1.0", // Version of the feature
	releasedversion:"15.0", // Required, In which version of product having this featureId
	category:"SunbirdEd" //  Optional, Defined this feature is related to SunbirdEd or SunbirdCore (Ex: SunbirdEd or SunbirdCore)
	duration:"42343", //Optional, Time spent in second 
	
}


Existing features usage computation:

 


FeatureEvent NameProperties
1Youtube video in the ECML ContentINTERACT

actor.type='User'

context.env='contenteditor'

object.type='content'

edata.type='select'

edata.plugin.id='org.ekstep.video'

2Question Plugin INTERACT

actor.type='User'

context.env='contenteditor'

object.type='content'

edata.type='click'

edata.id='button'

edata.subtype='select'

edata.plugin.id='org.ekstep.questionbank'

3Content suggestion in textbookINTERACT

actor.type='User'

context.env='contenteditor'

object.type='content'

edata.type='click'

edata.id='button'

edata.subtype='select'

edata.plugin.id='org.ekstep.suggestioncontent'


4Math symbol and formulaINTERACT

actor.type='User'

context.env='contenteditor'

object.type='content'

edata.type='TOUCH'

edata.id='input'

edata.pageid='question-creation-mcq-form'

edata.plugin.id='org.ekstep.questionunit.mcq'


5Assessment summariser in the mobile appIMPRESSION

actor.type='User'

context.env='reports-users-group'

edata.pageid='user'

edata.uri='user'

edata.type='view'



6User Groups in mobile appIMPRESSION

actor.type='User'

context.env='user'

edata.pageid='users-groups'

edata.uri='users-groups'

edata.type='view'



Conclusion:


* Instead of generating new FEATURE event object from the upstream component, generate a INREACT Event with cdata object having featureId with this we can compute the feature usage.

* For the existing features, Implement data product to compute the feature usage only if the computation is not possible from the druid.