joshsoftware / code-curiosity Goto Github PK
View Code? Open in Web Editor NEWOpen-source is now fun and rewarding!
Home Page: https://codecuriosity.org
License: MIT License
Open-source is now fun and rewarding!
Home Page: https://codecuriosity.org
License: MIT License
Anyone with a github account can register on Code Curiosity.
Changes to scoring by judges should be as follows:
We distribute the scores according the their percentage slot and the money is distributed against the percentage.
Below image details 18 users with various scores and a distribution example of 2700 points.
This will enable us to get real time feeds about commits / pull requests and issues and we can then avoid the daily rake task to fetch. It will also create a real-time dashboard.
Note: We have have to move away from heroku hosting for this.
By default, your teams name will the same as your Github handle and your team consists of 1 member - you.
In addition to team metrics, we should have individual metrics -- by Rounds.
This was I think a lazy bug on my part. I'll fix it.
As a judge, when I see the Teams listing:
The page that we use for judging can be used for displaying the average result and public comments if any.
Everyone should be able to see the teams and the repositories that the team is working on.
Currently, we have to inform the team by email about changes. It should be quite clear from DAY-1 of the round. Also, it's important that the teams see what others are working on.
FYI - you can remove the "Active From" column entirely - the Round has the dates in it.
I see that I'm logged in as "Anil Kumar Maurya" when I visit http://codecuriosity.org/dashboard. Even in incognito.
\cc: @anilmaurya
This is a parent ticket (tagged with community label) that will be built in a separate branch called 'community'. Once we are ready with this, we shall migrate this to 'master' and take Code Curiosity to a whole new level!
I will add separate tickets for details on each point above and update this ticket with the ticket numbers.
Instead of involving only Josh Software, we realised why not involved the community. This has far reaching consequences as you are actually making money with open-source contributions every month.
Once we have a quorum i.e. more than 500 users actively using this application, we may make this a subscription per month. So, if we decide to have a subscription fee of say $10 per month, we have a bounty of say $ 5000 between 500 users. 95% of this money gets distributed to the top 10% of the contributors? 5% is the administration fee for maintaining the systems. So, this could potentially be self-servicing portal.
We shall invite some well know authorities on github (and some repository owners) to be judges. We could gamify the proceedings since we have scores from contributors and some top contributors could be made judges?
*What's in it for them? * We pay the judges a fee for taking the effort to judge the work. When this happens, we my keep more than just 5% of the bounty to ensure that judges are happy!
Yes, this will be open for all languages. We shall contact language experts as the repositories from different languages start coming in. Let's see where this goes ๐
This will reduce the chances of emotionally driven judging based on personal relationship.
Point should be awarded for good comment .
we will like to see how much we scored for our commit or activity.
In community edition, there are no teams - it's all individuals. Scoring is from a range of 0-5.
Each commit and activity has to be judged by any 3 judges before we lock the score.
Based on these factors, the system should send commits or comments for judging. This is the minimum effort expected based on their settings of language and time. The remuneration for judges will be decided on these factors. The judges can also explore other commits and activities and their incentives would be based on how active they are.
note A judge can be a contributor, so the system should never send judges own activities to himself or herself.
Judges will not be able to see others scores until they have judged the commit or activity. (just like a poll). After that, they can not only see what other have scored but can also change their score if they fell they should. They must then confirm their score.
This will ensure that judges have to score based on their judgement and not others judgment. Since the discrepancy and score change are metrics that judge the judges, this will introduce a good checks & balances system for judging.
Criteria needs to be decided but broadly these are the factors:
To start with, these are guidelines given to the judges!
0 - ignore because its a duplicate or irrelevant comment.
1 - documentation changes, typos, etc.
2 - minor code change, bugs (less than 5 lines changed)
3 - large code change, bugs, build passed (more than 5 lines and less than 50 lines)
4 - features added, critical bug (more than 50 lines)
note: system will never recommends 5. That is at judges discretion.
As we start seeing how the judging is done, system will start to recommend a score to reduce the judges effort.
If there is a difference of 2 between any scores, then a comment is mandatory and a notification goes to the other judges who have score difference of more than 2. The other judge must then complete some action: either leave a comment "retain my score" or change the score to within a factor of 1 from other judges.
Baseline: All scores must have a difference of 1 unless the judge(s) has explicitly retained their score.
If you see PR rails/rails#22833 got merged 10 days ago. 2 days ago I made some comments. But when I sync my activity, my activity didn't get pulled.
We need to figure out why some commits and activities are not getting scored. We need a rake task to find out the "in review" commits and activities and trigger them.
Currently while tweeting about code curiosity it displays content as "CodeCuriosity http://codecuriosity.org/users/user_id #codecuriosity" which is wrong. We need to add proper content for it.
We need to get test coverage completed for Code-Curiosity - we need to practice what we preach!
When one round of competition is completed, we need to save a snapshot of the competition. Information that is saved will be graphically represented in the Progress Report.
:from
and :till
field.Details of how this data should be shown is in #4
We need to ensure that we level the playing field for people who sign-up. That means, when a user signs up, we analyze the profile and identify a group that they fit into. The people in that group compete equally.
To start with we shall have 3 groups, where each group can have at most 50 people. When the number increases more than 50, we "balance" the groups and create 1 more group by dividing the group into a 50-50 ratio of 25 to 30 people each.
The initial groups are going to be as follows:
Horses: "Prancing among the horses".
Wolves: "Dancing with wolves"
Eagles: "Flying with the eagles".
Eagles criteria:
Wolves criteria:
Horses:
Everyone else.
As time flies, if any group becomes more than 50, then we re-evalutate the criteria and balance the users into new groups!
After each round is complete - the top 5 users get the following points winning their rounds:
These are points in addition to their scores per round. All users get only the points they have scored in that round, consolidated into their eWallet.
When a user signs up, we analyse the profile and calculate the Royalty Bonus score.
For example, user "jiren" owns 2 repositories "filterjs" and "streamable" that have 442 stars and 363 stars respectively. He also contributes to "rails/rails". He has 35 followers.
[stars for filterjs] + [stars for StreamTable]
(442 * 100 + 363 * 100) * (60 / 100) = 65,980 points.
The equation:
SUM [ (stars * 100) ] * (followers / 100)
Caveat: If the royalty calculation comes over 500k points, show the message: "You're way over the top - contact the team and we shall work out a fixed income per month for you ".
These users are already celebrities and CodeCuriosity is not for them. In such cases, rather than have the person participate monthly, we involve the person in making CodeCuriosity better product. If we get enough grants / funds or money, we would love to reward such stalwarts!
We shall improvise the process over time
This is the competition rounds - the way you make MONEY!
** To be thought out properly -- views and opinions desperately wanted **
Initially our judges will be pro-bono. At this time, 95% of the bounty will be distributed to the top 10% of the contributors. For example, if we have 500 subscribers, we have a bounty of $5000
Till the first 500 paid subscribers:
We have divisions among the people who join. We score them on their "existing github profile" and assign them in a division. We try and reward about 70% of the subscribers, so that they are encouraged.
I don't get any redeem request email as an admin. Mails are going and are properly configured.
As an admin if you click on "Activities" under "Judging" menu option the page crashes
There are many projects on github that don't have 25 stars because maybe they are repo that contain translations or with few star on github but with many download.
When a judge logs in
And clicks on "Teams"
And clicks on "Show commits for a team"
CSS Reference: http://cpratt.co/twitter-bootstrap-callout-css-styles/
I'll create a Wiki page on this but in short:
0: Commit should be ignored - eg. typo fix or code type etc.
1 - 3: Very trivial / minor fix -- one word added, mistake corrected.
3 - 5: Trivial issues fix and good documentation added.
5 - 7: Good fix, test cases added, fixed failing builds, good code and commit with substance.
7 - 10: Excellent code, complex issue fixed, feature added, etc.
We currently fetch commits for the team only from master.
Alternatively, we will have to ask the team to tell us which branch commits to parse but that could have it's own set of problems.
[From Rishi's email]
It is ideally suggested while working on open-source projects, you should keep the remote master and your local master copy in sync. So you should not merge your new feature branch into local master. Instead wait for the author to accept your PR and then you can pull from remotes master into local master.
If you follow this process, it helps in long term too. Now imagine one member of team alpha (say Rishi), he has done some changes on the local master(instead of new feature branch), and sends a PR. But it got rejected by the main author (Jiren), so now he has a master which has some commits which is not acceptable. So what he can do now(because he do not need those faulty commits):
or it could get worst, if Rishi does not work on filterjs for some months and then he comes back, so Rishi will just pull the remotes master into local master(which also has those unaccepted commits) to get the latest copy. Rishi may not remember that there are few commits which were not acceptable. And now he has a master which is not true copy of remote master and it might screw up his future work.
I am going to put this in Wiki as guidelines to contribute to Open Source!
I have forked emberjs/guides
https://github.com/anilmaurya/guides but I don't see this repo on "My Repositories" tab
The home page needs rework. We need to showcase the following things:
Details are mentioned below the tasks.
See ticket #2 for details on how scores are created. The chart should reflect team scores.
See ticket #3 for details on Snapshot. When we click "Publish Results" (seen only by admin), a complete snapshot of scores, commits, team distribution etc. is taken and put in a separate table for the duration and marked as completed i.e. one round on the competition is over.
See ticket #4 for details. This is the chart where we can see based on published results. This chart has a dropdown for selecting rounds and we can see how the team scores and individual scores have progressed over time.
We need some good names for the following:
We earn them and use them for each round as a subscription fee. Lets get a new terminology for this i.e. rather than saying points, coins, dollars etc. lets say we earn "-----" something easy to type and pronounce and it should be catchy, so you are proud of it.
What type of badges can we give for what criteria. Example, in Fitbit, you get a "Serengeti badge" if you run 804 km till date. Some criteria:
Other criteria which matter to you? Suggestions welcome.
Need 2 updates on the Admin menu:
This chart should be publicly visible without authentication
Drop-down options: "Team commits", "Team scores". Each stacked column has the team split
Use column stacked chart: http://www.highcharts.com/demo/column-stacked
Here is the sample image and the JSFiddle code
You can add repositories any time and click the Sync button to sync up any commits / activities. This is more like a self-serve option.
You cannot remove a repository (not sure why someone would want to do that anyway)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.