Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scoring Plugin #13

Open
5 tasks
Hackwar opened this issue Sep 10, 2023 · 9 comments
Open
5 tasks

Scoring Plugin #13

Hackwar opened this issue Sep 10, 2023 · 9 comments

Comments

@Hackwar
Copy link
Contributor

Hackwar commented Sep 10, 2023

Extensions have a scoring based on several factors. Since we don't want people to game the system, the specific algorithm how these scores are derived, should be hidden.

Solution

  1. The scores are stored in the extensions table in the row of each extension. They are calculated when a save operation occurs.
  2. The score is calculated by a plugin, which acts on save events for the extension, reviews, etc.
  3. This main repo should contain a simple demo plugin that fulfills this feature. In a private repo, an advanced plugin can include the improved, secret scoring method.
  4. An additional CLI command should be added to re-calculate all scores at once for all extensions, for example when the scoring plugin changes.
  5. Scores are only updated for changes which have been approved by moderators.

Tasks

  • Create score field in database
  • Create plg_jed_basescore plugin with basic scoring function. Reacts on onJEDCalculateScore with an extension object as parameter
  • Create plg_system_jedscoring plugin, which triggers onJEDCalculateScore for all relevant save operations (Basically all moderation events)
  • Create private repo with scoring plugin for advanced scoring functionality
  • Create CLI command plugin to run onJEDCalculateScore on each extension
@mfleeson
Copy link
Contributor

A couple of things to note.
Scores are per extension version, i.e. free extension score is separate from paid extension.
The scores are calculated based on the actual review scores (functionality, ease of use, support, value for money, documentation) and then weighted by number of reviews, age of reviews and other criteria. It is the weighting algorithm that will need to be in a private repo.
To store current externally calculated weighted score we need to add a column to #__jed_extension_scores.

@bembelimen
Copy link
Contributor

Don't make it too hard... there is not really a reason to hide the scoring algorithm, so save the energy to do something extra

@jduerscheid
Copy link

Don't make it too hard... there is not really a reason to hide the scoring algorithm, so save the energy to do something extra

I think this will be a good solution. And it is better that everybody can understand how this algorithem works.

@HLeithner
Copy link
Member

better protect it so not everyone directly know what todo to get the best rating and automate it.

@jduerscheid
Copy link

or everybody who wants to rate had to be registered by the identity portal and can only rates once an extension

@HLeithner
Copy link
Member

or everybody who wants to rate had to be registered by the identity portal and can only rates once an extension

I would expect that's planned anyway?

@jduerscheid
Copy link

or everybody who wants to rate had to be registered by the identity portal and can only rates once an extension

I would expect that's planned anyway?

I'm not sure what is planned. But if everybody only can leave one reply or rating it is not necessary to build an special hidden algorithm.

@HLeithner
Copy link
Member

identity portal is open for registrations, it's not a real difference compared to normal registration on the site

@wilsonge
Copy link

Don't make it too hard... there is not really a reason to hide the scoring algorithm, so save the energy to do something extra

In the current version of JED it was public initially and people tried to game the system with keywords and stuff. We ended up hiding it for a reason as the algorithm got refined in the early days.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants