Git Product home page Git Product logo

founding-members's Introduction

Joystream

This is the main code repository for all Joystream software. In this mono-repo you will find all the software required to run a Joystream network: The Joystream full node, runtime and all reusable substrate runtime modules that make up the Joystream runtime. In addition to all front-end apps and infrastructure servers necessary for operating the network.

Overview

The Joystream network builds on the substrate blockchain framework, and adds additional functionality to support the various roles that can be entered into on the platform.

Development

For best results use GNU/Linux with minimum glibc version 2.28 for nodejs v18 to work. So Ubuntu 20.04 or newer.

You can check your version of glibc with ldd --version

The following tools are required for building, testing and contributing to this repo:

  • Rust toolchain - required
  • nodejs >= v14.18.x - required (However volta will try to use v18.6)
  • yarn classic package manager v1.22.x- required
  • docker and docker-compose v2.20.x or higher - required
  • ansible - optional

If you use VSCode as your code editor we recommend using the workspace settings for recommend eslint plugin to function properly.

After cloning the repo run the following to get started:

Install development tools

./setup.sh

If you prefer your own node version manager

Install development tools without Volta version manager.

./setup.sh --no-volta

For older operating systems which don't support node 18

Modify the root package.json and change volta section to use node version 16.20.1 instead of 18.6.0

"volta": {
    "node": "16.20.1",
    "yarn": "1.22.19"
}

Run local development network

# Build local npm packages
yarn build

# Build joystream/node docker testing image
RUNTIME_PROFILE=TESTING yarn build:node:docker

# Start a local development network
yarn start

Software

Substrate blockchain

Server Applications - infrastructure

Front-end Applications

  • Pioneer v2 - Main UI for accessing Joystream community and governance features
  • Atlas - Media Player

Tools and CLI

Testing infrastructure

Running a local full node

git checkout master
WASM_BUILD_TOOLCHAIN=nightly-2022-11-15 cargo build --release
./target/release/joystream-node -- --pruning archive --chain joy-mainnet.json

Learn more about joystream-node.

A step by step guide to setup a full node and validator on the Joystream main network, can be found here.

Pre-built joystream-node binaries

Look under the 'Assets' section:

Mainnet chainspec file

Integration tests

# Make sure yarn packages are built
yarn build

# Build the test joystream-node
RUNTIME_PROFILE=TESTING yarn build:node:docker

# Run tests
yarn test

Contributing

We have lots of good first issues open to help you get started on contributing code. If you are not a developer you can still make valuable contributions by testing our software and providing feedback and opening new issues.

A description of our branching model will help you to understand where work on different software components happens, and consequently where to direct your pull requests.

We rely on eslint for code quality of our JavaScript and TypeScript code and prettier for consistent formatting. For Rust we rely on rustfmt and clippy.

The husky npm package is used to manage the project git-hooks. This is automatically installed and setup when you run yarn install.

When you git commit and git push some scripts will run automatically to ensure committed code passes lint, tests, and code-style checks.

During a rebase/merge you may want to skip all hooks, you can use HUSKY_SKIP_HOOKS environment variable.

HUSKY_SKIP_HOOKS=1 git rebase ...

RLS Extension in VScode or Atom Editors

If you use RLS extension in your IDE, start your editor with the BUILD_DUMMY_WASM_BINARY=1 environment set to workaround a build issue that occurs in the IDE only.

BUILD_DUMMY_WASM_BINARY=1 code ./joystream

Authors

See the list of contributors who participated in this project.

License

All software under this project is licensed as GPLv3 unless otherwise indicated.

Acknowledgments

Thanks to the whole Parity Tech team for making substrate and helping in chat with tips, suggestions, tutorials and answering all our questions during development.

founding-members's People

Contributors

andybut avatar bedeho avatar blrhc avatar bwhm avatar dzhidex avatar elgreend avatar freakstatic avatar lopegor avatar w0rldwind avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

founding-members's Issues

Idea: outstanding_contributions.md

Problem: for newer users and even old users, there is some mystery behind what actions can get rewarded with FM points.

  • If we put out a list of easy actions in advance it may promote spam or low quality contributions.
  • Showing complete FM reports would be tedious as not all activity in a report may be high quality and FM points (in my opinion) should be more about individual, high quality actions rather than all of the actions someone does in a 2 week period.

Proposed solution:
Create a file within this repo called outstanding_contributions.md. Within the file would be a table (an example is shown below).

User Link Description FM points awarded Bonus
@alice https://testnet.joystream.org/#/proposals/1032 Took a KPI and created a proposal to improve the KPI that was well worded and explained. 750 +1000
@bob https://testnet.joystream.org/#/forum/threads/1 Created a forum thread about governance that resulted in a large number of responses 600 +1000

