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

Improve ranking system #455

Closed
5 tasks done
web-dev-sam opened this issue Sep 12, 2020 · 35 comments
Closed
5 tasks done

Improve ranking system #455

web-dev-sam opened this issue Sep 12, 2020 · 35 comments
Labels
enhancement New feature or request. ranks Feature, Bug fix, improvement related to ranking system. ⭐ top feature Top feature request. ⭐ top issue Top issue.

Comments

@web-dev-sam
Copy link

web-dev-sam commented Sep 12, 2020

Describe the bug
I was interested in how the rank was calculated and wanted to know how to rank up. I found out that you use a function called normalcdf to normalize the calculated score. Its basically impossible to get a rank below A+ since normalcdf(0, 231, 7) * 100 returns 51.55 which is in the A+ area.

The code can be found here.

TODOS (Added by @rickstaa)

@nrchandan
Copy link

Created a PR that demonstrates this: #459

@MarvinJWendt
Copy link

This is still very relevant

image
image

/cc @anuraghazra

@SuperFola
Copy link

Commenting to get this issue fixed

/cc @anuraghazra

@stale
Copy link

stale bot commented Dec 8, 2020

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale Issue is marked as stale. label Dec 8, 2020
@SuperFola
Copy link

This is still an issue

@stale stale bot removed the stale Issue is marked as stale. label Dec 8, 2020
@magneticflux-
Copy link

magneticflux- commented Dec 12, 2020

I think it might be broken in more ways than one.

Here's another example of the weird ranking behavior: #330 (comment)

@stale
Copy link

stale bot commented Jan 11, 2021

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale Issue is marked as stale. label Jan 11, 2021
@magneticflux-
Copy link

Still an issue

@stale stale bot removed the stale Issue is marked as stale. label Jan 11, 2021
@anuraghazra
Copy link
Owner

I think it might be broken in more ways than one.

Here's another example of the weird ranking behavior: #330 (comment)

I agree. rank evaluation is not correct and too biased.
Sorry but I have no good ideas on how to make it less inaccurate and improve it (i suck at maths)
Would love to hear any opinions and possible implementation details.

cc @magneticflux-

@anuraghazra anuraghazra added feature enhancement New feature or request. ranks Feature, Bug fix, improvement related to ranking system. labels Jan 11, 2021
@CrafterKolyan
Copy link

@anuraghazra I've made an implementation of one of my ideas in #960 with an explanation inside PR

@rickstaa
Copy link
Collaborator

rickstaa commented Nov 18, 2022

@LucBerge and @ZjzMisaka, I agree with you that the ranking needs to be improved. There have been multiple proposals and PRs open that try to improve the ranking:

I think three things can be improved about the ranking:

I asked @anuraghazra for his opinion at #2265.

@rickstaa
Copy link
Collaborator

rickstaa commented Nov 18, 2022

TODOS

I also added this list to the top of this issue.

@ZjzMisaka
Copy link

Hi @rickstaa,
I understand your caution in modifying the ranking system, but I believe that making changes is always good.
Can some temporary modifications based on existing ranking system be made before receiving a response from @anuraghazra, at least to change the situation where the ranking is stuck in A+?
I think ranking can reflect the changes made by user from the initial state, rather than the gap between users.
Therefore, I don't care if my ranking will change to F after the ranking system changes, I prefer to see my progress dynamically.
After all, modifying a ranking system cannot satisfy everyone. If you insist on giving everyone a "beautiful" ranking, the system will ultimately become non referential.
Thanks.

@rickstaa rickstaa added ⭐ top issue Top issue. ⭐ top feature Top feature request. labels May 9, 2023
@rickstaa
Copy link
Collaborator

rickstaa commented May 9, 2023

Hi @rickstaa, I understand your caution in modifying the ranking system, but I believe that making changes is always good. Can some temporary modifications based on existing ranking system be made before receiving a response from @anuraghazra, at least to change the situation where the ranking is stuck in A+? I think ranking can reflect the changes made by user from the initial state, rather than the gap between users. Therefore, I don't care if my ranking will change to F after the ranking system changes, I prefer to see my progress dynamically. After all, modifying a ranking system cannot satisfy everyone. If you insist on giving everyone a "beautiful" ranking, the system will ultimately become non referential. Thanks.

I agree with you. I already started working on this last week. Not only that, but I will merge #1186 (comment) as soon as @francois-rozet has resolved some small issues I had with that pull requests 👍🏻. @anuraghazra can always change it to his liking later.

@rickstaa
Copy link
Collaborator

rickstaa commented May 26, 2023

Just a heads-up. I just merged #1186 which, in my opinion, is a great improvement compared to the old ranking. You are welcome to open pull requests if you think the weights can be further improved 👍🏻. There is also a proposal open to change the rank levels. You are welcome to put your ideas in #2265.

@rickstaa
Copy link
Collaborator

Closing this as completed.

@rickstaa
Copy link
Collaborator

Re-opened so that people can provide feedback on the new ranking system and create improvements.

@lorezyra
Copy link

Would be good to update the readme for this project to include an explanation on the ranking system and meaning of the letters.

@rickstaa
Copy link
Collaborator

Would be good to update the readme for this project to include an explanation on the ranking system and meaning of the letters.

You're right! The documentation will be updated when #2749 is merged 👍🏻. You are welcome to suggest any improvements.

@objektwerks
Copy link

So with the new ranking algo, a former ranking of 'S' for 12K plus annualized commits earns a modest ranking of 'B'. My ego may never recover. ;)

@rickstaa
Copy link
Collaborator

rickstaa commented Jun 2, 2023

