Without giving away the details of the specific weights we are plugging in to the algorithm...

This issue represents a change from a log based usage weighting algorithim to a linear one.

This change increases the value of issue credits on highly used projects, and lowers for the floor for the value on little-used projects.

Comments

hestenet created an issue. See original summary.

hestenet’s picture

Issue summary: View changes

  • drumm committed 3ed8662 on 7.x-3.x, dev
    Issue #3086867: Modify algorithm for weight project credits by usage
    

  • drumm committed 79f1d09 on 7.x-3.x, dev
    Issue #3086867: Round up to the next tenth instead of next whole number
    
drumm’s picture

Status: Active » Needs review
hestenet’s picture

Issue summary: View changes
drumm’s picture

This has been deployed and contribution rank recalculated.

drumm’s picture

drumm’s picture

Status: Needs review » Fixed
hestenet’s picture

Title: Modify algorithm for weight project credits by usage » Modify algorithm for weighting project credits by usage
mglaman’s picture

I just looked at https://www.drupal.org/drupal-services.

It seems like a Drupal core gave organizations a huge lift. Which is great, but doesn't highlight distributed contribution. Mediacurrent seems to break the pattern - they have a lower Drupal core credit, but maintain Metatag and other large modules. MDSystems also has a good spread.

Was the intention to give such lift to Drupal core contributions? I understand its a big important piece. But so is the contrib ecosystem.

marcvangend’s picture

While I understand the reasons, and support attempts to prevent gaming the system, I think it's a shame that this devaluates credits on "community project" type projects. Those projects have no usage by definition (at least, not registered in a db), yet some of them have an enormous impact.

jerdavis’s picture

I'm really trying to understand why this update would result in our organization dropping from near the top of page 2 to page 6 when we have a fairly high number of commit credits relative to the other organizations?

hestenet’s picture

@mglaman The core lift (and corresponding lift to other high usage modules) was intentional yes. Partly because of how incredibly difficult it is for those issues to land. With the upcoming beta cycle for 8.8, I think more issues are landing right now, which is exaggerating the bump even further. That said, we don't want the mid-level to fall off too hard, so we're looking into further tuning. Need to decide if it's worth doing in that further tuning in this system or better to do so in an upcoming larger revamp.

@marcvangend Community projects (non-code) will be addressed separately. Since this was a tune-up and not the true next generation, this is still based on an older system that was built before folks were really thoroughly using community projects. A usage-based metric is jut nonsensical for those projects, so we will be decoupling the community project multiplier from this algorithm for code-based projects.

@jerdavis Thanks very much for the report here and in the slack thread. Your org is a great example for us to be attending to as we tune further.

jerdavis’s picture

I'm concerned about the impact of this change. The weighting of usage seems to have shifted so that only Drupal Core or perhaps a top 10 module is going to get much credit towards rank. This boosts the relative value of Case Studies and also seems to seriously boost the paid sponsorships for the DA. It also looks like simply creating a lot of projects is weighted with more value than the commits required to maintain them.

I'm the architect for Drupal at my organization and one of the few dedicated Drupal developers. Our practice here is new. The agency has traditionally focused solely on Sitecore. I look to my involvement here as an opportunity to build a culture that includes contribution. With that in mind, I was able to get permission to work on contrib between projects. I chose to dive in with Viewfield, a module I participated in development of many years ago. I spent a lot of time cleaning up the queue for Drupal 7 and Drupal 8 issues, building new releases and starting to implement testing in the D8 branch. I was able to report back that these efforts had bumped us up the service page ranking to page 2. While the net result of that doesn't mean a ton in terms of leads right now (we've only had 8 referrals to our site from D.O. since July 1st) I was still able to make the case that the visibility would work in our favor as we try to build the practice.

The current updates to the algorithm make those contributions far less meaningful. If page rank was truly important to my org, then I'd be better off writing case studies than contributing modules, and more importantly - maintaining them. With 33k installs, Viewfield isn't a brand new, insignificant module either, but clearly it falls below a threshold where commits to it are valued.

That's incredibly demoralizing, to move from page 2 to page 6 and see how little that work is now valued. That will make the process of making a case for contribution at organizations such as mine more difficult.

I understand that one focus of these changes is to reduce the benefit some organizations have gotten through a more shotgun approach to small, almost scripted contribution to multiple projects. A thought I'd add to future algorithim considerations would be this:

1) Increase the value of contribution credit based on the number of contributions to the same project. A single commit to 100 projects should be worth significantly less than 100 commits to one project. That encourages people to actually maintain the projects they put on D.O. and not try to game the system through a shotgun approach.

2) Weight the number of contributions to single projects higher if that project is also a supported project by the organization. That encourages organizations to both contribute code and maintain that code. Even if the code is used by fewer people than Drupal Core, it doesn't need to be a top 10 or top 100 module for the effort to be valued.

hchonov’s picture

If we're gonna extend our policies and forbid attempts of gaming the credit system, then the algorithm should be public. We've seen that the community is the best protection against misuse.

hestenet’s picture

drumm’s picture

The general algorithm and factors used is public, in code at https://git.drupalcode.org/project/drupalorg/blob/79f1d09acbd9258eb0cd8e... the drupalorg_org_credit_weights configuration is not public.

hestenet’s picture

If we're gonna extend our policies and forbid attempts of gaming the credit system, then the algorithm should be public. We've seen that the community is the best protection against misuse.

As @drumm says above, the general algorithm (without specific weights plugged in) is public in the codebase. However, I'd have very serious concerns about making the weights public.

My prior experience suggests that rate of misuse could rise exponentially if the weights were public. I think our community does provide good protection, but that gets much harder if the volume of misuse increases dramatically. I'd rather the community be able to focus on their work than focus on policing itself.

mglaman’s picture

I think it is fine keeping the weights private, for what its worth. This is a hard problem of "how do we determine how valuable some project is?"

valic’s picture

This change just gave option for easier gaming of the system and making top projects even more active (excluding Drupal core).

This could make a long term impact on activity and contribution between high, middle and low used modules.

Why someone would collecting credits on middle or low used projects, while he can now focus on top 20 contributed modules and get more credits there. Submitting a smaller patch to each of these modules would probably get more points then on 50 others.

More time-effective for getting credits and ranking, less effective for the community.

Taking some number in the calculation without context is not good:
- project activity over time - is it declining, or not. There are lot of D7 modules which essentially are not going get D8 version
- the complexity of the project - not all most used projects are complex, they are just popular while everyone needs them

There is a lot of other factors that can be added, as test coverage, ecosystem, etc..

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.

renatog’s picture

Just a question:

Do we have documentation in Drupal.org about this change? (Considering weighting project credits by usage)

Thank you all

vuil’s picture