https://news.ycombinator.com/item?id=6882374
(SFErik had nothing to do with the bitcoin stuff; someone else put up the money and started it for his repo.)
But, we could be wrong! We'll see.
I suspect that, despite the potential for abuse, you won't actually see very much actual abuse.
You can't obviously measure it on number of lines changed or something because that doesn't reflect the importance of a change, but maybe just say "okay, I can merge this but you get only 0.0001% because it's just a minor typo" or something like that. And if somebody is trying to abuse the system then just give them 0.
A better way would be to set up issues with bounties (what is already mentioned in the article) so the actual developers can decide the worth of contributions before the contributions are actually made, in order not to do favoritism.
One might argue that initially those problems would fix themselves as people would grab for the lowly hanging fruit, and that's fine, but I could see someone refactoring segments of code for no realistic reason, but "selling" it as an improvement, for the explicit goal of collecting the money.
Having a gatekeeper prevents this somewhat, but this company seems more interested in some kind of idealistic anarchy.
[.] Finally! We'll be having people fighting each other for a more up-to-date documentation!
Studies have shown that if you add in even a small amount of extrinsic motivation (i.e. pay people) it dramatically affects their perception of intrinsic reward. In other words, if you pay someone for doing the exact same thing, the task becomes less enjoyable.
If we start throwing cash around, it's going to have a huge impact on the psychological aspect of open-source, and probably not for the better.
These studies are typically set up such that there's no choice; you have kids (usually) do some activity like drawing for either no reward or extrinsic reward, and then see how many continue once you remove the extrinsic reward.
There are a lot of possible explanations for this; the one I like the most is based on self-perception theory, which would predict that once you've accepted the reward, you attribute your motivation to the reward.
There are some differences between those studies and this scenario:
1. Open-source developers have a far wider range of options, and must actively choose to work on a project with financial reward.
2. Open-source developers who have already contributed some amount for free should be less influenced than new developers -- they already have had altruistic/intrinsically-motivated self perceptions.
Developers that are attracted to OWS projects because of this reward probably won't stay if the reward is removed, but I'm not sure, and don't predict, that OWS projects will attract fewer developers overall because of this.
I think that intrinsic and extrinsic motivators can definitely co-exist, especially for domains where there are differences in the tasks -- for example, offering these bounties for "less fun" stuff (or dynamically offering more for parts of the repo that have been touched further into the past).
There's a lot more literature behind this than just studies with kids, though I'm a total novice here. Here's[1] a painfully detailed meta-analysis I found.
> Developers that are attracted to OWS projects because of this reward probably won't stay if the reward is removed, but I'm not sure, and don't predict, that OWS projects will attract fewer developers overall because of this.
Reducing this down to just "more or fewer contributors" is the kind of over-simplifying that I worry about here. The software industry is not historically people-savvy, and open source is an entirely social phenomenon. It's easy to mess things up.
I'm less worried about the number of people changing than I am their relationship with the projects they work on changing. Right now, if I send someone a patch, I feel good because I know I'm doing a purely good thing. If I send a patch to a project that pays for patches, that's not bad, but it means now I feel more like I'm freelancing or some other more complication jumble of emotions.
Likewise, if someone sends me a patch, do I get excited that they want to be a part of my project? Have I met a kindred spirit? Or are they just gunning for a chunk of BTC in their off hours?
I'm not saying introducing money is a bad thing here, but like all other avenues of social activity, involving even a small amount of money radically changes the nature of it. Don't believe me? Try tipping your parents after they have you over for dinner. Maybe leave a fifty on your significant other's bedside table and see how that goes. :)
[1]: http://www.rug.nl/gmw/psychology/research/onderzoek_summersc...
I just completely agree that trying to motivate people who give huge amounts of time with small amounts of cash isn't a great idea. That said, it's good that there's a place for it (gittip etc.) should people want to.
Anyway, if you want to give feedback http://github.com/thankadeveloper/thankadeveloper and http://thankadeveloper.herokuapp.com (in the process of polishing, domain etc.).
I'm not sure if I'll ever really get the culture change in encouraging more "thanks" in the world, but it has been a fun little project getting up to speed on rails4, octokit etc.
How is that different?
I am, this is a great question!
> How is that different?
What it means is that working on Dart is my job. It's a great job, and I love it. Like other good jobs, I get lots of both extrinsic and intrinsic reward from it. (In fact, a curious facet of being at Google is that the intrinsic rewards of being at the company feel like they overshadow the extrinsic ones. I'm constantly in this "and you pay me too?!" fugue of astonishment.)
But it also means that working on Dart is work. I do some extra-curricular activities related to it: I've spoken at a couple of conferences. But even then, I'm getting time off from work for free to go there, so in some sense I'm still being compensated.
I spend time answering questions about Dart online outside of work hours, but that's because, through some Hermione-like mental affliction, I will spend time answering questions about anything I know (and several things I don't).
But, aside from that, I actually don't do much of anything Dart-related when I get off work. Dart is what I do 40 hours a week. It's a happy 40 hours, but when I go home, I stop working on it and stop thinking about it.
Would I hack on it until the wee hours if I wasn't getting paid to do it while the sun was up? I don't know.
This is: Create a pool of btc, distribute to those who commit to current round.
What I thought this is: Anyone can tip on individual commits that they find useful or of exceptionally high quality, akin to Reddit Gold for code. This way, not all commits are treated equally and great commits can be compensated. To further the reddit gold analogy, this can tip for premium features (i.e. tip some btc or usd for a month of free github premium) or just straight out money.
I realize there's gittip, but this is on the level of commits, not developers.
To use a restaurant analogy, a shared tip jar that gets split evenly at the end of the night results in much fairer distribution (and includes the chef and cashier as well) as opposed to personalized tips which get unfairly / unevenly distributed between waiters. Most people tip because of the full service, from ambiance to service and cooking, not just the front-man performance.
And you can still always ways to tip individuals developers (or waitresses) personally if you so wish.
Your model/the gittip model is good.
So many times, there are only a small handful of people who care about a bug being fixed or a capability added -- but that small handful are both willing and able to tip generously for work that meets their specific need! We've all been there. Either as an individual, an agency, or a software company, we've been in a place, dependent on a relatively lower-profile project where we'd cheerfully tip in the $50-$300 range. That's probably good for everyone. There are a few ways of doing this, but what you've described -- 'tip for this specific commit' -- is how easy we all wish it was. I wish it was a feature of github.
But their model is good, too.
Some open-source projects are relied upon by thousands, tens of thousands, or more people, and they want to know that everything, small and large, is being done to keep the software stable. As others have commented in this thread, this would be a way to pump up the ecosystem for popular, highly-depended-upon open-source software projects.
Sure, adding features like this might induce gaming. But if I understand their model, this may just mean that those reviewing pull requests may just need to take an additional factor into account -- whether or not the commits involved are substantive, or if they're too 'gamed'. It seems like it might be a self-licking ice cream cone, because larger-scale gaming (attempts to earn Real Money through mostly-frivolous PRs) could be caught by review, whereas minor cleanups for docs or comments in the commits of a PR that includes more substantive work might be, as other commenters have mentioned, perhaps just a few percentage points of 'wastage'.
I don't think we really know if it's feasible or not, but I applaud these efforts tremendously.
I also wonder if a hybrid system could work -- perhaps as a feature to be added to the 'tip for all commits' approach. Allow tipping for individuals, but a certain percentage (50%? 25%? something?) could go into the general pool for all accepted commits.
Call me naive but this is a really nice idea. Reminds me of flattr except it's automated. The idea of having bounties to various project issues and setting up a commit/pull-request payout could be a real incentive for a lot of people to contribute to actual open source software.
Bitcoin is just the icing, makes this really well integrated and anonymous too. I can't wait to see where this project leads us to. Maybe an actually fully decentralized open source employment career?
Also, are the contributors anonymous in the sense that you have no way of knowing the identity of the contributor? Or, anonymous in the sense that the contribution originates from a particular pseudonym?
1) Services can be bought with Bitcoin.
2) Github is awesome, but currently it's a totalitarian regime. Anyone with power can accept a Pull Request. There is no other form of government possible.
The thought occurred to me that for some kinds of projects, it might make sense to encode a form of government into the Source Code Repository / Source Code Review / Account system, itself. And possibly to have the entire thing - government, source code, data, and the running project itself - be self-hosting on a cloud server.
Self-hosting is the critical, and very interesting part to me. You pay your membership dues with BitCoin, and the service pays for its own hosting with BitCoin. And perhaps that's it - no one else has the keys to the BitCoin account, no possibility to profit off the service, it just pays for itself as long as it can, and then shuts down.
You could imagine a direct democracy, of everyone who pays their monthly membership fee. Or perhaps you gain voting privileges once you've been a paying member for 3 months in a row. All kinds of parameters could exist, and a single Community could possibly even modify their own laws, through something like a Constitutional law process. Maybe if the community is really successful, the governing body can start paying people with BitCoin to fix bugs, add features, create new art assets, etc.
There could be separate partitions of government. Like, picture an MMO RPG. Member for 3 months can vote on engine. Member for 12 months can vote on the content of the game itself, like where cities go, how much manna a spell costs, etc. Or maybe you get the right to vote, once you've completed an in-game quest!
As the code is modified, the service waits for all of the unit tests to pass before accepting a code change, waits for the government to approve of the changes, and then does something like restart the server at midnight.
And depending on the licensing, it may be possible for someone else to throw some BitCoin at a new server, and fork the whole Community, picking slightly different Constitutional and legal parameters. Over time, people end up with accounts on systems that have content and laws they like.
I've got a lot more thoughts about such a system, and I hope it comes to exist some day.
At some point this sort of thing becomes a co-operative business... kind of big for a side project :-/
Anyway I started a python prototype (see my profile), and would love to bounce ideas off you!
That said, I'm not sure what field to try this on. StackOverflow is damn near perfect, IMO, in its current state. There are endless high-quality answers, without rewards.
Unfortunately it's hard to replace with direct usage of the P2P network because it relies on sending money to an email address: i.e. a trusted third party has to hold the money until the recipient picks it up. What if they never pick it up? What if they don't actually want bitcoins?
It seems to me like a decentralised solution would be easy to code up, if only we add an additional requirement: someone who wants a payout should put a Bitcoin address into the pull request or commit description. Then BitHub would be able to make payouts directly from its own wallet with no Coinbase dependency, and a committer has to opt-in to receiving the funds.
I might take a look at coding this up soon. BitHub is Java so using bitcoinj and XChange would be very easy.
Additionally, I would like to provide bonuses for each checked-off item of
1. Does it have appropriate tests?
2. Is there appropriate documentation?
3. Has it been peer-reviewed and signed off? (Reviewer shares this bonus.)
These are the above-bare-minimum things I would like to encourage in my open source projects. Not everyone has time to go above and beyond when fixing a bug they encountered, but it's more than appreciated when they do.
In fact, maybe the payments should only be for the bonuses, not the merged PR itself.
I'm going to dig into WhisperSystems to see if there is anywhere I can contribute.
Hopefully more OSS apps do this.
It'd be nice if more projects open-sourced their marketing landing pages or homepage as well. I'd love to be able to do conversion-optimization and copywriting for OSS projects, instead of just programming.
The twist I would like to see, which I feel fixes the fluff commit problem, is to write unit tests associated with a coin bounty. It puts a burden on the test author to write tests that are not easily gamed, but thats good practice anyways.
This seems to me like a better solution for collecting donations, which is a solved problem.
The main differentiator here is that 90% of mined coins go directly in rewards.
BTC has a huge problem and the mBTC uBTC just ended up confusing people even more.