So with the new ranking algo, a former ranking of 'S' for 12K plus annualized commits earns a modest ranking of 'B'. My ego may never recover. ;)

I'm afraid you are an outlier 😮. You made as many commits in one year as I did in my whole GitHub career 🔥. In my opinion, PRs are preferred over small commits since it improves code collaboration 🤔. I do understand that this is opinioned and that in some cases it is better to work with commits. Can you maybe check if @francois-rozet new ranking mechanism improves your rank (see #2762)?

@rickstaa
Copy link
Collaborator

rickstaa commented Jun 2, 2023

@objektwerks I checked and #2762 will improve the behaviour. Also by making some pull requests you can increase your rank rapidly.

Old ranks

Available ranks are S+ (top 2.5%), S (top 10%), A+ (top 25%), A (top 50%), B+ (top 75%) and B (everyone). This ranking scheme is based on the Japanese Academic Grading system. It is calculated as a weighted sum of ranks for each statistic (number of commits, pull requests, issues, stars and followers) based on the cumulative distribution function of an exponential distribution. The implementation can be investigated at src/calculateRank.js. The circle around the rank shows the rank completion percentage compared to the maximum rank.

Anurag's GitHub stats

Ranks (after #2762)

S, A+, A, A-, B+, B, B-, C+ and C

Anurag's GitHub stats

@objektwerks
Copy link

objektwerks commented Jun 2, 2023

@rickstaa Thanks for the explanation and tip!

I tried the #2762 option, which did reflect the ranking circle above -- with one minor difference in total commits. It now reads: Total Commits: 29.4k So the count goes back further than 1 year.

You all might consider 2 rankings -- 1) pr-driven and 2) commit-driven. Just a thought. :) Cheers!

@francois-rozet
Copy link
Collaborator

francois-rozet commented Jun 2, 2023

@rickstaa Thanks for the explanation and tip! You all might consider 2 rankings -- 1) pr-driven and 2) commit-driven. Just a thought. :) Cheers!

Hello, I think making a lot of commits should not be a goal. Having 10000 commits (especially if named "fix") that change one or two lines, is a bad development practice. PRs are much better indicators of meaningful contributions.

@objektwerks
Copy link

@francois-rozet Everyone has different development styles. Hence the multi-style ranking suggestion. :)

@rickstaa
Copy link
Collaborator

rickstaa commented Jun 2, 2023

@francois-rozet Everyone has different development styles. Hence the multi-style ranking suggestion. :)

I agree with @francois-rozet on this one 😅. Although everybody has a different development style, from experience I noticed that these small commits hurt maintainability when working on projects with other people. Nevertheless, since this is an OS (community based) project, if enough people support your idea we might look at it (see #1935 for the most popular feature requests) 👍🏻.

@objektwerks
Copy link

@rickstaa

I work alone on multiple projects. And small units of work make sense for my workflow. Not everyone is an OSS warrior. ;)

On a commercial or open source project, with several contributors, developers ideally work in a branch and submit PRs as required. So commit size or frequency is irrelevant. It's the PR process that impacts a project.

Ok, I've said way too much. :) Thanks for the conversation! And all the best with your project. Cheers!

@rickstaa
Copy link
Collaborator

rickstaa commented Jun 2, 2023

@rickstaa

I work alone on multiple projects. And small units of work make sense for my workflow. Not everyone is an OSS warrior. ;)

On a commercial or open source project, with several contributors, developers ideally work in a branch and submit PRs as required. So commit size or frequency is irrelevant. It's the PR process that impacts a project.

Ok, I've said way too much. :) Thanks for the conversation! And all the best with your project. Cheers!

No, you exactly hit the nail on the head. For personal projects, it doesn't really matter and in commercial projects or big OS projects, mostly PR with squashed commits are used 👍🏻. It's not that I have anything against people that add many commits to the master branch. It is only that me and the other collaborators/contributors are trying to promote PR-based contributions so that people will have less friction onboarding to bigger projects.

Having that said, this is a community project, so all input is valued equally. Furthermore, it's easy to increase the weights for the commits on your own fork 👍🏻. I think these ranks should be used as a fun motivational tool, not as a single source of truth. If you get more motivated to strengthen your coding skills and OS contributions by having the rank rise yearly by the number of commits, that's also great ❤️‍🔥.

const COMMITS_MEAN = all_commits ? 1000 : 250,
COMMITS_WEIGHT = 2;

@rickstaa
Copy link
Collaborator

rickstaa commented Jun 13, 2023

Closing as this feature was completed in #2762. You are welcome to open a new issue or pull request if you guys have more ideas to improve the ranking. One idea, for example, I think would be great to have is the following:

Maybe we can give the user the ability to set the rank_type to number or letter? We could use the inverse of the number that is used to calculate the rank 🤔.

Originally posted by @rickstaa in #2265 (comment)

@rickstaa

This comment was marked as outdated.

@rickstaa
Copy link
Collaborator

Additionally, I now created #2859, which gives users the ability to show the percentile:

[![Anurag's GitHub stats](https://github-readme-stats-git-addpercentilerankicon-rickstaa.vercel.app/api?username=mindlabordev&rank_icon=percentile)](https://github.com/anuraghazra/github-readme-stats)

Anurag's GitHub stats

@rickstaa
Copy link
Collaborator

@silverwind, we decided to replace progress with percentile since it is unclear to users what progress means (see #2859 (review)). Therefore, changing progress to percentile in your README would be best.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request. ranks Feature, Bug fix, improvement related to ranking system. ⭐ top feature Top feature request. ⭐ top issue Top issue.
Projects
None yet
Development

No branches or pull requests

14 participants