Proposal #9: Adopting SourceCred

Official Ranked Choice Vote: https://snapshot.org/#/metafactory.eth/proposal/QmTu3kkkPWqif1W6iPeg1xa9jLnuMCFxpMHypEi97q4awA

In the recent Proposal #8: 2021 Ops Distribution, we experimented with the use of SourceCred as a tool for us to measure and reward value creation in MetaFactory. However, we didn’t officially agree on if and how SourceCred should be used in MetaFactory.

This proposal is basically breaking out that decision on adopting SourceCred and agreeing on the “framework / process” that we use to distribute tokens instead of trying to come to consensus on the resulting token numbers. This allows it to be much more scalable with less governance friction / overhead.

WTF is SourceCred?

If you want to learn the details on how SC works, check out the docs here: https://sourcecred.io/docs

ELI5: SC takes an input of “things that happened” + “what things to incentivize” and spits out a score of the people who were responsible for making things happen that we want to incentivize.

More technical explanation

SC scrapes data from Discord / Forums to generate a graph of interactions (messages, reactions, people, roles, channels, posts, etc). Communities can then configure “weights” for certain nodes in the graph based on how valuable certain actions are (e.g. getting an emoji reaction in the “did-a-thing” channel should have a higher weight than getting an emoji reaction in “random”). SC also takes an input of manually added “initiatives” which are the major contributions for the project that act as the high signal source of value creation that flows throughout the rest of the graph based on the interactions between people.

Don’t miss the forest for the leaves

Imagine that everyones contributions in MF are a forest full of trees, branches and leaves. The trees represent the major different things that MetaFactory has done, and the branches and leaves represent all the little actions that people took to achieve that outcome. People’s contributions = the light that gives energy to the tree so it can grow.

Distributing value to this interconnected mesh of outcomes and contributions is like giving water to the forest: the biggest trees need the most water.

A naive approach would be to try to compare the branches and leaves to see which ones are getting the most light and water them individually, hoping that it results in the best trees getting the most water. The problem with this approach is that its extremely inefficient and prone to user bias since you’re trying to measure the cause and not the effect. You’ll end up misallocating a lot of the water since there’s no way for you to see the whole forest at once.

A much better approach would be to measure the trunk size and distribute water proportional to it, allowing the tree to flow the water to its individual branches and leaves. Measuring the trunk size is something thats much more repeatable, easier to reason about, and easier to reach consensus on if multiple people were to decide how to distribute the water.

This is the same thing as trying to allocate tokens in a DAO. The naive approach is to try to allocate resources to people based on our rough mental math of summing together all the things they did and how valuable they were relative to others contributions. Instead of measuring people, we should measure contributions and back-propagate resources to the people that made those contributions happen.

SourceCred is the tool that lets us measure the tree trunks and flow water through them to the branches and leaves.

Measuring the trees

So how exactly do we define and measure these trees? This is done in SC by defining the “initiatives” that the DAO executed on and assigning a relative weight to each one (1, 2, 3, 5, 8, 13, 21, etc). E.g:

Initiative Weight
Expanding production partner network for better quality products 21
Handling customer support for shop 8
Taking meeting notes 5
Attending weekly community call 2
Managing Instagram + making social media graphics 13
Software Dev for ROBOT Distributions / NFTs / Auctions 21

The exact number is not as important as the relative weightings, but we still need a way to collectively determine what these “initiatives” are and decide on the weights. I built this tool specifically for this purpose.

It allows contributors to add the major things they or others have accomplished and for the rest of the contributors to rate their awesomeness / impact. The entire list of contributions can then have their weights set based on their relative ratings.

It’s easier and more direct / fair to assess the impact of each contribution instead each contributor. It’s also less impacted by social dynamics and human bias where the loudest / most visible / most charismatic contributors get the highest allocations instead of the most impactful / valuable contributors.

Lastly, it incentivizes people to think long term and how to make the most impact. Otherwise, people would just optimize for doing the work that makes them look as busy as possible rather than seeking out the best use of their time and energy.

“Show me the incentives and I will show you the outcome”

The MF Covenant

The following is a list of guidelines that I’m proposing we adopt when thinking about how we coordinate and govern ourselves now and in the future.

  1. We should measure the value of contributions, not contributors.
  2. Contributors should be rewarded proportional to the impact they have, not how many hours they work.
  3. We should minimize how much time and effort we spend on governance and decision making since they just a means to an end, our mission is to create / build dope stuff and realize our collective vision of a web3 cultural economy / metaverse, not play governance games.
  4. We shouldn’t incentivize behaviour that is self-optimizing at the expense of our larger goal / community.
  5. Our rewards should be outcome based. Distribute tokens for actual work done, not the promise of future work.
  6. We move forward at rough consensus (all objections within reason are fully addressed, not necessarily solved. Coherence around long term vision is reestablished, so that we can improve, iteratively, without stalling). This is the framework: https://andytudhope.africa/essays/running-code
  7. We establish a building / collective dreaming multiplier: i.e. we spend 10-20x time on building & collective dreaming to 1x governance.

