Boosting "Contribution Crops"

One of the showstoppers for implementing Boosting has been the lack of good nodes as targets for boosting. If we tried to implement Boosting right now, sponsors would need to choose individual pull requests, individual forum posts, etc, as targets for boosting. This is just way too fine-grained; most sponsors will not have the time or inclination to read individual commit messages to find out which work was important.

In principle, Initiatives will be really good targets for Boosting. However, Initiatives are still in an early prototyping stage, and I expect it will be months (at least) until we have a durable design for them. I don’t want to enable Boosting until we feel confident in the design, because once we enable people to tie real $ value to existing initiatives, it will be harder to re-organize them.

However, it would be great if we could implement Boosting much sooner; ideally by the end of 2020. This would allow us to go into 2021 with some real confidence that we have ways to onboard capital, and to pay our contributors.

Therefore, I propose we add the concept of “contribution crops”. A contribution crop is a sort of “wrapper” around all of the contributions over a given time period. To start with, suppose we have one “crop” for every week of the project’s history. The Cred of each crop will be roughly proportional to the Cred of all the contributions made during that week.

A sponsor can then boost the Crop itself, thus getting a share of all the contributions made during that Crop. By boosting, they are buying and burning Grain, which gives the project DAI which can be used to pay Contributors.

This encourages a “subscription model” for sponsors, where they commit a fixed DAI amount to boosting every week’s crop. This corresponds to consistent cash flow for the project, which allows us to start budgeting the project’s cash flows with some confidence.

From an implementation standpoint, we would implement this on top of CredRank. In particular, we would create a new “Crop Node” for every week of the project’s history. All “seed” cred for that week would emanate from the “Crop Node”, and then flow to all of that week’s contributions which receive flows from seed. It would then accumulate at “Contributor Epoch” nodes from that week and previous weeks. To be precise, letting i, j be week indexes with i <= j, Cred from a Crop node in week j flows to an Epoch Node in week i. From there, it Flows to the Crop Node in week i.

This has the following consequences:

  • Boosting mints more Cred. If we mint more Cred at a particular Crop node, it will flow out according to that week’s seed structure, basically amplifying all of the Cred earned in that week.
  • If future Contributions depend on Contributions from a past week i, that means more Cred will accumulate at Crop node i, meaning that the Boosters of that Crop Node will benefit.

I believe this is a very tidy approach that lets us leverage “natural structure” of reality (i.e. that Time is semantically significant) to speed up the deployment of Boosting dramatically, while building economically meaningful structure.

In the future, we may add some superstructure Crop nodes, e.g. a “month” node which connects to four weekly crop nodes, a “quarter” node which connects to three month nodes, “year” nodes, and so forth. This would coincide well with a longer-term organizational planning structure. For example, we could have a quarterly planning process with a review of what was accomplished in the last quarter, and a plan on what we aim to do in the next quarter. Sponsors could review these and then decide how much to Boost the last quarter and the upcoming quarter, thus providing realtime feedback on how well the org is planning and executing.

Thanks to @alive and @s_ben for conversations which helped inspire this idea.

3 Likes

Ok this is just an all around good idea. Very elegant growth hack. Time sliced boosting at the whole org level provides convenient investment vehicle for booster, and sounds like implementation costs are reasonably low.

A minor note regarding terminology: inviting “sponsors” may attract a more palatable crowd than marketing to “investors”. That said, boosting entitles you to future grain distributions which stand to grow proportionally to orgs success. Unless I’m missing something (wouldn’t be first time ;), that sounds like an appreciating investment to me.

1 Like

weakly held comment here :stuck_out_tongue:.

Although I liked the idea of making a first boosting iteration as well as a sponsor-friendly approach, I was a bit uncomfortable with giving a new name (“contribution crops”) for this concept.

Since we have already many concepts behind SourceCred, I feel like it’s best to avoid new names whenever it’s possible. The possible excess of naming might getting things longer to understand. It could then possibly deter people from using tools because of the time involved to understand just the names.

