-
Notifications
You must be signed in to change notification settings - Fork 308
implement bundles #1493
Comments
Bringing over from #316: +1 from @Waldir -1 from @lyndsysimon |
This is a great idea. I also like it because it would let me add people without worrying about spending more money. This would dilute the pool, but I think it would be easier to get people to tip more if they could add people for free, feel good about it, and then want to increase the total give. |
@mwhooker that's definitely my experience. Flattr sends me monthly projected spending reports, and often use that to adjust my monthly budget if I notice the people I flattr'd are going to getting less than I would prefer to give them. |
+1 from me too. Someone creates a fund, adds people and other Gittip users can pay into the fund. The original creator of the fund would be the fund's manager. In fact, teams are a kind of fund already, with the only difference being that members set their own take. Gittip could also auto-generate funds based on communities. Communities could automatically be turned into funds where every member of the community gets an automatic and equal share of the donations to that community. The only community members that would not receive a share would be the people / teams who set the "I'm a patron and politely decline to receive gifts" setting. I think it'd probably not be too hard to add the automatic funds while parts of the UI design for team takes can be re-used for the "fund manager" approach. (I think we should implement both flavors, not just one by the way) |
I've just completed work on a distributed version of the steady state algorithm based on a directed graph view of funds that can be nested and can have cycles. Each entry in a fund gets a numeric value expressing its weight relative to the other entries. The algorithm currently runs "per user"; it first downloads the entire "giving tree" for a particular user. After bringing down the contents of all the relevant funds/persons in the graph, it transforms the fund specific weight values into an NxN matrix of percentages between 0 and 1. It sends that matrix to a network engine listening via ZeroMQ to compute the results of the matrix. The ZeroMQ services iterate over the matrix until the percentages have been fully distributed (aka the converged stead state) and sends the resulting 1xN matrix of weights back. It retrieves the amount of Money that User is giving this pay period (needs work) and allocates it according to those percentages (currently it uses the python-money "Money" type and its corresponding "allocate" function. The last piece is to then build and submit the corresponding transactions for processing. I've been using neo4j to store and retrieve the graph data; I'm attaching a screenshot of the "giving tree" I'm working with. The "user" in this case is node 149, and all the money ends up with all the edge nodes in the graph. |
@MikeFair Does this post cover your latest private email to me? |
@MikeFair I appreciate your work on this. We're going to need @zwn's input on this from the db side after he's done with #1549. We're also going to need to think through the user experience here. We also need to consider how #1486 plays into this. In my thinking that ticket fits with funds under the heading "evolving our money distribution algorithm." That's a hefty project that I see us tackling in earnest some time in late 2014. |
To be honest I'm freaked out at introducing new technologies (neo4j, zeromq(!?)). Why is the status quo (Postgres) not good enough of a tool for this? My quick take is that we want to solve #1486 first, because that applies the steady state algorithm to the current giving model. Once we land that then we can start extending the model with funds. |
I can understand the hesitation on using unfamiliar tech however in this ZeroMQ, Neo4j, and funds in general each solve different aspects of the Using neo4j I can see a couple dozen lines of CYPHER (at most) that can The front end web application would be executing simple CRUD operations on The Python payday code then becomes a loop driver to iterate the query As for doing #1486 Encouraging people to prepay their accounts is honestly the real solution Other tickets I can see that either go away or get significantly easier #1486 (funds distribute a prorated amount of whatever balance a user has - #1383, minimizing escrow (that just gets closed; it's simply not a good #113 allow people to prefund their accounts (that's a great idea; and #1660, A fund is an allocation algorithm; an allocation algorithm can be a #1594, again anything mission oriented can be a fund which can be allocated #1609, that's the basic/main allocation algorithm/strategy of what this is #1592, this is an allocation algorithm that a fund/team can subscribe to; #1589, A "Team" is created as a Fund, the fund has an allocation algorithm #1290, a "Team" is a Fund that contains people; a list of weights doesn't #1351, someone with permission to do so simply removes all other people #878, that's a description of a fund #696, the tags are funds and the tag cloud scores get stored in a fund as #652, that's a fund allocation algorithm #649, the graph of all funds and average allocated weekly pay-in amounts #279, again the interest is credited to a "fund" which handles the #209, A campaign is tied to a fund and is where the progress gets tracked #1033, Someone transfers the amount they would like to make available for #10, related to #649; #11; #113; and #777. The ability to create On Mon, Dec 2, 2013 at 11:52 AM, Chad Whitacre [email protected]:
|
Thank you @MikeFair! This is a great write up. I'd love to understand the neo4j approach you are talking about, but I'll admit that I don't have the bandwidth to think about it right now. |
Same here. While SQL might not seem like a good way to implement graph traversal, Python is flexible enough to do so. Our whole db is around 150MB and most of it is user_info saved from elsewhere services. Our graph is currently so tiny (about 2.9k active users for all time) that we do not need new tech to handle it. It all fits into a memory and it will for a quite some time. New tech takes developer bandwidth which is something we are currently really short of. |
There's another opportunity/aspect/thought model/conceptual vision to Instead of thinking of them like something that money gets "sent to" like You don't send your money out to the fund; you suck in the fund's opinions Funds are people's opportunity to publish their ideas about what they would On Wed, Apr 2, 2014 at 3:33 PM, Chad Whitacre [email protected]:
|
Follow-up from @dstufft:
|
+1 on HN:
|
+1 on HN:
|
+1 on HN:
With follow-up:
|
I have also found that often I want to give to the people working on products that I like to use, but it's not clear the best way to do that (their twitter account? their github organisation? their main devs?). Perhaps the funds system could help with this too? As an aside, can funds potentially include other funds? |
Tagging as "Ready to Start" since this didn't make it into the payday rewrite (which was complicated enough without it). Note that implementing this in neo4j probably isn't an option, because I'm not familiar with it and I don't think any other member of the Gratipay team is. It can and should be done in pgSQL. Also note that #2664 should probably be implemented first. |
+1 https://gratipay.freshdesk.com/helpdesk/tickets/1705
...
|
Recently "bundles" have come up as a variation of this, but they wouldn't be public. |
@dmk246 suggests the shopping cart model. Add projects to yer cart and then check out. |
Closing in light of our decision to shut down Gratipay. Thank you all for a great run, and I'm sorry it didn't work out! 😞 💃 |
A "bundle" would be a set of projects, where the user can give a fixed amount to the set and it will be split up among them according to some ratio.
Previous
This idea started as "support the flattr 'divide the spoils' model" (#316), which got subsumed by "implement funds" (#449). That, however, took a different turn, which ended up as the Teams feature. There's still value in the funds idea, however, so here we're bringing it back up.
Funds would be lists of percentages with a total dollar figure attached. So you might have a "Linux" fund with 50 people on it and you could set a total dollar figure that would be split according to the percentages. Funds would be public (by default) in that anyone could give to your fund, but they would be anonymous in the particulars—even for those receiving through a fund.
Say Linus has a "Linux" fund. I trust his judgment on who should get money given to "Linux" so I give $10/wk to his fund. Each week my $10 goes into that fund and gets split according to the percentages that Linus has set.
The text was updated successfully, but these errors were encountered: