gratipay / gratipay.com

Here lieth a pioneer in open source sustainability. RIP
https://gratipay.news/the-end-cbfba8f50981
MIT License
1.12k stars 308 forks source link

project tips #27

Closed chadwhitacre closed 11 years ago

chadwhitacre commented 12 years ago

We need support for organizations and projects somehow. I would like to emphasize that groups are made up of individuals, and the individuals are responsible (for both good and ill). Need to define the semantics around individuals leaving and joining the group.

This is really a tough nut to crack. It's the line between group and individual. Right now Gittip is designed for individuals, but that means every individual has to be their own marketing department. It only works for "Internet rock stars." What about normal people? What about everyone who labors tirelessly without tooting their own horn? How does Gittip work for them?

timothyfcook commented 12 years ago

Can you pull info from Github profiles that could help sort when multiple people work on the same project?

For instance, you could create a 2nd search box: "Find a project:" ...if someone types in "gittip"

all github names that have worked on the gittip project would show up in a list.

The tipper then could have the option to batch tip all names associated with gittip (maybe it would default to all checked boxes next to names) or they could choose certain gittip-associated github users and not others (check some boxes, uncheck others).

Obviously batch tipping would benefit from some way to distribute tips equitably between major and minor contributors to ao given project. For instance @timothyfcook does not deserve as many tips as @whit537 for a batch tip for gittip project contributors. Again, not sure about the technical end and what sorts of things you can pull from github profiles, would it be possible to assess their contribution in some way? Like number of issues contributed to, comments, pull requests, etc. Maybe some of this data is hiding out in github somewhere for you to access.

I think batch tipping/project-based tipping will be important because, to mention it again, most people are not going to be nearly as familiar with an individual contributor as they will be with the project as a whole. I'd say the vast majority of folks that get on gittip are thinking: "oh! I should tip those folks who made that leet.ly trojan destroyer!" and don't have specific names in mind.

chadwhitacre commented 12 years ago

GitHub has organizations, which currently on Gittip list the people who are members of the organization. Here are four examples:

The low hanging fruit would be to add tip buttons next to each person, like we have on profile pages for the people one currently tips. From there I think you're right, we should add a way to tip the organization/project as a whole, and have it distributed among the people in the group. I've been thinking about how to pro-rate it amongst project contributors. Currently I'm thinking we should start with the naive solution of splitting it randomly among members, since people can contribute both to individual members and to the project as a whole, and it seems like bigger contributors will be better known as contributors and will pull their own tips directly, and maybe this will be enough to account for the pro-rating?

P.S. Check the GitHub API docs for what info is available to us: http://developer.github.com/

chadwhitacre commented 12 years ago

As far as the search box for discovering organizations, that's either covered by #20 or should be its own ticket.

chadwhitacre commented 12 years ago

More thinking on this. Given org size N:

The thinking here is that someone comes to an organization or project with intent to tip, and this gives them a way to evaluate which of the people in the organization they want to personally sponsor. They can make their own decision whether to sponsor the rock stars or the yeomen (yeopersons?). It's the people actually involved in the project that are qualified to make the determination about who is which, but that wants to happen anonymously, which requires a certain size N. If someone moves on from a project they take their tippers with them. Tips are for people, not projects.

chadwhitacre commented 12 years ago

P.S. I think this gets rather complicated outside of GitHub. Is https://twitter.com/kanyewest a person or an organization?

timothyfcook commented 12 years ago

That case uses different logic than any of the github cases. It must be assumed that anyone claiming an account on Github is an individual. The question, then, is what organizations/projects is that individual associated with. Twitter doesn't have the ability to tell us this, Facebook, however, does--at least--have a list of people's employers.

I'm not really a fan, but LinkedIn might be an easy way to identify people's associations.


To use your design from the outside in/build from the inside out philosophy: if we really want it to be excellent and reflect the sort of culture you are trying to create, you may want to consider creating something new. I think that a project-based culture of work, collaboration, and service of the common good is not very well reflecting on any of the social networks. However, it is increasingly becoming a really great way that people define their work. Rather than defining oneself by a mere employed position, we are defined by a more dynamic amalgamation of projects. I think Gittip would do well to embrace and "house" this project-based culture, it fits closely with its goals.

That said, if people sign up with Github/Facebook you can automatically associate projects/employers (but, likely you should let the user choose if they want to remove any of these associations), but then you should also allow users to manually add projects. An autofill box would work well here (so if other users have already claimed association with the project they can use the same name).

If a user is the first person to associate themselves with a project (meaning they don't choose an autofilled option) you could ask them to provide some basic content for this project (edit-able later by anyone associated with the project):

  1. Project Name (autofill):
  2. Project URL:
  3. What are the goals of this project?

Then--and this is a great way to get folks to invite more friends--you should give people the option of identifying other people associated with a project, or at least just inviting their colleagues via tweet/e-mail/facebook that tells them to associate themselves.

  1. Invite others that are helping you with this project

Of course the trick here is authentication, this allows for just anyone to associate themselves with, say, Gittip and reap the micro-philanthropy accordingly. Some sort of democratic fail-safe should be built in.... or even a guilting mechanism to encourage a trust-based system. The simplest fail-safe would be to allow users associated with projects to kick out project members via some voting platform... maybe there is something simpler to ensure that people are self-policing project associations.

timothyfcook commented 12 years ago

I think the logic you spelled out for org. tips makes good sense.

chadwhitacre commented 12 years ago

I think that a project-based culture of work, collaboration, and service of the common good is not very well reflecting on any of the social networks. However, it is increasingly becoming a really great way that people define their work. Rather than defining oneself by a mere employed position, we are defined by a more dynamic amalgamation of projects. I think Gittip would do well to embrace and "house" this project-based culture, it fits closely with its goals.

Love your thinking here, @timothyfcook. :-)

