TL3 Like Distribution, are these fractions hard coded?

Continuing the discussion from What do user trust levels do?:

OK, quoted only certain parts of the linked post, but I am curious about the way the like distribution (different users and days) is calculated. I am not an admin, so I cannot view site settings, but on a site I moderate the Likes Received requirement is 500, and thus the Likes Received: unique days requirement is 125. As the the time is “last 100 days…”, the 1/4 of 500 makes TL3 intentional.

Now, preventing users from reaching TL3 might be intentional on my site (no idea myself…) but thinking about this in general and this could be an issue. If you have a very large site with lots of people liking posts, you might want a high Likes Received threshold without making TL3 impossible to achieve. Is the minimum number of different days a site setting as well?

They wanted TL3 off at stonehearth, you should follow up over there.

I sorta figured that, and I did write to the devs to inquire, but I am still curious about this in general…

Pretty sure we look for N unique users vs. 200k users or a 1 million user site

1 Like

Sorry @sam, but you lost me here. What is “unique uses”?

Edit: Wait, did you mean to say:
Pretty sure we look for N unique users vs. 200k users on a 1 million user site
(changed uses to users and or to on)

I am not clear what’s so confusing about this? Unique users versus a single user liking all your posts 30 times in one day? How is that unclear?

I totally understand and appreciate the distribution requirements, as without it two people could like each other to the TL3 requirements. What I am curious about is the 1/4 and 1/5 being calculated values as the Like requirement goes up. If I am reading @sam’s statement right, the 1/4 and 1/5 requirements are not actually calculated by Discourse based on the Like requirement, but are hard coded values. Is that correct? If so, I understand…

Yes the proportions are hard coded. If that is the question I will edit the title so it is more clear.

1 Like

Thanks @codinghorror, that makes things a lot more clear. You may want to add something to this effect over on the faq thread. Personally, when I see a fraction listed I assume it is a dynamic calculation, not a hard coded value…

It is dynamic, in the sense that it applies proportionally to whatever number you enter. 1/4 of 100 days is 25 days, 1/4 of 200 days is 50 days, and so forth.

OK, then I am still confused, and this goes back to my original question.

Going to use numbers here:

Assume that the number of days is 100, and fraction is 1/4. Is it possible to make the number of likes required greater that 400 without making TL3 impossible? Can the fraction be changed (to a lower value) so that you can increase the like requirement so that TL3 is not impossible?

I think it would be super helpful if you plugged the numbers into the text so it is clear what you’re talking about. So if you want required likes to be 500:

  • must have received 500 likes

These likes must be across a minimum number of different users (1/5 of 500 = 100) across a minimum number of days (1/4 of 500 = 125). Likes cannot be from PMs.

You are right that with the hard coded number of TL3 days at 100, this makes TL3 impossible to achieve. I’d file this under “garbage in, garbage out” or intentionally putting in bad settings that makes things not work.

Since you can also change the number of days (as of a week ago) that TL3 looks at, I’m not sure I see what the problem is?

OK, here we go:

  • must have received 500 likes

These likes must be across a minimum number of different users (1/5 of 500 = 100) across a minimum number of days (1/8 of 500 = 63). Likes cannot be from PMs.

Is this possible to accomplish (change 1/4 to 1/8)?

No, as I said above, those fractions are hardcoded at the moment. There was a recent change to make the number of days TL3 looks at, configurable.

OK, thanks. All clear now. I guess this is a feature request then:


Can the fractions become a site setting so the number of likes can be increased above 400 without making TL3 impossible based on a 100 day period.

Not sure I support that since we just added the ability to make # of days configurable… why not just increase # of days that TL3 looks at instead?

Increasing the number of days has the effect of lowering the Likes Received ratio to an extent.

Purely hypothetical here: I have a large Discourse, with users who tend to give lots and lots of likes out. I want to ensure that my TL3 users get more likes than the average user, but most users get far more than 400 likes per 100 days. Now, I change the requirement to 800 likes, and TL3 becomes impossible (800/4 = 200; 200 > 100). If I change 100 days to 200 days, now they can reach TL3 if they get a like every day, but the ratio was lowered: 800 likes per 200 days is equal to 400 likes per 100 days.

Does that make sense?

It’s possible the minimum days would be capped by the TL3 setting anyway, meaning, if you put in a crazy value like 1000000, instead of being 1/4 of that large number, it’s capped at the value of the TL3 days. @neil can check and see if that’s the case. I agree that would be safer, to have it call a min(x, 100) function when checking to avoid making TL3 unachievable in the face of bad site settings.

OK, that would be helpful, but not ideal. If you make the Likes Received a large value (not crazy high, but larger than # of days times 4), for a user to reach TL3 they would need a like every day during that period, which could be possible on a like happy site, but unlikely. If the site is slow on a certain day, you could lose your TL3 status 2 weeks later, and not be able to get it back for 86 days (assuming 100 days). I still think that that the minimum days fraction needs to be configurable as 100% is nearly impossible to achieve (and out of the user’s control as well).

Sounds like doing that qualifies as “crazy high” to me, but I agree that the min likes received days value shouldn’t be allowed to be higher than the tl3 time period value. The intention is to prevent people from getting promoted because they got a lot of likes in a very short amount of time. I don’t agree that we need more parameters for people to tweak since the trust level tab of site settings is already looking scary.

I think a formula that caps the min_likes_received_days to something less than tl3_time_period would get us what we want.

min_likes_received_days = MIN(min_likes_received / 3.0, tl3_time_period * 0.75)

Examples of defaults vs crazy high:

                            defaults          crazy high
-----------------------------------------------------------------
| tl3_time_period         | 100             | 100               |
| min_likes_received      | 20              | 600               |
| min_likes_received_days | min(7, 75) = 7  | min(200, 75) = 75 |
-----------------------------------------------------------------

min_likes_received_days = (min_likes_received.to_f / 3.0).ceil

Even with the high likes requirement, there are 25 days out of 100 when you don’t need to receive any likes. How does that look?

Also, if you want to make it impossible to achieve tl3, set tl3 requires days visited to something higher than tl3 time period. I’m making a change to allow that.

5 Likes