Parameterizing our Karma Integration

Had a great call today with @mmurthy going into the details of our Karma integration. Work is ready to begin, but similar to our sourcecred integration way back in 2021, we’ll need to figure out some weights and parameters to kick this thing off.

Data Source Weights

We can choose to include a whopping :six: :exploding_head: data sources that are tracked and used give a participation score to Giveth community members & contributors. These 6 data sources are:

  • Discord
  • Github
  • Snapshot
  • Forum
  • nrGIV
  • Gardens

First thing is to decide the relative weight of each data source compared to the others, give in numbers. We can also choose to not include an integration from a specific data source.

Parameters by Data Source

Let’s break down each source and what we need to decide.

Discord

This integration has a lot of options for customizing how we track and score contributions. Some things we could consider:

  • Messages sent
  • Messages sent in specific channel
  • Which Discord channels to track
  • Emoji reactions
  • Minimum character length of messages to be included
  • Replies to messages

GitHub

This integration tracks lines of code added and removed in commits made to given repositories. We can value adding lines of code worth more than removing lines of code if we so choose. To decide:

  • Which GitHub repositories to include
  • What should the relative weight be for adding a line of code vs. removing a line of code

Forum

We can track a user’s forum activity with many different data points, this includes:

  • Topics created, specified by category
  • Comments made
  • Likes received & average likes received on topics & comments
  • Length of comments & average length of comments

We’ll need to decide:

  • Weight of creating a topic
  • Weight of categories (posting a topic in a given category)
  • Weight of posting a comment on a topic
  • Weight of average likes received
  • Weight of average comment length
  • Exclude comments under what character length from calculations

Snapshot

Nothing specific to define here. We track whether or not a user voted in each snapshot that they were eligible to vote in. Eligibility is defined by holding at least 1 GIV token.

Gardens

Nothing specific to define here. We track whether or not a user voted in each vote, in each app (Conviction Voting & Tao Voting) that they were eligible to vote in. Eligibility is defined by holding at least 1 gGIV token.

Aragon DAO

Nothing specific to define here. We track whether or not a user voted in each vote, in each app (5 day voting & GIVbacks Distribution) that they were eligible to vote in. Eligibility is defined by holding at least 1 nrGIV token.

Notes on scoring logic :bar_chart:

For the Forum and Discord integrations instead of each user getting “points” per say, the calculation is made to find the most active user. The most active user by each metric then represents a score of 100% and every subsequent user underneath is given a relative percentile based on how they compare to the most active user.

This is separated by platform – to clarify the scores of the Forum and Discord are calculated separately, using the method above.

We also have the option to break up leader boards into multiple sections - i.e. one for governance and one for contributors, this means we could break up the integrations into different sections. For example, we could include Gardens, nrGIV and Snapshot into a governance leader board and Forum, Discord, Github into a contributors leader board.

This could be an interesting option but my personal recommendation is we keep it simple for now and see how the standard leader board works then complexify as we see fit a bit later on.

Reward System Integration :moneybag:

It looks pretty feasible and shouldn’t cause us too much headache. Already Karma outputs a CSV file that let’s us find the score for each contributor. This is basically all we would need to be able to plug it into the existing reward system framework (RAD tool) and combine it fluidly with Praise rewards.

We might have to do some tweaking to the format but @mateodaza is already familiar with how we did it with sourcecred so it won’t be much more complicated than that. However I recommend we let it run with just the leader board so we can revise our params after seeing how they work for a bit.

An Example Submission - Mitch throws his hat in the ring

This is a lot of settings to process! I’ll kick this off with my take on how we should parameterize our integration and anyone please feel free to iterate or propose their own set of parameters! :person_raising_hand:


Integration Weights:

  • Discord: 0 (no integration)
  • Github: 3.8
  • Snapshot: 2
  • Forum: 3
  • nrGIV: 2
  • Gardens: 2

Parameters by Data Source

Discord

No integration

Github

Forum

  • Category weights (creating a topic in a category):
    • Proposals: 1.5
    • Everything else: 1
  • Creating a topic vs. commenting:
    • Creating a topic: 3
    • Commenting on a topic: 1
  • Weight of average of likes received on comments & topics: 1.2
  • Weight of average length of comments: 1.5
  • Exclude comments under 60 characters (about half the length of a tweet)

Snapshot

Eligibility is defined by holding at least 1 GIV token.

Gardens

Eligibility is defined by holding at least 1 gGIV token.

Aragon DAO

Eligibility is defined by holding at least 1 nrGIV token.

1 Like

First thought. (and only cuz i just read the posts from lensdao just now…) if we were on their platform for any of this, would this Karma tool be able to read it.? (ie: if not, then its a blocker for one or the other is what im saying) thats all.

Im not sure its wise to reward for voting.  (or at least anything substantial)   one hand its cool ofc.  but on the other, might get alot of ppl JUST for the 'prize' not caring what they vote, and could vote ...badly. or uninformed if you will.

my 2 sats.

I don’t know anything about this platform but if they have APIs, we can definitely integrate.

2 Likes

IMO, put discord at the bottom. we already have other tools installed (unused) that do this. so look at the other options first. if theres a slot, its ok ofc. :slight_smile:

Bumping this topic to say that I will continue to leave this open for advice, iterations and submissions until Feb. 6 (next Monday). If there’s no other contenders then we’ll move forward with a first version using the parameters I defined above!

2 Likes

I agree with Mitch… we can add discord later if we want…

Sorry this is late mitch… its fine if you don’t consider it if you have already made progress:

Discord

No integration

Github

  • Which Github repositories to include: all the ones that mitch added

  • What should the relative weight be for adding a line of code vs. removing a line of code:

    • Adding lines: 2
    • Removing lines: 3

I think removing lines is better? but i am not informed enough to say… don’t trust my uninformed vote here.

If we can give points to making issues… would also include:
GitHub - Giveth/giveth-planning & Giveth/GIVeconomy · GitHub

and make, making an issue worth: 4

We will need to make sure to watch for people gaming this.

Forum

  • Category weights (creating a topic in a category):
    • Proposals: 1.5
    • Everything else: 1
  • Creating a topic vs. commenting:
    • Creating a topic: 3
    • Commenting on a topic: 1
  • Weight of average of likes received on comments & topics: 1.2
  • Weight of average length of comments: 1.5
  • Exclude comments under 60 characters (about half the length of a tweet)

Looks fine

Snapshot

Eligibility is defined by holding at least 1 GIV or gGIV token.

Gardens

Eligibility is defined by holding at least 1 gGIV token.

Aragon DAO

Eligibility is defined by holding at least 1 nrGIV token.

2 Likes