Utopian bot sorting criteria improvement to prevent no voting

in #utopian-io5 years ago (edited)

Repository

https://github.com/utopian-io/utopian-bot

Components

  • Utopian bot post sorting criteria for upvoting

This is a collection of ideas to improve the current Utopian bot sorting criteria for upvoting.

Note: some incorrect part is removed and revised based on @espoem and @amosbastian's comments. Thanks a lot! See the comments for that. In addition, suggestions 3, 4, and 5 are added.

If something is wrong, please see a big picture. For specific implementation, I'm not saying this is the best at all. It's just an example. I'm still a newbie in Utopian, so hope senior members :) will adopt it wisely. I'm already more than happy to see people think some change or discussions may be needed. Thanks!

Proposal Description

Background

Due to the voting value decrease, Utopian increased the incentives, as in We're Increasing the Utopian Incentives, which totally makes sense. (Unfortunately, voting value has been decreasing further. Now 1000 SP only gets about $0.02.)

One problem, however, is that there are some good posts that cannot be voted at all due to priorities. People understand that voting skip can happen, but it's not a good thing especially when it is a little bit "unfair." (Of course the definition of fairness is subjective, and that's why I used "unfair.") So I'd like to propose a solution that mitigate this no-voting problem and improve "fairness."

Current voting priority system

Currently, posts to be voted in the next round is determined this way.

sort_batch_contributions https://github.com/utopian-io/utopian-bot/blob/master/utopian_bot/upvote_bot.py#L110

  • At each round, a fixed voting power target (around 18%, defined as VP_TOTAL in the code) is to be used.
  • Select the contribution posts and moderator comments until the expected voting power needed is up to VP_TOTAL as follows:
    • Moderator comments have the highest priorities (should be, since it's pay for their work, but see the suggestion 3).
    • Contribution posts are sorted by the evaluation score.
      • If there are multiple posts that have the same score, then the older has a higher priority. But this isn't usually a binding factor. I mean the last post to be upvoted and the first post to to try in the next round again usually do not have the same score.

Caveat: the bot is also trying to be "fairer" over the category, so the following may occur.

Posts with lower scores (48,48,37) are included instead of higher scores (71,70,...) to use VP fairer over the categories.

Well, some people may not like this, but actually I personally like this idea of "even" distribution. Every category is important.

But the problem is that fairly good postings (especially in a higher weighting category, e.g., dev) may suffer from a disadvantage. This happened and is happening. (Fortunately, it never happened to me so far, so to be honest, I didn't even know this problem exists, but I found this when I was trying to figure out another problem (no steem-ua voting for utopian posts, which is now resolved. But now one dev post of mine is also in danger. But this isn't the only reason why I'm writing this proposal :)

External contributor disadvantages
In particular, this may discourage external dev contributors. By "external," I meant a person who doesn't get paid as a team member. For instance, in the Busy (busy.org) case,

  • internal: any busy team members (who is getting paid by Busy CEO)
  • external: any other people except for busy team members.

Note that if no pay is involved, internal is who has a merge right. For instance, holger80 for beem library.

For the dev category, there is a rule that the merged PR should be within 14 days. But due to irregular and infrequent merges for PRs, it's unlikely for external contributors to make a big contribution within that window, which leads to a mediocre score.

Suggestion 1: put some weight on aging

I'm not saying that older should always get higher priority. But, at least there should be some boost when they were skipped in the previous round.

This is also one of main features of decentralization :), e.g., In the Bitcoin network, while a transaction with a higher fee gets a higher priority, to prevent an infinite waiting, older transactions accumulate some priority as time goes by.

Suggestion 2: last resort - small voting instead of nothing

Posts that are about to expire (i.e., will pass the 6.5 days in the next round) should at least receive some small courtesy votings rather than no voting.

Suggestion3: Give priorities to contributions until when reviews are expiring

I sincerely believe that moderator's review should have the highest priorities. But influx of the contributions tend to fluctuate. That is, there could be contributions that could have been voted if votings on reviews are postponed a bit. See details in Example section.

Suggestion 4: separate reserve or some bonus point for external contributors

Especially for dev, while POs can aggregate quite decent amount to publish the post, it's almost impossible for external contributors due to irregular and infrequent merges by POs. It'd be good if there's some reserve or bonus point for external contributors. Again, I'm not saying a huge bonus point. Yes everything is subjective and maybe a matter of weight. But let's say there is some courtesy small voting but it's still limited, then it might be good to prioritize external contributors.

Suggestion 5: leave a comment for posts with no voting or lower voting than usual due to VP

Currently, there is no comment when voting is skipped at all. It's also good to leave a comment when this situation occurs.

Examples

Suggestion 1: put some weight on aging

While keeping the current score for the voting weight itself, consider the age of the post in the post selection stage. For instance,

voting priority score := f(score, age) = (1 + alpha)^age * score

where age is the number of rounds skipped: 0 if it's just in the que, 1 if it was skipped once, ... (Instead of number of rounds, just the age of the post can also be used.)

For instance, if alpha is 10%, then the original score with 60 becomes, 60, 66, 72.6, 79.86, ... . But this is only for the priority adjustment not for the actual voting weight.

Suggestion 2: last resort - small voting instead of nothing

Reserve some small VP, and spend it first for expiring posts with a voting weight proportional to their original scores. For instance, if the reserve is 20 and there are three expiring posts that need 20, 10, and 10, then each gets 10, 5, and 5, respectively.

Suggestion3: Give priorities to contributions until when reviews are expiring
  • Until moderator's reviews are expiring (i.e., getting older than 6.5 days if it isn't voted in the upcoming round), contributions have higher priorities.
  • But when reviews are expiring, they have the highest priorities.
    • If expiring reviews cannot be voted in one round, that situation can be avoided in several ways: Further use VP, or vote earlier based on the forecast of expiring.
Suggestion 4: separate reserve or some bonus point for external contributors

This can be done with giving more score in the beginning or using some separate reserve for VP or adjustment of voting priorities.

Alternatively, increase 14 day window for merged PR, so external contributors can gather more decent commits with enough time, this might be much easier and realistic idea.

Suggestion 5: leave a comment for posts with no voting or lower voting than usual due to VP

Depending on the situation,

"Due to the limit of voting power, you may have received a smaller voting than usual."

"Due to the limit of voting power, your post cannot be voted this time."

Benefits

  • "Fairer" voting
    I'm okay with this in general, but some may feel their posts are discriminated. But again, there is no perfect rule. But aging should better to be a factor.
  • Encouraging external contributors
    I believe the open-source projects should be really open, and they can be greatly improved when external contributors join. Considering the reality that PO can't respond to PRs of external contributors that often, external contributions should still be well appreciated.
  • Prevent no voting
    No voting isn't good. Currently, it doesn't even leave a comment, so contributors do not even know the reason. I believe that contributors do not contribute just for votings, so they will happily accept those adjusted small votings, and small votings are still better than noting :)

GitHub Account

https://github.com/economicstudio

Sort:  
Loading...
Loading...
Loading...

In Korean: 보상가치 하락의 문제를 유토피안도 못 피해가고 있습니다. 제가 유토피안 시작한지도 얼마 안되고 지금까지 그런 일이 없어서 몰랐는데 accept된 포스팅이라고 해서 보팅이 보장되는 것은 아니더라고요. 여전히 점수순서대로 해서 매 라운드 순서가 선택됩니다. 현재 시간을 전혀 반영하지 않다보니 점수가 낮으면 영원히 포함이 못되는 문제가 있습니다. 최근 상위권 예비증인 한명의 중간점수의 포스팅이 그렇게 보팅을 못받았고 좀 언짢아 하더군요.

물론 제 개인적으로는 모든 포스팅이 꼭 보팅을 받아야한다고 생각하진 않지만 애매한건 이런 "중간점수" 그리고 이 "중간"이 외부적 요인에 의한 "중간"일 경우가 문제입니다.

제 포스팅하나도 현재 위험에 처해있긴 합니다. 날짜는 아직 많이 남아서 희망은 좀 있지만ㅎㅎ
이게 애매한게 예를들면 dev의 경우 기본 카테고리 보상이 커서 애초에 높은 점수를 잘 주지도 않고 특히 외부 contributor의 경우 룰제한(14일 이내에 반영된 것만 가능)때문에 사실 큰 기여를 하기가 힘듭니다. 하지만 오픈소스가 오픈소스 이려면 외부 contributor에 정말 열려 있어야 하고 이것이 정말 프로젝트를 발전시켜나간다고 믿습니다. 저 역시 유토피안 포스팅을 보상때문에만 쓰는 것이 아니기에 사소한 것은 일단 쓰지도 않고(버그 리포트는 마음먹으면 매일 올릴수도 있습니다^^) 얼마전 버그리포트도 리뷰어조차 언급했듯이 나눠서 내면 보상금액은 더 커질텐데도 최대한 여러가지를 모아서 제출하려는 편인데 dev의 경우 여전히 불이익을 받을 수 밖에는 없겠더군요.

따라서 aging을 보팅순위선정에 어느정도 반영하고 또 아예 보팅을 안해주는 거 보다는 이제 더 이상 희망이 없이 마감이 되버리는 포스팅에는 남는 자투리를 먼저 이용해서 최소한의 보팅이라도 해주자는 이야기입니다.

ps. 자투리 배분 알고리즘을 제가 대충봐서 잘 못 이해해서 사람들이 정정을 해줬습니다. 잘못 이해한 부분이 미안하고 부끄럽네요ㅎㅎ 근데 와 평소는 조용하다가 더더욱 아무래도 요새 민감한듯한 문제다 보니 두명이나 찾아와서 엄청 길게 설명해주고 가네요. 가볍게 제안한 것에 시간을 너무 많이 쓰게 된듯ㅠㅠ 일단 제가 잘못 이해한 부분이 문제였고 (이부분은 할말이 없네요ㅠㅠ) 앞으로 내부 시스템에 대한 제안을 할 때는 더더욱 신중해야겠다는 생각이 듭니다. 저도 혹시 다음에 모더레이터들에게 밉보이게 되는게 아닐까 걱정도 했지만 그래도 할 말은 할 수 있어야겠죠. 몇가지는 이미 몇번 나온 이야기라는데 계속 무시당했다는데 계속 나오기라도 해야 아 바꾸긴바꿔야겠구나 하지 않겠습니까^^

짱짱맨 호출에 응답하여 보팅하였습니다.

Congratulations @blockchainstudio! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You got more than 2750 replies. Your next target is to reach 3000 replies.

Click here to view your Board
If you no longer want to receive notifications, reply to this comment with the word STOP

You can upvote this notification to help all Steemit users. Learn why here!

Hi @blockchainstudio!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your post is eligible for our upvote, thanks to our collaboration with @utopian-io!
Feel free to join our @steem-ua Discord server

Hey, @blockchainstudio!

Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Get higher incentives and support Utopian.io!
Simply set @utopian.pay as a 5% (or higher) payout beneficiary on your contribution post (via SteemPlus or Steeditor).

Want to chat? Join us on Discord https://discord.gg/h52nFrV.

Vote for Utopian Witness!

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.033
BTC 64029.44
ETH 3157.04
USDT 1.00
SBD 4.02