Rules/Notes:

  • Contributions are added by JSG and the only contributions allowed are on-chain actions (proposals, forum posts/threads and potentially also videos). Most importantly links from Discord or Telegram shouldn't or should only very rarely be added to this list.
  • Each contribution that JSG gives shows the score rewarded for that specific action, along with a brief description of why it was included in the list.
  • By a user having their contribution/action included in this list, they are additionally rewarded with a set amount of bonus FM points--in the example I have used 1000 points--this could be adjusted. I have also just used arbitrary amounts of FM points in the example, so this has no bearing on what is actually rewarded.
  • This avoids having to prebuild a list of tasks that users can do in advance (task list), and lets this list focus on things people have already done. I do not think it is easy to communicate to users about the kind of FM activity we want in this regard.
    • This allows us to really focus on what our highest quality FM members do that is particularly special, and rather than linking to their likely long/complex FM reports, this list would be a much simpler to read list of activity that "makes the cut"
    • This could also be used in conjunction with a task list, but this file/table would be its own distinct thing.
  • This hopefully creates competition for users to see what is on this list already and go beyond what is there.
  • At some point, it may be possible to allow inducted FMs to propose or vote on what on-chain actions are added to this list.

Additional consideration:

  • Users will be rewarded in two ways already by this list--they get points for however their contribution is graded, and they get a bonus amount of points for being on the list. It may be worthwhile investigating whether paying a bonus amount of tokens also would make this even a stronger proposition.
  • When a user's task/contribution is added to the list, it should be promoted in the Discord and ocassionally on Twitter, highlighting the basic merits of the contribution AND also the rewards associated with it. This would strongly help in raising awareness of the list and create a sense of competition in people wanting to get added to the list.

Distributor WG Grading

This issue covers all grading for the Storage group, except for the PLAN_SCORE and SUMMARY_SCORE.

For each new term:

  • fill in the metrics that should be graded here
  • if applicable, tools for getting data
  • when/where to get remaining data
  • howto

Update the readme.md for this repo

It mentions all of the "old" FM program stuff and should either be removed entirely and just link to Gitbook, or contain information about the new program.

WGs+Council Summaries Grading

Within 12h of the deadline for the summaries, submit, collect, make notes and grade the summaries for each WG and the Council.

The results goes in to the Notion board in #102.

Generate Weekly Grading Spreadsheet

Once the metrics and parameters are published, a new sheet in our Google docs is created.

This document is open for all to view, but only those in this team can edit.

As soon as some part of the grading for the current council period is completed, it gets added here for transparency, allowing the council and the WGs to track their progress.

Storage WG Grading

This issue covers all grading for the Storage group, except for the PLAN_SCORE and SUMMARY_SCORE.

For each new term:

  • fill in the metrics that should be graded here
  • if applicable, tools for getting data
  • when/where to get remaining data
  • howto

Add video to handbook

In a community call a while back I presented, in detail, exactly how the incentive 3 scheme works in a way that made it very specific how you know what you will earn in $JOY for all roles. It covered scores and budgets and all that. I think that explanation may serve as a good mid-way point between the dense text on the handbook and the more high level idea that people have in their mind currently.
Could you extract that part of the video, and then we embed that video in the handbook under the testnet rewards section, as a light weight intro.

This repo is hugely out of date

Extra allocation for certain users

Some early participants have an interesting non-zero value called extraAllocation.

Full list of users with extraAllocation:

  1. tomato 1
  2. freakstatic 0.3
  3. l1dev 0.2
  4. nexusfallout 0.2
  5. enjoythefood 0.2

Couple of questions to clarify with relation to this data point.

  1. What's the meaning of this parameter? Is this the %-tage of JOY total issuance that is allocated to these users on top of other earned JOY?
  2. What were the eligibility criteria back then? Not all of these users are still active on platform.
  3. Is this 5-person club accepting new members?

Using a signature in a report.

Hello.
Sorry for the stupid question, but what is the purpose of https://github.com/Joystream/founding-members/blob/main/SUBMISSION-GUIDELINES.md#website-form p. 4 "sign with your membership key ..."? After all, when submitting a report, we already use json, enter the name of the member, i.e. you already receive information that is encrypted in the signature. What, in this case, does the signature provide? Now, if instead of json, password, member's name, when submitting through the form, you use a signature, then it's understandable.
And if we accept that the signature is required, then why use it for every action?
I worry when I can't understand something :).

Educate Council + WGs on how to better use Notion

  • Create a table with the overall status of how each WG uses Notion and which might benefit from some assistance
  • How to use databases instead of tables
  • How to add metadata fields
  • How to link databases

Vote on the Council

Each term, this equates to three tasks, which has to be done at least 24h apart.

  1. Deciding who to vote for
  2. Vote
  3. Reveal

I'll add that retrieving the voting stake is needed as well.

Council Handover

In the revealing period:

  1. Provide some alternatives for when to have the handover in the #council channel on discord. Should be conducted the first "day" of the new council.
  2. A couple of hours before the call (after the election is completed), invite newly elected councilors to the closed #council-handover channel, and add an agenda.
  3. Host the call!
  4. Follow up chat after.

Publish grading tools