chadwhitacre commented 12 years ago

Now that we have fund goals (#110) that could be mixed into the distribution algorithm for project tips. We're also looking at projects being able to set their own funding goals to cover costs other than people (#152).

We still associate people with projects, of course, and display that, but I'm thinking we want to allow people to tip a project directly instead of only tipping the people in a project directly. Brands are powerful. Keep the transparency, though. On payday your tip is still a tip to a person. On your history page it notes why you tipped that person. Or better yet, there's an entry for each project and line-items under that for specific amounts to specific people as well as to the project's "project fund" (see #152).

chadwhitacre commented 12 years ago

+2 from HN.

chadwhitacre commented 12 years ago

"pay per commit at the end of month, from funds donated to a project" (twitter)

pfrazee commented 12 years ago

Quick point: people game systems. The challenge of the problem is trying to minimize that impact, but every choice fails somehow to somebody.

I'd suggest that organizations self-implement their payment structure. The organization receives tips, and the org leader decides how to distribute. Optionally (but preferably) the leader would then tip the members from the org's account.

chadwhitacre commented 12 years ago

+1

chadwhitacre commented 12 years ago

@pfraze Spot on re: gaming.

I actually would like to explore the opposite direction from "org leader," though. I was quite moved by the Netflix Prize contest a few years ago, and the idea that our human categorizations for things come out in the wash when we apply machine learning. At the same time, we need names for things. A recent article on the Netflix prize and machine learning gave the example of credit bureaus that have to give a reason for rejecting an application: "You can't just say because x was less than 0.5." Likewise here we couldn't just give someone's money to someone else "because x is less than 0.5." There has to be a human-comprehensible (humane?) reason for the transfer. This is where brands come in. A "brand" in my thinking here is basically a name a human gives to "x is less than 0.5." It all seems very subtle and nuanced to me and I'm not sure how to work it out but it's exciting to think about. :-)

A middle road would be simply open tagging of people (#94).

It's just so tricky because what happens when people start tagging each other "Nike"? Who does Nike send their cease and desist to? I'd rather it not be Gittip.

Do we have to centralize creation of brands (projects, companies, organizations, groups--to my mind they're all brands) on Gittip? How does that work? Who verifies identity and ownership? I'd rather it not be Gittip. Do we use DNS to link domains to Gittip brands as a means of verification? Do we equate domain name with brand? What about brands without a domain name? A number of small businesses just use Facebook--though in that case I guess we have a verification hook.

On the word brand: It's off-putting to people. AHHH!!!! CORPORATIONS!!!!! I have half a mind to try out the word and see what happens. Brands are powerful. Humans do think in brands. AdBusters is a brand. Occupy is a brand. Do you want to tell me they're not? Anarchism has a logo, for pete's sake. With Gittip I want to kind of yank the chain and get "brand" back in line. It's people that give life to brands by lending them a part of their identity. I don't want to pretend that doesn't exist, I just want to bring the people to the fore. Ideally this is done in such a way that existing brands and corporations don't get all white blood cell on us.

So there's the matter of creation and then the matter of association. There's also the matter of resolving collisions, and the matter of modeling the fluidity of association over time. Association varies in strength from "I once tweeted positively about this brand" (lending your identity to it in the very slightest way possible), to "I am the creator, founder, CEO, president, pope, emperor, and ornithologist of this brand." Actually, even stronger would be the personal brands of celebrities. I want to give money to "Kanye West." Who gets it? He along with his entourage, I suppose. How is that modeled?

Okay, that's a brain dump. There's a lot going on here and it's at the heart of what Gittip is about. Let's keep on it ...

pfrazee commented 12 years ago

The problem with "x is is less than 0.5" is that it's the end-result of a long equation that's not explained. I think what you're suggesting is a way to make contributors' roles (the "x < 0.5") clear to a casual outsider, just like a Nike shoe has a clear meaning, so that people can make good judgments about their tips. Correct me if I'm wrong.

In that case, there are two issues to resolve: 1) assigning brands, 2) communicating brands. Assuming both are accomplished, the idea is that tippers would look at a team, see who has what brand and how people are getting paid, then choose how to distribute their tip-- correct?

timothyfcook commented 12 years ago

I like the idea of using the crowd to affirm or deny "brand" or project association.

People can align themselves with a project and then any other people who also are aligned with that project can have the power to promote or deny association (+1 or -1). If a person gets enough -1's they could lose that association. If there are 20 people associated with the "Gittip" project, and 18 of them think that 2 people are not contributors, they can vote them off. It could be interesting to assign Project Leadership to one or more people and grant them special powers. This might have to be done by humans on a case-by-case basis. Like Twitter's checkmark verification.

Or it would probably be less work to enable the crowd to assign project leadership and trust them to make the right claims... but have a failsafe mechanism for people to dispute assignments. That way you'd only have to verify a minority of cases.

Moreover, each person who associates themselves with a Project should have a separate description for their Project contributions in their "I make the world better by..." section. This way we'll be able to read each person's claimed contributions to a Project... people should show evidence of their contribution when possible.

  1. I make the world better by... a, b, c, d
  2. I contribute to the commons through my work with:
    • Gittip Description of what I do to contribute to this work.. Description of what I do to contribute to this work.. Description of what I do to contribute to this work.. Description of what I do to contribute to this work.. LINK to source LINK
    • The Equine Translation Society and Peanut Butter Subsidy Group Description of what I do to contribute to this work..Description of what I do to contribute to this work..Description of what I do to contribute to this work..Description of what I do to contribute to this work.. LINK to source LINK
    • JQuery Description of what I do to contribute to this work..Description of what I do to contribute to this work..Description of what I do to contribute to this work..Description of what I do to contribute to this work.. LINK to source LINK
pfrazee commented 12 years ago

I want to outline some of the positives of a pure moderator structure (where a select few make decisions):

Crowd-decisions are an authentic and scaleable solution, but they need to be funneled into the most objective questions possible. Association with a group is pretty subjective, and it enters into a Big Question domain (modeling fluid social structures) that I'd recommend Gittip avoid.

Originally, I felt like distributing pay within a group was entirely in that Big domain, but now I could see crowd-sourced org-pay-distribution work if brands and membership are determined by the group. In fact, I could see any crowd-decision-making structure work, so long as the questions are structured and posed from outside of the crowd system.

chadwhitacre commented 12 years ago

@pfraze You're right that simplicity is a prime directive here.

The thing is that we already have a voting mechanism, tipping itself. The contra argument is that this devolves into a popularity contest, but adding a second layer of voting doesn't get us around that. That's just the stupidity of crowds.

What if we had a mechanism to say "this tip to X individual is due to their association with Y brand"? It'd be a combination of tagging (#94) and two-sentence thank yous (#7). It'd be shorter and canonicalized unlike free-text thank yous. It would be pre-populated with existing associations, with option for "new". A "brand" would be created when the first person is tipped because of it and destroyed when the last relevant tip is zeroed out.

I really like where this is going.

I like that brands depend for their existence on people. (That solves creation.)

I like that the power of association is put in the hands of (anonymous) donors.

At first nothing is attached to a brand except a single tag. There are no websites or logos or heavy branding per se. At first, all of those things are discovered by clicking through to the individual people associated with the brand. If someone tips @timothyfcook for saxifrage then when I visit saxifrage I see @timothyfcook with no other branding. And then I click on @timothyfcook and see his description, which includes a reference to The Saxifrage School and its website, etc.

Could Gittip get a cease and desist? Of course. Lawyers are lawyers. Corporations are corporations. In that case we take the cease and desist and put it real big on the /nike/ page and disallow the use of that tag for gifting people from then on. Automate this like with opt-out for individuals as much as possible. Though I think we want to receive paper mail and have our lawyer confirm with their lawyer for this.

When more than 100 people tip someone for their association with a brand that person gains powers to customize the brand's page on Gittip. Gaming prevention here would include disallowing the same credit cards from being used on too many accounts (#134). An attacker would then need to use multiple (stolen?) cards (20? 25?) to tip a single individual to put them over the 100-funders limit to gain powers. Another mitigation would be to require that the funding is successful for {n} weeks in a row before powers are granted, on the assumption that stolen cards will start failing as victims report the breach.

Powers would include ability to customize a brand page, as well as ability to delegate power to customize a brand page. "Vassals" should lose powers when their brand "lord" drops below 100. I guess it reverts back to a plain page then, but without deleting customizations, just putting them on ice?

There might be some weird abuses around corps that have their agents tip someone to promote them to lord. Maybe the calculation of 100 has to come from people who are themselves not associated with the brand in any way.

This is not friendly to corporations as corporations are currently constituted. It essentially blackmails corporations into playing our game, which is asking for white blood cells. Some social media marketer for a corporation is going to come to us with mildly interested intentions, and if they hear "please have 100 outsiders tip you personally your real name you yes you or someone else at your company real American dollars money shekels," they're going to call their legal department.

