Merge Rewards (BETA) - Earn money with your Pull Requests on GitHub!steemCreated with Sketch.

in introduceyourself •  2 months ago  (edited)

Merge Rewards (BETA)

Earn money with your Pull Requests on GitHub!

Merge Rewards is a fully automated service that lets you earn STEEM with your merged pull requests on GitHub.

Go to:
merge-rewards.com

Repositories:
Website and Bot

Connect your GitHub and Steem accounts and claim your rewards by simply clicking a button.

As easy as it gets!

You don't need to write a post about the work that you already did and you don't need to wait for a review process.

The website lists your pull requests, calculates a score and generates STEEM for you as soon as you click the "claim" button. Simple!

The Score Algorithm

The algorithm to calculate that score is of course the most essential and crucial part. For now it's really simple and abusable but over time a variety of improvements will be implemented.

Currently the code you contribute isn't of any relevance. One reason is that it's not an easy task to automatically evaluate code quality properly. The other reason is that the project's popularity is at least as important and the quality of the code itself (or whatever the pull request contains) will be ensured implicitly by project owners who decide what to merge and what not.

Merge Rewards uses only meta data to calculate scores and the scores are not based on the amount of work but on how many people benefit from it.

A small bug fix in the Linux kernel affects much more people than the next big and bloated feature set in a project that is used by only a few people.

I understand that sometimes the small projects of today are the big ones of tomorrow and sometimes the value of a project can not be measured by it's popularity. But Merge Rewards is not supposed to be perfect from the start. It's supposed to evolve.

So, this is the first simple version of the score calculation:

if (userAge > 365) points += 1;
if (userAge > 365 * 5) points += 2;
if (mergedPRsLastMonth > 2) points += 1;
if (mergedPRsLastMonth > 10) points += 2;
if (repoAge > 90) points += 1;
if (repoAge > 365) points += 2;
if (repoStars > 50) points += 1;
if (repoStars > 250) points += 2;
if (repoForks > 10) points += 1;
if (repoForks > 50) points += 2;

return Math.round((points / 15) * 100);

Really stupidly simple but as you can see, there are also factors like your GitHub account age or the age of the repository. I have a lot more metrics in mind to make the algorithm more fair and flexible. I also plan to give project owners a chance to affect the score.

Here's a list of possible improvements:

  • Does the PR close an issue?
  • Were there additional commits made after the PR was created?
  • How many comments are there?
  • Did the project owner react with specific emoticons or with a special command? (Something like: !mr xs/s/md/l/xl)
  • How many other projects use this repository?
  • How many other contributors are there?
  • To what other repositories did you contribute.
  • How many followers do you have on GitHub?
  • To how many DIFFERENT repositories did you contribute
    • overall
    • in the last month
  • keep alive bonus: last commit to the repository is older than 1 year

Etc... The GitHub API offers a lot of data that wants to be used.

The Bot

Once you've claimed rewards for one of your pull requests, a comment is posted to the blockchain and a bot votes on them. This bot is mostly based on something that I wrote almost a year ago for Utopian. Unfortunately they never used it so I'm glad to have some purpose for it now. On the other hand it needs some adjustments. I already removed all the Utopian specific code but I also need to change all the voting power related stuff to adjust it to the "new" resource credit system. I haven't been active for a year so for me that's new. The bot kind of works for now so I'll postpone this a little bit.

Basically it behaves like this:

  • It waits until X posts have piled up (intended Wait List).
  • It upvotes one post at a time / per run (every minute). First in first out.
  • It upvotes as long as X posts (or more) are on the Wait List and Voting Power is above a fixed minimum.
  • Exceptions:
    • Next post in line reaches a specific age: Vote will be forced.
    • Voting Power reaches a fixed maximum, slightly below 100 %: Vote will be forced.
  • The Voting Weight is determined by the PR's score.
  • If contributions pile up or get less, the bot speeds up or slows down by lowering or increasing the weights automatically.

Read more in the Readme.

Abuse

Well, there are not many hard requirement for PRs except they need to be merged in the past 14 days (For the start I set it to 90 days!) and for a repository other than your own ("own" means administrator rights). And there is no human factor at all so abuse might become a problem. This is why the scoring algorithm needs to be smart. I think with the factors I use currently it is already too much effort to abuse the system compared to the rewards which are currently none because there is no Steem Power in the account.