If we don’t rely on an agreed-upon process / framework, we will be very inaccurate / inefficient / biased / game-able when it comes to token allocation and delivering it in the most sound / incentive aligned way.

Process / Structure / Rules

  1. Active contributors are allowed to add new contributions in the contribution dashboard
  2. Active contributors, Headbots and Alphabots are allowed to rate contributions (could apply weighting multiplier based on role)
  3. Any contributions that have been “flagged” will not make it into SourceCred until any concerns raised have been addressed.
  4. The weight of each contribution will be set in proportion to the ratings given. Higher rating = higher weight.

Weight of a single vote:

Rating Weight
legendary 18
epic 9
rare 3
common 1

Weight of a contribution = (MEAN(voteWeights) + SUM(voteWeights) / 10) * 2

  1. Any exploitative behaviour will not be accepted (e.g. collusion / quid-pro-quo, rating only your own contributions high, sybil attacks). This can only be enforced at a cultural / social level. We should all be aligned that the process works best when everyone is playing honestly.
  2. Every 6-8 weeks the contributions will be added to SourceCred and we will distribute ROBOT proportional to the $ sales milestones.
  3. Any issues with the distribution should be dealt with at the contribution / rating level. The resulting numbers from SourceCred should not get changed through any other means besides changing the input to SourceCred.

UPDATE

Now that enough people have voted and added their contributions into the contribution tracker, I’ve setup the weight calculation to be derived from the votes. The calculation works as follows:

Weight of a single vote:

Rating Weight
legendary 18
epic 9
rare 3
common 1

Weight of a contribution = (MEAN(voteWeights) + SUM(voteWeights) / 10) * 2

The sum / 10 is added so that if contribution A has 3 legendary votes and contribution B has 4 legendary votes, contribution B will have a slightly higher weight because more people signalled it was valuable. The 2x multiplier is there to normalize the weight to the appropriate range.

You can see the resulting weights of the contributions in the dashboard: https://metafactory.retool.com/embedded/public/3cdd1037-d8f5-4b16-b42f-064f9f78be4e

Updating the weights in SourceCred to use these new voted weights results in the following changes to the ROBOT distribution compared to the weights originally set by me.

8 Likes

MF Covenant deserves its own post! Will be great to have something to point to, when discussions, objections, and questions come up around governance.

It will be a working document, open to revision and amendment as we develop the tools alongside the processes.

For now, I would also add:

  • we move forward at rough consensus (all objections within reason are fully addressed, not necessarily solved. Coherence around long term vision is reestablished, so that we can improve, iteratively, without stalling). [article originally linked via @METADREAMER in Discord]

  • We establish a building / collective dreaming multiplier: i.e. we spend 10x (42x? :star_struck:) time on building & collective dreaming to 1x governance. The multiplier is up for discussion.


On the note of collective dreaming… There was an exercise during the curation game hypersprint where each attendee had two minutes to write where they saw Metafactory in 2 years’ time. Then we all read each others’ statements and voted on what we liked best.

It was a powerful, limitation-breaking creative exercise that would make for a great regular check-in within working groups, and the larger community. It could also help identify areas of impact for people who seem a bit lost in the immediate grind.


Lastly, I would suggest transforming–when we’ve arrived at working document–the auxiliary should’s into straight up verbs, as well as switching out the negative statements into predominantly positive ones. This is not a touchy feely suggestion-it is pure semantic law, that our subconscious engine rides hard on clean fuel.

3 Likes

This is all fantastic. The MF Covenant bullets are on point. Nice breakdown across the board.

  1. Current Retool: Did we pinpoint the cutoff date on this for what it’s including regarding the Ops delay to flesh things out. I.e. through June 1st, 2021
  2. Do we still envision this working hand-in-hand with Cooridinape?
  3. Ops Distro Comms: Should we have a dedicated place for majority of conversations regarding adjustments or contribution submission discussions? (Discord Channel)

Let’s goooooooooooooo

I’m in favor of this. I’d love to have some select “traditions” that we choose to replicate every so often. Hoping the MetaFactory Design Jam and things like this can fit into that, alongside some ambitions on the meta-content ideas we have brewing with the VR store/studio concepts.

1 Like
  1. Yea, basically everything up until June 1.
  2. This proposal is specifically for the SourceCred side of things. We can still use Coordinape to distribute a part of the allocation, but that will be in a separate proposal since people didnt like that the last proposal lumped everything into one.
  3. Yea a dedicated discord channel for this might be a good idea.

Just made an update to the original post with the new weights from voting. This should be enough info now to put it to vote.