Hrm. Am I over-analyzing this part? Maybe we allow corps to optionally claim a brand page by paying us $10,000. Where do those shekels go? Gift bomb (#131)? Or maybe that's okay and we just take the cease and desist. My idea with broadcasting the letter (like, a scan of the actual letter, nice and big) would be to shame brands that go that route. I would expect they would give us a whole list of strings that they'd want off-limits: "nike" "nike-this" "nike-that". One tactic would be to comply, with regards to all of them. That's just more of the Internet announcing that this brand just doesn't get it.

There's also something about deflecting white blood cells to Gittip participants in cases where those participants are strongly associated (> 100) with contested brands. Perhaps identity / address verification is also a condition of lordship? Then cease and desists can be redirected there.

Lord of the brand.

Lords and vassals.

Serfs?

Phew!

So the upshot here is that we would tweak the tipping mechanism to capture an optional secondary "what is this for?" piece of information. There would be buttons for each existing association and an option for "other." Maybe we need an algorithm to dampen junk tags. Like, three people have to associate a person with the (Levenshtein-approximately) same tag before that gets added to the buttons, or something? And once tags are thus promoted, they should be auto-completed globally for others associating others after that.

Can I tip @timothyfcook $3 for saxifrage and another $6 for givepi and yet another $6 for his work with gittip? I suppose we allow up to $24 total per person per person per week. That $24 can be divided amongst various brands as desired. I like.

Muddies the UX somewhat but with an optional second tier of buttons ("How do you want to tag your gift?") it's the sanest, simplest solution I've cognized thus far. Or maybe it's not optional? Naw, I think to preserve the essence of Gittip it has to be optional. "Just being you." No strings attached!

chadwhitacre commented 12 years ago

@brandon-rhodes @nrb @jtauber @claytron @lukeman @bradmontgomery @jackdied @kennethreitz

I don't remember everyone that was involved in the wonderful discussion on this topic this afternoon at PyOhio. If you think of anyone else that should be copied in here please do so.

chadwhitacre commented 12 years ago

+1 from /r/Anarchism:

First, it should add support for organizations, but in a very specific way: whatever is gittipped to an organization should be evenly distributed among its members, who would then (hopefully) naturally achieve a fair redistribution amongst themselves as long as the right decisions are made about what information to make public vs. private by default, like who is tipping who how much. A member of a group could either be an individual or another group, which could make decisions about who to gittip (if anyone) through democracy or some other collective decision-making process.

chadwhitacre commented 12 years ago

This surfaced again on HN.

The Problem: Association is a Contested Resource

The problem I'm having is that I want to deemphasize association with a group as a contested resource. If the jQuery project is popular and there's a lot of money directed at it, then people will try to get themselves associated with that project in order to get a share of the money. If there's a central authority associating people with projects than that's not really very different from companies hiring people.

The Solution: Crowd-source Associations

To avoid this dynamic, I'm interested in crowd-sourcing the association of individuals with groups (projects, communities, brands, etc.). My thought is that there would be a tag (see #94 for tagging / categorization in general) associated with a tip. So the mad lib would be:

I am giving $______ a week to ______ in view of _______.
             amount           person            project

We would then build up a historical record of what each person has received in view of which projects, and use that to distribute funds dedicated to the project as a whole to the associated people. Here's the madlib for project tips:

I am giving $______ a week to _______ to be automatically distributed to 
             amount           project

associated people.

The idea is that the smaller circle of people who are familiar with the project are in effect assigning weighted associations to their peers, and then the generally much wider circle of people who know the project but not the specific people are depending on those associations for the channeling of funds to the right people.

Some Details

The distribution algorithm should look at the past year or so of historical data. I want associations with projects to change gradually over time, not suddenly as with employment relationships. I should be able to follow my interests in a new direction without worrying about my funding stream dropping out from under me.

We need to find the balance with transparency here. The distribution algorithm needs to be simple enough that we can definitively answer the question for someone, why their "association score" is what it is.

We also need to tune the algorithm to mute rock-stardom (#216). Something along the lines of 50% split evenly, 50% pro-rated based on weighted association.

It seems like basing the algorithm on a year of historical data will go a long way towards preventing abuse.

Whereas gifts to individuals should be anonymous, gifts to projects should be public. In this sense the global leaderboard is an instance of the leaderboard that will exist for each project.

Curate the Taxonomy

Coming back around to the HN thread, my current thinking is that we should curate the taxonomy, and crowd-source the associations. (The UI's going to get interesting on this one.) So maybe we even have top-level categories as follows:

That's a brainstorm. I note that the second-level elements are all fairly official somethings. Do we need a certification process? Ah! It's opt-in at the entity level, just like we have opt-in for people:

  1. When people tip to people they should get an "other" box for project, which feeds a listing somewhere.
  2. As votes accrue for a given "other," we talk to the entity in question and invite them to be a project partner. They need to understand that association is crowd-sourced and they have limited control over who gets the money pledged to their project(!).
  3. Once the project opts in, we add them to the list of options for "... in view of __." Somehow we convert previous tips in view of the relevant "other" into tips in view of this project (will get tricky with coding--python == pythno == psf?--as well as disambiguation--pandora radio or pandora jewelry?)

This way we keep "I am making the world better by ..." for people profiles. Eventually we'd migrate accounts like readthedocs to this new project kind.

Corporations and Brands

I had another idea which is coming back to me, where projects would get to set certain ratios when they join:

This ratio is front-and-center when tipping a project.

If Project, Inc. is a charity then it can upload documentation and we somehow handle their donations as tax-deductible (#249). Need to consider tax implications for recipients as well (#96).

I'm now thinking that all "projects" should in fact be legal entities, corporations. Even if we allow tips in view of a brand that should be linked to a corporate entity. Yes, this feels right. We'll call them "Corporations", with badges for "Charity" and "B Corp," and we'll park them under https://www.gittip.com/corps/, or maybe even https://corps.gittip.com/. Corporations are not people. Corporations are made of people.

However, when tipping to a person in view of a project or brand, it should be the brand that the user sees in the UI. "Tip whit537 in view of Gittip" with some additional indicator that the "Gittip" brand is owned by Zeta Design & Development, LLC. There's a one to many between corporations and brands, in other words. Both should be certified and curated on Gittip. on https://www.gittip.com/ we can associate people with brands, and on https://corp.gittip.com/ we can see the association of brands with corporations and the ratios per above.

chadwhitacre commented 12 years ago

From @napoleoncomplex via HN (see also comment on #94):

Maybe it's me, but gittip seems to be oriented around people, which is why I find the projects aspect confusing. I think a much simpler solution is currently in place (and maybe should be encouraged for this case in the future), where companies/teams/projects can sign up with a single account, and people can decide to donate to that account, and the companies/teams/projects solve the money split internally. I know you've done a lot of thinking on the projects aspect, and there's been a lively debate on the issue, but personally, it seems as it adds a lot of complexity to the system, with relatively little benefit.

chadwhitacre commented 12 years ago

[I]t seems as it adds a lot of complexity to the system, with relatively little benefit.

I have to admit, I've got an agenda: I want to make corporations more translucent. I want to emphasize that corporations are made of people. I want to see the people inside of the corporations.

I also want a world in which I can move more freely between projects / brands / corporations. I want these things to be more porous than they currently are. I want to be free to start hacking on Twitter if I want to, that kind of thing.

That's the reason I'm trying so hard here.

chadwhitacre commented 12 years ago

In short, I'm considering a data model as follows:

People - https://www.gittip.com/

People opt-in to Gittip based on GitHub, Twitter, email (#89), etc. There's a soft enforcement of personhood in the profile prompt, "I am making the world better by ..." There is no more-strenuous enforcement (like what Google+ attempts).

Communities - https://communities.gittip.com/

Communities are things like genres of music and programming language communities. They are auto-curated on demand, inspired by Stack Exchange. Each community has its own leaderboard, stats, etc. (etc.?).

Corporations - https://corporations.gittip.com/

Corporations are opt-in and verified. There are badges for non-profit corporations and B corporations. Corporations register one or more Brands on Gittip.

And then ...

People can tip People (apropos nothing).

and ...

People can self-identify with Communities.

People can tip People apropos Communities
   (think through whether patrons and/or recipients must have self-identified with it first).

Communities cannot be tipped directly.

and ...

People can be associated with Brands by the crowd (per above comments).

People can tip People apropos Brands.

Brands can be tipped directly
   (in which case, it gets automatically distributed to people associated with the brand, per previous comments).

and ...

Corporations cannot be tipped directly.

Corporations can tip People (apropos nothing).

Corporations can tip People apropos Communities.

Corporations cannot tip People apropos Brands.

Corporations cannot tip Corporations.

timothyfcook commented 12 years ago

This sounds close. I feel like the "corporations" section should include less formal groups/teams for people who are collaborating on projects... this, of course, is a different thing. These could be small groups, who wouldn't be able to be verified. It's a very similar function... but the name "Corporations" doesn't seem right.

neilk commented 12 years ago

Hey. I met Chad at XOXO, have been checking out Gittip. I apologize if my comments seem out of order, but this is an outsider's perspective.

I don't understand the benefit of this added complexity. I understand that you have an interest in making corporations transparent, but I'm not sure this is the way to go with Gittip.

It seems to me that there's a clear need for Gittip -- people who are doing awesome things where their contribution is easy for the world to judge.

When you expand outwards from that everything gets incredibly complicated. Your data model doesn't come close to capturing the complexity of how people within organizations share credit or deserve credit for good behavior. Some people theorize that the reason why we have firms and organizations in the first place is because these determinations can't be done by an outsider. So you're really trying to square the circle here.

IMO if you did a really good job just with funding individuals, you might find that new sorts of organizations would spring up to exploit Gittip in ways you can't imagine. It might be better to give people a simple tool and let them figure out how to use it.

justinabrahms commented 12 years ago

How about examples? If I'm reading correctly:

People: Alice, Bob, Charlie Communities: Django, PyPy Corporations: Sprintly, New Relic Brands: Not sure about this one. Is Django not also a brand? You seem to say above "everything is a brand" but then explicitly call it out here as something that can be tipped, but there's not specific schema in which brand is called out.

So we don't allow you to tip all of Django, but if its a brand then you can do it? This confuses me.

Is the difference here that brands are not self-selecting or something?

blaztriglav commented 12 years ago

(napoleoncomplex here)

I understand a bit better now what you're going for with your agenda. I see the possibilities, however, I fear that a step in that direction could sabotage your goals. Gittip's foundations as a Kickstarter/Flattr for the people is still being established. It is something that resonates deeply with your audience so far, but is still very much in its baby stages. Since you're involved heavily from day to day, it's no wonder you already see 5 steps ahead, and the numerous avenues it could take. But the general population is still scrambling to understand Gittip. To use a weird metaphor that popped into my head, imagine yourself as the leader of a march for generosity, with more and more people marching with you as they hear about your idea. The corporation idea in this sense feels like you are starting to run in that march, and your fellow marchers are going "I thought this was a march! I can't run that fast!" and slowly falling behind.

As neilk said, if you keep with your core mission as you've presented it so far, you can end up with an incredible platform, where organizations adapt to Gittip instead of the other way around. I think you've done a great job so far, and I realise all of these comments have probably played out in your internal dialogue, so you have more reasons than we can imagine for wishing to take the direction you describe, so I wish you success either way. I do wish we'd walk for a while more before we start running though ;).

timothyfcook commented 12 years ago

To reiterate previous comments: starting to group people in some fashion so they can be associated with the genre of work they do (or what they work on) is incredibly important to garner tips for the not-so-famous names.

The common scenario: someone wants to tip "whoever that was" who worked on a certain project they benefited from, but doesn't know the name of the individual person. We need ways to sort people we've never heard of… (in theory) I'd like to tip strangers, but I'd prefer to tip strangers working on projects I like (and maybe in a geography that's important to me).

On Sep 23, 2012, at 6:10 AM, blaztriglav wrote:

(napoleoncomplex here)

I understand a bit better now what you're going for with your agenda. I see the possibilities, however, I fear that a step in that direction could sabotage your goals. Gittip's foundations as a Kickstarter/Flattr for the people is still being established. It is something that resonates deeply with your audience so far, but is still very much in its baby stages. Since you're involved heavily from day to day, it's no wonder you already see 5 steps ahead, and the numerous avenues it could take. But the general population is still scrambling to understand Gittip. To use a weird metaphor that popped into my head, imagine yourself as the leader of a march for generosity, with more and more people marching with you as they hear about your idea. The corporation idea in this sense feels like you are starting to run in that march, and your fellow marchers are going "I thought this was a march! I can't run that fast!" and slowly falling behind.

As neilk said, if you keep with your core mission as you've presented it so far, you can end up with an incredible platform, where organizations adapt to Gittip instead of the other way around. I think you've done a great job so far, and I realise all of these comments have probably played out in your internal dialogue, so you have more reasons than we can imagine for wishing to take the direction you describe, so I wish you success either way. I do wish we'd walk for a while more before we start running though ;).

— Reply to this email directly or view it on GitHub.

chadwhitacre commented 12 years ago

I feel like the "corporations" section should include less formal groups/teams for people who are collaborating on projects... this, of course, is a different thing. These could be small groups, who wouldn't be able to be verified. It's a very similar function... but the name "Corporations" doesn't seem right.

@timothyfcook My thought was that in this case you've generally only got one or two people doing the work, so you can use direct tips to those people without additional complication on Gittip's part. Maybe?

chadwhitacre commented 12 years ago

@neilk @justinlilly @blaztriglav Thanks for chiming in! It's great to have more eyes here. :-)

Your data model doesn't come close to capturing the complexity of how people within organizations share credit or deserve credit for good behavior. Some people theorize that the reason why we have firms and organizations in the first place is because these determinations can't be done by an outsider.

This is intriguing, though I'm not quite making the connection yet. With the above model, isn't it the insiders that make the determination? Perhaps if we take @justinlilly's good advice it will clarify the conversation. Here's a specific scenario:

The Python Software Foundation (PSF), Inc. opts-in to Gittip and registers the "Python" Brand.

Alice and Bob are both Python core devs. Bob tips Alice $3/wk apropos Python. Alice tips Bob $1/wk apropos Python. Over time these associational gifts and others accumulate, and today Alice has a Python score of 0.6 and Bob has a Python score of 0.3.

Charlie has no idea who Alice and Bob are or what they contribute to Python. But Charlie loves Python and wants to give back. He sets up a tip for $1/wk to the Python Brand.

On payday, $100 comes in for the Python Brand. $4 goes to PSF, Inc. $48 is split evenly between Alice and Bob, $24 each. $48 is split based on their Python scores: $32 to Alice, and $16 to Bob. So Alice gets $56 total for the week in view of her contributions to the Python Brand, and Bob gets $40.

Alice and Bob are the insiders, and Charlie is the outsider. No?

But, really ...

I mean, come on. I have no idea whether this model is the "right" one! As @blaztriglav suggests, I've got a bunch of stuff in the blender and I'm trying to see if it will blend somehow.

chadwhitacre commented 12 years ago

You seem to say above "everything is a brand" but then explicitly call it out here as something that can be tipped, but there's not specific schema in which brand is called out.

@justinlilly Right, I changed how I was using the term. Brands are mentioned under Corporations in this comment. I didn't give them a separate heading because I was thinking they'd be viewed and managed on the corporations.gittip.com site.

Brands: Not sure about this one. Is Django not also a brand?

So we don't allow you to tip all of Django, but if its a brand then you can do it? This confuses me.

Is the difference here that brands are not self-selecting or something?

Django would be both a Brand and a Community. The idea with communities is that they're big and general. For programming communities you'll generally have a Brand equivalent for each Community, but then you'll also have a number of other Brands that overlap a Community somewhat. Sentry or Pinax or Cartridge or what have you. Maybe it gets tricky trying to differentiate those: isn't there in fact a Pinax community as well? Maybe Brand and Community are one thing after all.

But I was also thinking of making music genres Communities. There you don't have the same thing. "Acoustic" is not a trademark. Hrmph.

It just occurred to me that tipping someone apropos a Thing (Brand, Community, whatever) also associates the patron with that community, not just the receiver. That's how you self-select as a member of that Community.

Maybe they're called Groups and they have a type attribute with possible values: community, brand, project, genre. Maybe selecting "brand" triggers a heavier verification step. Or maybe we deal with that when we start getting real cease and desists from corporations. Maybe groups share a namespace with people, as on Twitter and GitHub. Maybe we just call them all communities.

chadwhitacre commented 12 years ago

Let's imagine it's not curated at all. Anyone can tip anyone apropos anything, and immediately there is a community of two people. Over time as more people tip more people apropos Python, the Python community becomes better and better established on Gittip.

https://www.gittip.com/apropos/python/

Eventually, the PSF, Inc. sends a cease and desist, and we turn off the Python community on Gittip and post the cease and desist letter where the vibrant, thriving community used to be. People are economically impacted. PSF, Inc. probably hears about it. Things get Interesting.

Maybe we don't even call them communities on Gittip, we just park them as more or less dry stats pages under /apropos/. Gittip does not own the Python community. The Python community is people, and maybe they use Gittip.

chadwhitacre commented 12 years ago

Blech, welcome to the blender, @neilk, @justinlilly, @blaztriglav. :-P

As @timothyfcook mentioned, #216 is a big driver here.

Certainly an uncurated "apropos" system would be low-hanging fruit and simpler compared to the Communities / Corporations / Brands flooferflof above. Maybe?

chadwhitacre commented 12 years ago

[...] people who are doing awesome things where their contribution is easy for the world to judge. I do wish we'd walk for a while more before we start running though ;).

I am taking these to bed with me, thank you. :first_quarter_moon:

justinabrahms commented 12 years ago

Here's a thought stream re: #216

Problem: You want to figure out how to contribute to behind-the-scener's. The hard part is that you de facto don't know who these folks are. There exist people that DO know who these people are. What about earmarking funds?

"Hey jacobkm, here's $24/wk ear marked for 'thanks for the django admin. it saved me lots of time.'. " Now jacobkm can give it to who HE thinks the folks who deserve it are. It just can't be him.

Does that solve our problem of rewarding behind the sceners? I feel like similar things could work.

Hey, Steve Holden: Here's $100. Can you go distribute that to who you think deserves it in the Python Community? Thanks! (community)

Hey DHH, Here's $3. I really like basecamp and want this money to go towards folks who make that happen for me. (company)

And normal flow for user:user, company:user, community:user.

Thoughts?

pfrazee commented 12 years ago

Earmarking is interesting. +1

On Sep 24, 2012, at 1:49 AM, Justin Lilly notifications@github.com wrote:

Here's a thought stream re: #216

Problem: You want to figure out how to contribute to behind-the-scener's. The hard part is that you de facto don't know who these folks are. There exist people that DO know who these people are. What about earmarking funds?

"Hey jacobkm, here's $24/wk ear marked for 'thanks for the django admin. it saved me lots of time.'. " Now jacobkm can give it to who HE thinks the folks who deserve it are. It just can't be him.

Does that solve our problem of rewarding behind the sceners? I feel like similar things could work.

Hey, Steve Holden: Here's $100. Can you go distribute that to who you think deserves it in the Python Community? Thanks! (community)

Hey DHH, Here's $3. I really like basecamp and want this money to go towards folks who make that happen for me. (company)

And normal flow for user:user, company:user, community:user.

Thoughts?

— Reply to this email directly or view it on GitHub.

neilk commented 12 years ago

I think I understand your vision now. So if I've understood correctly, the Python Software Foundation would certify that Alice and Bob are core python devs. Or perhaps you just observe it from github activity. In any case, you get a number of developers who are now in the set "PSF".

We observe the internal "market" for gittip within PSF devs. We then build a map of how to distribute any funds donated to the PSF from the external world.

I have to say this is an ingenious idea. I've never heard of anything quite like it. It's sort of a strange combination of market mechanisms and command and control. I don't know what would happen if you tried this. You have the celebrities within the project able to control distribution of funds. But the rank and file people also get to "vote". I can see some ways for this to be hacked (for instance, if the system by which you identify people in the PSF community gets confused and lets bad people in, they can overwhelm a project's internal donation map by colluding.)

One potential issue here is that people are going to work on more than one project. Presently gittip money is given to individuals without saying what it's for. Let's say that Alice and Bob work on the Foo project and the Bar project. Alice tips Bob. You don't know what it was for, so you can't build a money-flow analysis for Foo or Bar.

I have a feeling that this idea will lead to gittip "edges" being tagged with what they are for - maybe that is a good idea.

You flipped me around from skeptical to intrigued. I am still not sure about "corporations" or "brands" as a way to associate people... seems complex for a first pass. Maybe you could, for a first pass, just allow github projects to have a gittip-readable list of contributors. By definition that will be approved by whatever mechanisms the project has for accepting contributions.

chadwhitacre commented 11 years ago

Revisiting this ticket to post:

http://ocdevel.com/blog/gittip-github-project-royalties

That's an implementation in this general space from @lefnire.

lefnire commented 11 years ago

Awesome, I hadn't seen this thread yet - thanks Chad!

chadwhitacre commented 11 years ago

Earmarking is interesting.

@justinlilly, @pfraze: Earmarking sounds similar to what @jacobian and others are already doing: "I'm not here to receive tips, I'll generally regift them" (cf. #114). I think of such a person as a Gladwellian connector-maven, and I think it's an interesting role to play, if someone explicitly wants it. If they don't want it then it's like email, a burden to people who are already busy.

However, I'm not sure it's enough for handling project tips, because of the $24/wk cap on patronage. Ideally, a big project like Django would have, say, $20,000 a week to distribute to hundreds of people. A couple people should get $2,000/wk, a bunch more should get $500/wk, and a whole slew should get $40/wk. It seems like the earmarking model isn't suited for these numbers.

justinabrahms commented 11 years ago

I think there is a lot of growth room between here and projects getting 20k/wk. Optimizing for that seems premature. I think at that point, you'd need some sort of API for determining how to divvy out such an amount.

With the earmarking model, you could easily pass the responsibility onto someone else. Oh, I got $100 to give to someone? Well, Russ, you take $50 and give it to people you think need it and Jannis you take $50 and give it to people you think need it.

Also, if you are not interested in playing the role, you could either not use the money or just give it all to one person. Your prerogative.

chadwhitacre commented 11 years ago

So if I've understood correctly, the Python Software Foundation would certify that Alice and Bob are core python devs. Or perhaps you just observe it from github activity. In any case, you get a number of developers who are now in the set "PSF".

@neilk Close. I was actually thinking there would be no central certification for associations, only (perhaps) for the registry of tippable project names. PSF, Inc. would register "PSF" as a tippable thing, but then Alice and Bob's inclusion in the set "PSF" would be a function of the money they received over the past year for which the giver recognized their association with the PSF.

Implementation Notes

There's a transfers table in the database that records the flow of money within Gittip (the exchanges table tracks the flow between Gittip and the outside world). Here's what transfers looks like:

=> select tipper, tippee, amount from transfers order by random() limit 5;
 tipper | tippee | amount
--------+--------+--------
 a      | b      |   1.00
 c      | d      |  12.00
 c      | e      |   1.00
 f      | g      |   6.00
 b      | h      |   3.00
(5 rows)

Simplistically, I'm talking about adding a new column to transfers that associates each transfer with "something":

=> select tipper, tippee, amount, apropos from transfers order by random() limit 5;
 tipper | tippee | amount | apropos
--------+--------+--------+-------------
 a      | b      |   1.00 | python
 c      | d      |  12.00 | python
 c      | e      |   1.00 | django
 f      | g      |   6.00 | NULL
 b      | h      |   3.00 | perl
(5 rows)

A person's score wrt "something" would look like:

SELECT ( SELECT sum(amount)
           FROM transfers
          WHERE tippee='b'
            AND apropos='something'
            AND timestamp > a_year_ago
        ) /
       ( SELECT sum(amount)
           FROM transfers
          WHERE apropos='something'
            AND timestamp > a_year_ago
        );

So if Alice received $1,000 over the past year apropos "python", and $100,000 was given apropos "python" in total (over the past year), then Alice's "python" score for this week would be 0.01. Say that there are 200 people who received anything apropos "python" in the past year, and that "python" receives $2,000 this week: Alice would receive $15 of it, (((half of the $2,000) * 0.01) = $10) + (((half of the $2,000) / 200) = $5).

(One way this would probably need to be nuanced would be so I can give $1 to @alex and have some of it be apropos "pypy" and some apropos "django"; multiple associations per tip, that is.)

chadwhitacre commented 11 years ago

@justinlilly

I think there is a lot of growth room between here and projects getting 20k/wk.

Well, yeah. :-P

Optimizing for that seems premature.

But mixing in projects is something people are already asking for. My friend @mlloyd322 runs a successful small software company, and is ready to give 1% of his profits to open source projects through Gittip. But it's easier to sell his business partners on the idea if projects are recognized citizens within Gittip. Otherwise he has to set up random tips to random people on pages like this, and that's kind of goofy.

With the earmarking model, you could easily pass the responsibility onto someone else. Oh, I got $100 to give to someone? Well, Russ, you take $50 and give it to people you think need it and Jannis you take $50 and give it to people you think need it.

So we would change the $24/wk limit somehow? What would that look like?

I mean, nothing is stopping the earmarking model right now, right? Or is there?

pfrazee commented 11 years ago

You know, Gittip has a market resource, even if it's ill-defined: support. The spirit of Gittip is giving out of thanks, but the implicit return on investment is continued project development.

That makes me think, Would it be possible to structure the market around the issue-tracker?

For instance, when the project manager assigns issues, they attribute a portion of the project's income with it. That establishes a somewhat pre-arranged contractual basis for involvement. They might negotiate the terms.

If you do it by shares, then the organizer starts with 100% ownership. As actual issues and pull-requests arise, the contributors would negotiate shares for the code, receiving payment on merge. New shares could only be created with a majority approval; without new shares, the existing members must pool in their shares to give.

It creates a very clear paper-trail to the current division of payment, and it creates a negotiation mechanism.

The possible problems that come to mind:

chadwhitacre commented 11 years ago

Earmarking ticketed as #327.

chadwhitacre commented 11 years ago

327 is starting to develop into a concept of "distributors." If you're watching this thread I encourage you to check out the discussion over there on #327.

chadwhitacre commented 11 years ago

Just brainstormed another way to approach this: network gifts (#372).

ncoghlan commented 11 years ago

This seems the most appropriate place in the varied web of issues around this topic... Wikipedia's current funding drive prompted me to wander over here to see if I could add Wikimedia to my list of tippee's as an easy way to give them about 50 bucks a year, but it's not possible yet. https://www.gittip.com/on/github/wikimedia/ doesn't help, because I have no idea who those people are, and doubt any money I gave them would be put towards running Wikimedia.

I trust Wikimedia due to its reasonable stewardship of Wikipedia over the years. That trust doesn't automatically extend to the individual contributors - I'd want distribution of any funds I handed over to be controlled by Wikimedia, rather than a self-selecting set of Wikipedians that are already using gittip.

However, independently of that, I really like the idea of being able to "tag" donations, and have those form tag clouds and "apropos" links.

chadwhitacre commented 11 years ago

@ncoghlan Is the Wikimedia Twitter account any better?