But I want to invite everybody to try and to help to make it more immune to abuse.

Currently you can "easily" fake a 60 % score by:

  • creating a repository
  • submiting more than 10 PRs to it (can even be from same account)
  • fake/buy 250 stars and 50 forks

If your GitHub account is a bit older and you have some old repositories there, you could even reach a 100% score.

Planned/Possible Improvements

Better Website and Branding

The current website is just a quick "make it work" thing. I will put all my design and marketing skills (no matter what that means :D) into giving it a professional look and feel and the best possible user experience.

Show Estimated Rewards and Bot Status

Currently the website shows only the score of a PR. The estimated vote value could be next to it. As there is a waiting list and the possibility that the bot "overheats", it's status can be shown on the website as well.

Keychain Integration

Since Keychain seems to be sorft of a "first class citizen" in the Steem ecosystem, I will integrate it as soon as possible. But this also means I cannot rely on Steemconnect's comment function. So the changes affect more than just the login mechanic.

Utopian Integration

Although this whole project is about automating some parts of Utopian, it doesn't mean that you can't have both.
When claiming your rewards you will be able to author a post which will be automatically tagged for Utopian and prefilled with their post template.

On the other hand I could also integrate Utopian posts by looking for URLs to merged PRs somewhere in the post content.

Featured Projects

The website will show projects that invested in Steem. This investment will be Steem Power of a separate account to increase the rewards for contributions to this project.

Automatic Reward Claiming

If you grant offline access to your account, rewards can be automatically generated once your pull requests get merged.

Changing Root Post / Statistics Posts

Currently the PRs are represented by comments of a specific post from the @merge-rewards account. This post could automatically change by posting a new "root" post every X rewarded PRs or in a fixed interval to show some statistics. The first root post is this one by the way.

Browser Plugin

A browser plugin could render a claim button directly on github.com on your pull requests page.

GitHub Bot

Some sort of bot that automates communication with project owners.

Own Token

If somebody can explain to me what the exact benefits of an own token really are, maybe that's an option. But to my understanding it's only... let's call it prestige and more difficult to cash out.

AI for Scoring

Ok, this might sound a little bit far fetched but actually all it needs is training data and a lot of metrics. The metrics should not be the problem. The training data maybe is, because it needs humans to review the results of the scoring algorithm. But think of it as a "shifted" moderation process.

Other platforms than GitHub

Does that make sense? I don't know. Bitbucket maybe? Is there any other platform than GitHub with a considerable amount of open collaboration?

And so on...

I think there's a lot of potential and room for improvement in this, especially regarding the scoring algorithm. And I'm sure I had some ideas that I didn't write down anywhere and now I forgot. The best thing is, this project has a built-in incentive mechanism to improve it. Maybe I'll even give some extra points for PRs for this project. :D

Delegate!

Obviously this whole thing can only work with a considerable amount of STEEM POWER. I am not rich so I can't power up this account to that level. I just delegated 100 SP to make sure there's enough RC for the start.

Until now there's no mechanism to reward delegators and maybe there won't be one. I will set all posts from this account to 100 % SP payout. So you can also support the project with big upvotes on posts from @merge-rewards. A direct delegation is of course the most needed way of support for the time being. I will also try to find investors but actually I don't like that kind of work so much so maybe that's not going to happen.

Currently 50.000 SP would result in up to 1$ in rewards for a pull request. That is the goal for now!

Disclaimer

Currently this project is in PROTOTYPE stage! I called in BETA in the title because it sounds better and actually it can be used already. BUT... please see this as a project that we can develop together. If there is some bug preventing you from getting your rewards, fix it and get rewarded for that! If you think the scoring algorithm is stupid just submit a PR and let's discuss it there as well.

Best regards,
@mkt

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Interesting concept. I loved the idea and prototype.

Can't wait to see what comes next on this. Even though I feel a scoring algorithm (without human touch) that people can't abuse is a real challenge.


Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post, click here.


Need help? Chat with us on Discord.

[utopian-moderator]

  ·  2 months ago (edited)