Publish tools and guides required to get a complete overview of:

  • All incentives relevant spending
  • All on-chain script based grading metrics

Incentives meeting actions

After the meeting:

  •  Record and publish the meeting
  •  Publish new Council Period Parameters
  • Publish any metric changes
  • Alert the council of the changes

Write up weekly incentives meeting notes

Needs to be done the same day as the meeting (i.e. Monday) with a focus on the TODOs for each member on the Incentives team, and the deadlines for these tasks.

WGs+Council Plan Grading

Within 24h of the deadline to submit, collect, make notes and grade the plans for each WG and the Council.

The results goes in to the Notion board in #102.

HR Group Follow up

Brief check-up half way through Council period to determine whether working group is heading for a good score. If there are issues, troubleshoot with lead.

Builders WG Grading

This issue covers all grading for the Builders group, except for the PLAN_SCORE and SUMMARY_SCORE.

For each new term:

  • fill in the metrics that should be graded here
  • if applicable, tools for getting data
  • when/where to get remaining data
  • howto

Generate Weekly Grading Document

Once the metrics and parameters are published, a new grading document is added to the notion board.

Unlike the spreadsheet, that only contains the final score for each metric, this also contains the input data, and the rationale.

Whenever a data point used for grading is collected, it gets added here.

Once all data points are in, we calculate the numbers and publish the final grading to this repo.

Founding Member Grant Program

Background

We have had a number of community members concerned that Incentives 3.0 offers nothing for those participants interested in making "off-chain" contributions which are not part of the scope of a working group's tasks. I share these frustrations, and have therefore devised a scheme which rewards those making off-chain or ex-working group contributions, or perhaps also those in working groups who are doing a better job than can be reflected in their salary due to budgetary constraints.

The rewards are to be determined by the Founding Members, who represent our most trusted core of community members. For a variety of reasons, this team have some unique insights into which people are doing the most valuable work on the platform (and off it), so it seems fair to give them this responsibility for allocating these extra-curricular rewards.

How it will work

Budget

Every week, a JOY budget for the scheme will be allocated by Jsgenesis.
The budget will start at 5000 usd in JOY for the week beginning Monday 9th May.

Nomination

Every week (on Monday and Tuesday), each Founding Member will be able to optionally nominate a maximum of three community members using a typeform survey here:

Screenshot 2022-05-08 at 16 28 56

https://4m7n05q7xlr.typeform.com/to/sF5SxLgZ

Nominees will have to be proposed by at least three separate Founding Members in order to proceed to the next stage.
Jsgenesis staff can also propose candidate, and in this case, three nominations will not be required.

Note: any community member explicitly asking for rewards under this program will be disqualified

A new survey will then be generated with a list of all of the participants who have been nominated by more than three Founding Members/Jsgenesis. All Founding Members will get a budget of 100% which they will allocate, using a second form, to each of the candidates listed. At least five FMs will need to vote in this second round for the reward pool to be unlocked.

For example:
member1 | 20%
member2 | 75%
member3 | 5%
member4 | 0%
member5 | 0%

Once this stage has ended, the weightings for each candidate will be multiplied by the total reward pool for the week, and they will receive this bonus amount.

Note

There is no rule which prevents an inducted Founding Member for being nominated for bonus rewards.

Next steps.

This is all ready to go, so if it's OK with you @bwhm, I'd like to launch it this week.
The CRM now supports this as a RewardedActivity type.

Link to SUBMISSION-GUIDELINES.md not working

The link to the file is broken. The path should be fixed

https://github.com/Joystream/founding-members/blob/main/SUBMISSION-GUIDANCE.md

https://github.com/Joystream/founding-members/blob/main/SUBMISSION-GUIDELINES.md

Add scoring results to the CRM

Once the scores for each working group are finalized, they need to be added to the respective council period in the TestnetCouncil table. This will also include adding the policy variables which were in effect for that Council round to the table.

Gather and parse data for proposing new Council Period Parameters (and metrics)

Inputs

As outlined here and discussed in this video, gather these metrics for the call:

tJOY Spending

  • Total tJOY spending, broken down by purpose
  • Min/max/averages for each group/purpose
  •  Bounties (by HR) created, ongoing and settled
  • Funding requests - recipients and outcomes

JOY Paid

  • Total JOY earned, broken down by purpose
  • Lead and worker statistics, including how many weeks before verified/inducted
  • Total JOY "lost", and why

Referrer/Referrals

  • Total referrals + trend
  • Performance of the referred
  • Performance of referrals

FMs

  • How (who) many members earned enough for verification
  • How (who) many members earned enough for induction
  •  Ideally - breakdown of earnings

WG specifics

  • Workers at start, end by group (hires+firings)
  • Leads - longevity/turnover
  • Performance - both quantitatively and qualitatively
  • Unique workers/leads

General activity

  • Elections over time
  •  Proposal stats
  • Bounties stats (ex HR)
  • Content stats

Outputs

  • Propose new parameters
  • Propose changes to metrics

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.