Regarding the “Contribution Crops” naming, my proposition would be to stick to the week format and the number of the week within the year, eg. “Week #45”.

I find this more straightforward > ex. We’re looking for sponsorship. We have some boosting available for “Week #45”

Happy to change my mind though

@benoxmo, is there some existing terminology that could be utilized? E.g. Grain harvest #45? Seed planting?

While I like the idea of a more “activist” investor, choosing individual contributions to boost, this does seem to offer a clean, simple interface for sponsors/investors. Simple is good. It also gets us to boosting much faster, which is great. This also, as far as I understand, does not keep us from implementing contribution-specific boosting in the future, when we’re ready for it.

Investing in time slices (e.g. weeks) provides a relatively simple interface. It respects the time of the investor, while also providing opportunity to be more active if they wish by “rebalancing” week to week. The ability to rebalance also opens up a channel for communication between capital and labor. If an investor is unhappy with the direction or speed of development, they can withdraw or reduce boosting. Likewise, if contributors feel they’re not being fairly compensated, they can collectively (organized or organically) contribute less, increasing the Grain per contribution ratio. In an ideal world, these two forces come into balance in a continuous dance, and create sustainability. Having an overly complex system for this favors those with the time and resources to game it. A simple interface also gives me hazy ideas around decentralized governance mechanisms…For instance, reducing the number of parameters that regulate the system to a bare minimum (via voting, or other mechanism) could enable a workable balancing load for all that works more trustlessly on-chain.

2 Likes

Boosting is already a good terminology to explain the concept. If you have the timeframe next to “Boosting”, it describes quite well the time based approach versus an individual contribution approach.

I think the issue lies more in the purpose of using metaphors. We just need to make sure that we don’t add too much complexity to the SourceCred environment. (existing analogies involve : ponds/creek/stream etc)

If naming is something we want to have, for the sake of SourceCred’s environment, atmosphere & adoption, I like the “Seed” environment

Three cheers for “reducing the number of parameters that regulate the system to a bare minimum”. So many benefits to this, from security to onboarding to trustlessness. Yes.

(and maybe even crop, just bc the analogies are involving similar terminology) would be helpful in understanding this, especially for newcomers just learning about Grain. There may be a simplified way to explain this, as you did with me in person the other night. As for the concept itself, it seems good so far, but I don’t have a deep understanding of it yet. Would love to chat more about it.

I feel starting boosting with github would be a lot simpler. Feature requests, Issues are well understood and would provide a simple starting point for using boosting.

Forks would also be an interesting. Can you take cred with you if you fork a project? Sounds reasonable. How could we make sure not to split communities that would otherwise stick together?

Crops seem to be less intuitive. If results of the crop I boosted depends on multiple past crops, how does cred flow? What exactly would need to happen for me to get return on investment? More uncertainty would lead to risk and less investment.

I am sure there are good reasons for this proposal :smiley: but I fail to see them. What did I miss?

At the time that I wrote this proposal, I intended to raise investment capital (think a16z, Polychain, etc). The model I had in mind was that investors would buy Grain, use it to boost within the project, and then earn Cred from the things they’d boosted. However, these investors weren’t going to be boosting at the level of individual PRs or such, so I came up with the concept of contribution crops to add nodes that would be ideal for boosting by passive investors. Since they are connected to all of the contributions in a given time period, you can boost them without needing to have any particular opinions about what’s important in the project.

However, we no longer have any plans to raise passive investment capital of the sort, and are not sure what kind of incentives we’ll give to boosters. So this proposal can be retired.

How about being able to boost tags that include multiple nodes from the contribution graph? Tags could range from “Cultivation” to “Seth” to “Documentation” and would allow for people to boost a wider range of ideas, as well as specific projects. This could be more accessible to newcomers who don’t fully understand what’s behind a project, but want to support something that feels general and not put in too much research time. It would be like Index Funds for SourceCred.

1 Like