Thank you for your review! And yes, abuse will be the biggest concern if I can manage to reach a larger audience. In the end there might not be a 100 % secure way but the point is to make abuse so hard that it's just not worth the effort. And also "human touch" can be implemented but not in a way that it disturbs the user experience in any way. There can be blacklists for users and repos. There can be a flagging system. Whatever. It's just the start. Well, we will see where it goes.

Thank you for your review, @emrebeyler! Keep up the good work!

Hi and welcome here! When I started on steemit, my biggest problem was to find interesting people to interact with. So, to help newcomers getting started I created a directory with other interesting and or talented steemians to follow or interact with. Feel free to check it out at https://www.steemiandir.com I am sure it will help you find like-minded people. Enjoy your stay here and do not hesitate to contact me if you have any questions!

  ·  2 months ago (edited)

Very cool concept, I'm getting an error on the api though.

EDIT: Nevermind, there is another print in the console, it's because it's my own repo, I didn't know about that rule.

Oh yes, I didn't mention that in the post. I'll add that. I want to make sure that people are collaborating so for the start, own repo is not allowed. But there are ways to fake that of course. Hopefully I will be able to prevent that properly.

Your code is pretty smart too, it doesn't let you use PRs on orgs that you are a member of.

Well, it checks if you have admin rights for the repo. Being member of the org shouldn't be a problem. Thank you for testing!

Just a heads up, clicking my name on the website links to your GitHub, probably a placeholder value.

Oh... Yes. Thanks! :D I'm working on a better website already. This was just proof of concept.

Hey! Thank you for the first two pull requests that are not from me! :D
Unfortunately there are no rewards yet because the account has not much Steem power.

Ah, that's why the web-apps seems like hang. Thanks for letting me know. I rarely open Steem now, so don't know what is hot in the Steem ecosystem. Good luck with the projects hope it can grow big 💪

Interesting. I will try it right away

Posted using Partiko Android

Thank you! For now there are not really any rewards because the account does not have any steem power. But I'm working on a lot of improvements already anyway, in the hope to attract some influencial supporters. If you like follow @merge-rewards. There will be a big update in the coming days.

Ok. I have been able to sign in by the way; maybe due to my network issue. I will follow @merge-rewards cause I am just confidence this will easily be the next BIG thing.

Congratulations @mkt

Posted using Partiko Android

Hey, @merge-rewards!

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!

Welcome to Steem merge-rewards! Partiko is officially the fastest and most popular mobile app for Steem. Unlike other Steem apps, we take 0% cut of your earnings! You can also be rewarded with Partiko Points while using Partiko and exchange Partiko Points for upvotes!

Partiko for Android can be downloaded here on Google Play and the iOS version is available here on the App Store.

If you have more questions, feel free to join our Discord channel and ask @crypto.talk, we're always here to help!

Thank you so much for your interest!

This post was resteemed by @minnowresteemr!

Send a min of 0.001 STEEM/SBD with post in memo for a resteem!

Follow me to support other Minnows!

Hello @merge-rewards

Welcome to Steemit & Wish you luck - success with Steemit!

Currently, We're supporting for the Planktons by our small upvote. If you follow @haccolong you will get free upvote of @hoaithu's Curation trail & minimum 1 follow from me. You may like it, Check statement here.

To get 3000points and receive additional rewards from your activities on Steemit, you can use Partiko app for your phone.

Please ignore this reply if you do not need the above.

Posted using Partiko Android

Welcome to steemit @merge-rewards.

Welcome the new steemians. Have a great day!

Cool initiative!

Welcome merge-rewards!
eSteem is the application that improves your experience on Steem. You have full control over your data and content, unlike some apps we don't use our users to promote our application or services.

We have Mobile application for Android and iOS users. We also have developed Surfer Desktop application that helps you to gain new followers and stay connected with your friends, unique features - notifications, bookmarks, favorites, drafts, and more.
We reward our users with encouragement upvotes as well as monthly giveaways rewarding Spotlight top users and active Discord users.
Learn more: https://esteem.app
Join our discord: https://discord.gg/8eHupPq

Hi @merge-rewards!

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

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

You published your First Post
You made your First Vote
You got a First Vote
You received more than 10 upvotes. Your next target is to reach 50 upvotes.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Vote for @Steemitboard as a witness to get one more award and increased upvotes!