NovusStellachan's blog

By NovusStellachan, 9 months ago, In English

As a lot of us already know, Codeforces has certain differences in how it treats upvotes from users.

There are rating tiers on what your upvote is worth, and it is done to give non-negligible importance to the rare high-quality content that more experienced people can generally perceive quicker than others as useful for the community. For example, sometimes low rated accounts cannot distinguish between useful and useless higher level content, which has the potential to help them as they grow. This also gives people motivation to work harder to get to a better rating, though this is still very debatable. People treat this as ratism, but it is up to you to decide whether this is a good thing or not. It already works well as a spam-reduction measure, though.

However, it also recently started treating upvotes from "contest-inactive" accounts as worthless (i.e., accounts that have not participated in a rated contest for more than 6 months are unable to show that they like/dislike certain content on Codeforces without commenting). This brings down the weight of upvotes from people who have not participated down to 0 — below what even a newbie's upvote is worth.

Interestingly, some contest-inactive but very cf-active and high-rated people noticed that on the original Codeforces site, voting was completely disabled for contest-inactive accounts, showing that Codeforces might be becoming more explicit about this choice (though this is not the case for the mirror site). Is this a bug?

Is the contest-inactivity cutoff implemented to combat spam and upvote farms (i.e., alts made to upvote/downvote content)? There are definitely much better ways to combat this spam — for example, if you are being conservative, keeping upvote weight intact for contest-inactive Div 1 accounts. Here is why the current system of contest-inactivity based cutoffs might actually be bad for Codeforces:

  • Majority of the users that still read/contribute to Codeforces are contest-inactive and have a higher proportion of more experienced people, so filtering out what is known as wisdom of the crowd makes the process already less informed and it portrays the opinion of only a small subset consisting of generally less-experienced people as the overall community opinion (which has obvious consequences in terms of more volatile herd mentality and so on, which is a major factor in proliferation of spam/controversy/low SNR content).

  • Accounts that are used for upvote/downvote farming and commenting in a way that wants to influence community opinion tend to participate in much fewer contests compared to the usual user, and it should also take a lot of time to get to Div 1 for many accounts, for example, if you don't submit from multiple accounts in the same contest (and this can be detected via anti-cheating measures that are currently in place). This supports the argument that lower rated contest-inactive accounts are more likely to be spam/alts than higher rated contest-inactive accounts.

  • Higher rating is correlated with how serious someone is about competitive programming and related things, so the same argument that holds for giving different weights to upvotes also holds for this suggestion. Arguably, older people who have engaged with the community for a longer time also tend to have more mature opinions (in the sense of community moderation) and are also smarter (have higher rating).

  • Div 1 contests have historically been much rarer than lower division contests so it's possible that someone is not able to participate in contests for longer than someone who is div 1, and thus the 6 month penalty is penalizing div 1 accounts more than it penalizes lower rated accounts.

A few final suggestions:

  • Remove inactivity cutoff for high rated users.

  • Have better moderation for content from lower rated accounts.

  • Have optional filters to remove content from lower rated accounts.

  • New posting space for every color, and accounts with color >= cutoff_for_that_space are allowed to interact (post/comment/vote) in that area, but it is visible to all.

    • Catalog was a solution in this direction, but the cutoff rating was so high that there was no activity there for long periods of time. Thus, it is important to have better granularity.
  • Make users aware of these quality of life improvements when they register/next visit Codeforces.

Constructive comments are appreciated!

  • Vote: I like it
  • +83
  • Vote: I do not like it

»
9 months ago, # |
  Vote: I like it +27 Vote: I do not like it

I agree with this. I think ratism is fine, because low rated people can become higher rated if they practice. Just like we don't mind ageism in a democracy (young people can't vote), because young people eventually become older. Also low-rated people should be thankful for the insights of high rated people. Low rated people tend to just spam, but high rated blogs are always insightful. I have several blogs about technical concepts, but I am waiting until I am at least CM to post them, because right now I don't have the judgement to tell if they are good or bad.

This goes twice for voting. The high rated people are just curating what we get to see, so that we get to see the most useful things.

  • »
    »
    9 months ago, # ^ |
      Vote: I like it -21 Vote: I do not like it

    This isn't ageism. If it was, I would have supported it (for example, only accounts older than a month, or two months, or accounts which take >= 5 contests can post comments). This is like "you can only vote if you're rich enough" or "you can only vote if you're intelligent enough", and what OP is proposing is "you can vote even if you don't live here anymore, but you're very involved in the politics here, as long as you're rich / intelligent enough", which you can think about whether it is right or wrong.

    • »
      »
      »
      9 months ago, # ^ |
      Rev. 4   Vote: I like it +10 Vote: I do not like it

      The concept of "living here" is a bit questionable. If you have given a large amount of your time in the past AND the present to the community (let's say by contributing even after you have become inactive in a contest sense, or having contributed in the past is also enough — and higher rated people tend to contribute more than lower rated people regardless of whether they are active/inactive), then it's more like a bank or any other service where they profit off your resources for your convenience. The comment below where you say:

      Like, if you're not gonna participate in contests anymore, you don't have the privileges that regular participants do.

      Can also be thought of in this way: "if you're not going to do transactions using the bank, then you don't have the privileges that regular customers do." This is clearly erroneous because banks make use of the capital that you do not use in order to make money. The analog in this scenario is that the community benefits from the contribution of people who stay with the community for a longer time. Taking away voting rights from people who don't compete (and that gives the rest of the people more rating too!) seems pretty pointless with this argument, because devaluing people also pushes them away from the community.

      One conclusion from the above is that analogies can be made for anything and often end up being non-sequitur, but the point here is what people regard as a measure of value/authority and whether that should have any effect on what allows people to vote. Voting on this platform is nothing political — the associated internet points have absolutely no binding on anything in real life. The only useful purpose they have is as a self-moderation mechanism for the community, and as such excluding people, who like the community enough that it makes them strive to improve it, just wastes resources from the platform's side and also leads well-wishers away from the community — who wants to be devalued, after all?

»
9 months ago, # |
Rev. 2   Vote: I like it +21 Vote: I do not like it

I don't agree with this.

First of all, the third and fourth points can be solved very easily: just ignore low rated people (if you feel like it, personally I don't, but you do you I guess). The second point is true, but why do you need to add "low rated accounts" everywhere? For example if a GM posts something objectionable, you don't think it should be moderated? (I'm guessing your intent was good, and was based on the recent spammers who just fight with each other in every comment section, but I'm saying that you should have better moderation for that, period. Like, don't add low rated to that sentence, it doesn't need that)

About the first point: The requirement is quite liberal, just take a contest every 6 months (submit a compile error on problem A if you want) and I think people sometimes forget with all the discussion about alts, contribution, and whatnot, that Codeforces is primarily a competitive programming website. Like, if you're not gonna participate in contests anymore, you don't have the privileges that regular participants do. It's as simple as that.

»
9 months ago, # |
  Vote: I like it +33 Vote: I do not like it

I don't think it makes any sense to block upvotes from innactive users. Who cares if your upvote weight doesn't reflect your "true skill"? It doesn't need need to be a perfect metric. It only makes sense to do that if they're trying a weird way to incentivize people to do contests.

I also don't think there is a super botnet of innactive accounts that spam upvotes/downvotes on random blogs, and even if there is, this isn't a particularly efficient way to stop them.