magento2-phpstorm-plugin icon indicating copy to clipboard operation
magento2-phpstorm-plugin copied to clipboard

Add statistic to the project

Open bohdan-harniuk opened this issue 3 years ago • 4 comments

Is your feature request related to a problem? Please describe.

It would be great to have analytics connected to the project.

It can give us few benefits that I can see from my point of view at the moment:

  • direct our efforts to the features that are used more widely
  • correct our priorities for the opened issues
  • understand when some part of functionality is not working (that is used widely) before any issue is created
  • plan new features

Describe the solution you'd like (*)

Add triggers for the existent features that would indicate how many times each feature is used by unique user of the plugin. Send this data to any of the statistic gathering dashboards. Review and analyse it about once per week/month.

When a feature is used we need to send the data with the name of the feature, context where it is used (for an example, plugin generation can be called as from the context menu, as from the generation context menu - CMD+N, so we need to identify from where each feature is called or just to name it differently), anonymised unique user identifier (without any personal information).

Action Name Action Identifier Send Data
Create a new Magento 2 Module create.module {uuid: <uuid>, event: create.module}
Create a new Observer for this event create.observer {uuid: <uuid>, event: create.observer}
Create a new Plugin for this method create.plugin.general {uuid: <uuid>, event: create.plugin.general}
Generate after plugin (generation menu) create.plugin.after {uuid: <uuid>, event: create.plugin.after}
Generate around plugin (generation menu) create.plugin.around {uuid: <uuid>, event: create.plugin.around}
Generate before plugin (generation menu) create.plugin.before {uuid: <uuid>, event: create.plugin.before}
Create a new Magento 2 View Model create.view_model.general {uuid: <uuid>, event: create.view_model.general }
Inject a new View Model for this block create.view_model.block {uuid: <uuid>, event: create.view_model.block}
Create a new Magento 2 Block create.block {uuid: <uuid>, event: create.block}
Create a new Magento 2 CLI Command create.cli_command {uuid: <uuid>, event: create.cli_command}
Create a new Magento 2 Controller create.controller {uuid: <uuid>, event: create.controller}
Create a new Magento 2 Cron Group create.cron.group {uuid: <uuid>, event: create.cron.group}
Create a new Magento 2 Cron Job create.cron.job {uuid: <uuid>, event: create.cron.job}
Create a new Magento 2 models create.model.default {uuid: <uuid>, event: create.model.default}
Create a new Magento 2 Data Model create.model.data_transfer_object {uuid: <uuid>, event: create.model.data_transfer_object}
Create a new declarative schema XML create.db.schema {uuid: <uuid>, event: create.db.schema}
Create a new Magento 2 email template create.email.template {uuid: <uuid>, event: create.email.template}
Create a new Magento 2 Entity create.entity.general {uuid: <uuid>, event: create.entity.general}
Create a new Magento 2 GraphQL Resolver create.graph_q_l.resolver {uuid: <uuid>, event: create.graph_q_l.resolver}
Create a new Magento 2 Message Queue create.rabbit_message_queue.message {uuid: <uuid>, event: create.rabbit_message_queue.message}
Create a new Magento 2 UI Component Form create.ui.form {uuid: <uuid>, event: create.ui.form}
Create a new Magento 2 UI Component Grid create.ui.grid {uuid: <uuid>, event: create.ui.grid }
Create a new Magento 2 Web API XML declaration create.web_api.declaration {uuid: <uuid>, event: create.web_api.declaration}
Create a new Magento 2 Web API interface create.web_api.interface {uuid: <uuid>, event: create.web_api.interface}
Create a new Magento 2 Preference create.preference {uuid: <uuid>, event: create.preference}
Override this template in a project theme create.template.override {uuid: <uuid>, event: create.template.override}
Run The Upgrade Compatibility Tool run.uct.general {uuid: <uuid>, event: create.uct.general}

We expect to get the output like this:

Screenshot 2021-11-30 at 11 11 41

Where:

  • Axis-X - date of triggered event
  • Axis-Y - amount of triggers
  • Data - events

Additional context

We need to find out how to gather such information:

  • do we need to add something about gathering such information anywhere?
  • do we need to ask user about such data collection (there is no personal information gathered)?

bohdan-harniuk avatar Nov 29 '21 09:11 bohdan-harniuk

Hi @bohdan-harniuk. Thank you for your report. To speed up processing of this issue, make sure that you provided sufficient information.

Add a comment to assign the issue: @magento I am working on this


m2-assistant[bot] avatar Nov 29 '21 09:11 m2-assistant[bot]

@magento I am working on this

Iamwade avatar Jan 28 '22 08:01 Iamwade

Hello @sivaschenko @bohdan-harniuk @Iamwade From my point of view as this project started as an open-source it is logical to share any kind of statistic with the community of engineers. What do you think about storing such info and representing it in the biterg.io service?

coderimus avatar Feb 07 '22 10:02 coderimus

Hello, @coderimus!

It seems, that the biterg.io service is used for the GitHub/GitLab projects analytic data visualisation, not for the event based data analytics visualisation. https://bitergia.com/resources/#usecases

Could you please help me with understanding how we can use the biterg.io service to proceed with the desired data visualisation?

Regards,

bohdan-harniuk avatar Mar 19 '22 10:03 bohdan-harniuk