Joystream / atlas

Whitelabel consumer and publisher experience for Joystream
https://www.joystream.org
GNU General Public License v3.0
101 stars 45 forks source link

Review T&Cs #3442

Closed dmtrjsg closed 1 year ago

dmtrjsg commented 1 year ago

Context

YPP has its own set of terms and conditions that need to be added to the overall service T&Cs.

Current implementation has them as separate mandatory modal in the onboarding flow and it is added to the comment to this issue.

Scope

ℹ️ Release-ready copy of T&Cs is in this comment: https://github.com/Joystream/atlas/issues/3442#issuecomment-1348978038

┆Issue is synchronized with this Asana task by Unito

dmtrjsg commented 1 year ago

YPP Terms:

Screenshot 2022-12-09 at 19 23 50

Terms & conditions Transaction fee Applying for the program requires requires a blockchain transaction, which comes with a fee of 0.01 tJOY. Transaction fees are covered from your membership account balance.

Automatic YouTube sync Coming later this year Once automatic YouTube videos sync is available, in order for it to work, your Atlas channel [NEEDS TO DO WHAT?]. This is purely a technical measure and does not affect ownership and rights to the content uploaded to you Atlas channel.

Payout tiers The more subscribers you have on YouTube, the higher the payouts in the program.

Tier 1: <5K subscribers 1x Tier 2: 5K-25K subscribers 1.5x Tier 3:

25K subscribers 3x Terms

  1. You can opt out at any time To do this contact us on discord or by email and you will be opted out from the program. Your information will be deleted. You won’t have to return any tokens that you have already earn.
  1. Lorem ipsum et dolores There is probably more information which we wanted to convey in here - we can do this by adding additional points to this list
dmtrjsg commented 1 year ago

Copy for the Programme terms and conditions

Key information

Rewards

❗ The tokens pool allocated for this programme is limited, so the programme has limited duration.

Tiers Multiplier

Based on the YouTube channel followers count, a popularity Tier is assigned to each participant. Popularity tier results in multiplication effect on all rewards of the programme.

Tier 1 - x1 rewards Tier 2 - x2.5 rewards Tier 3 - x5 rewards

Your popularity Tier will be displayed in the YPP Dashboard after you sign up. Information on all tiers will be periodically updated and posted to the programme details, which are hyperlinked from the dedicated widget in the YPP Dashboard.

Example Rewards Calculation

For a channel with falling under Tier 2 for subscribers, which signed up and remained in the programme with auto-sync service enabled for 1 month. During this month that channel uploaded 5 new videos to their Youtube channel, 2 videos directly to Joystream channel with manual upload, and referred 3 other YT channels that ended up signing up.

In the end of this moth, the payout to this channel's account will be: 50002.5 + 53002.5 + 10003*2.5 = 23,750 JOY

When you accept the Terms and Conditions you

  1. Become enrolled to the YouTube Partnership Programme.
  2. Your YT channel information and email will be stored in the data base, operated by JS Genesis.
  3. Qualify for the rewards paid in JOY tokens for signing up to to this programme.
  4. If you chose to opt in to auto-sync service, you grant permission for JS Genesis operated service to upload all videos from your YoutTube channel to Joystream blockchain and storage system, available to display on Gleev App or any other app connected to Joystream blockchain and qualify for the additional rewards paid in JOY tokens for new videos added to your Joystream channel via automatic upload service.
  5. Qualify for additional rewards paid in JOY tokens when other creators sign up to this programme, referencing your channel as referrer.
  6. Will remain in the programme unless access rights to Gleev service is revoked from your google account settings, opt out is triggered from YPP dashboard or suspended by the members of JS Genesis team.

Rewards are subject to the verified status of the channel, assigned by the program operators.

T&Cs

Who is the programme for

The programme is targeted at YouTube creators that already have a channel focussed on Crypto and Web3 content, with substantial published videos and subscribers. The programme involves compensation in JOY tokens for YT creators who choose to opt in, meet the qualification criteria and perform actions that are linked to rewards.

Who Qualifies

Youtube channel has to qualify the criteria shown in the sign up flow, and described in the programme page on Notion.

  1. Channel must be focussed on Web3/ Crypto content, matching one of the categories supported by Gleev App.
  2. Be created not earlier than certain number of days before sign up
  3. Have a certain minimum number of followers and the channel followers must be set to public view.
  4. Meet minimum videos criteria, and each video must meet the requirement on latest date created, before the sign up.

Newly created Joystream channel has to have description, avatar and background image set up. The criteria for qualification can be reviewed at any time without prior notice.

How to sign up

To sign up, user has to go through the onboarding flow provided in the Gleev web app. https://gleev.xyz/ypp and authorise with the Google Account, connected to their YT channel. During the authorisation, the access to the YT content youtube.readonly scope, to fetch channel meta data and content information; and access to email address for the YT account has to be granted for the JSG operated Backend Application (API client) that connects to YT API.

Mandatory fields need to be populated to the web input form to progress, such as email, video category, and terms and conditions need to be accepted.

How to get rewards

Verified Youtube creators will be offered compensation in JOY tokens, native asset of Joystream blockchain for the participation in the programme. In order to earn rewards, participants need to complete the rewarded tasks, namely:

  1. New sign up: Authorise with their YT channel and choose an optional opt in to auto-sync service. One-off compensation only for new sign ups.
  2. Referral: Refer other YT Web3/ Crypto content creators to the programme, which results in successful signups. It can be done by generating unique referral code (link), which can be followed to create new membership. Once successful the new memberships created with the referred link, this will result in rewards for the originating account. The same code can be used by multiple new joiners. Alternatively referred channels can enter referring channel name to the referral field during sign up flow.
  3. Auto-synced content: Simply post new Web3 and Crypto-focussed videos to the connected YT channel, and remain opted in to the programme and auto-sync feature till they are fully uploaded to your channel.

How rewards are calculated

Rewards are based on the popularity Tiers assigned to the channels upon programme registration Tiers are calculated based on the number of subscribers. The ranges of subscribers qualifying for each Tier can be reviewed and updated by the programme operators at any time without prior notice.

Your current Tier and tier information is contained in the Dashboard, available on the gleev.xyz/ypp page for the signed in members, already opted in to the programme.

Rewards are calculated based on the internal DB records, generated automatically or added by the JSG team operating the programme.

To qualify for rewards the channel needs to be verified by JSGenesis team and/or its partners operating the programme. This is a manual process, including visual review of the Youtube channel title, description and uploaded content. To be verified the content has to be of reasonable quality, focussing on Crypto/Web3 and match the selected category selected during upload.

How rewards are paid

When YT creators create Joystream channel app, they get an auto-generated polkadot account assigned to this channel automatically. This account is bound to their channel, and cannot be updated. This account can hold JOY tokens.

The data collected and recorded in the internal DB with regards to uploaded content and referral stats will be informed with when deriving the cyclical rewards to the participating channels.

Rewards are paid only for verified channels. Rewards are paid via direct transfers from JS Genesis specific account to the creators' Joystream channel account. Rewards are paid by JS Genesis company, from the funds (tokens) budgeted for the purpose of operational support.

How to withdraw rewards

In order to create Joystream channel, a Joystream membership is required. It can be created free of charge using the Gleev App, hosted on gleev.xyz or Pioneer app hosted on pioneerapp.xyz. Joystream membership requires a substrate account, created using any wallets compatible with Polkadot ecosystem.

From the channel account JOY token can be transferred (withdrawn) to the member account via Gleev app interfaces or polkadot.js app (calling transfer extrinsic). This transaction must be signed with the membership controller account, that was used to create Joystream channel.

Programme Partners Terms and Conditions

If you opt in to the Auto-sync feature you also agree to YouTube's Terms of Service (https://www.youtube.com/t/terms) and Google's Privacy Policy (https://www.google.com/policies/privacy).

Auto-sync service

In order to simplify the upload of content to Gleev App, JS Genesis team has built a dedicated backend application, integrated with Youtube and Gleev to facilitate the content upload. It is hosted on the JSGenesis operated infrastructure and operated by JS Genesis team.

This requests access to the necessary information via YT API, namely "read_only" scope to your YouTube channel data. This happens during the authorisation flow as part of the YPP programme onboarding. The App fetches only the information that YT exposes in the read_only scope and required to effectively operate the programme via the open API.

Account Info: email address. Channel Info: name, date created, URL, number of followers, number of comments, number of views, number of videos, Videos info: video titles, videos date uploaded, video subtitles.

If auto-sync service is enabled, it will refetch channel information once every 24 hours, and poll video information once every 30 minutes to detect new uploads and automatically upload them to your Gleev Channel.

Only public videos are synced. Videos are synced in resolution of 720px or lower. HD videos will be supported as the programme matures. Subtitles synced only in English, and all other languages are not supported at the time of programme launch, but will be supported in the future. The queue of syncing is defined based on the proprietary algorithm developed and maintained by JSGenesis team. It may be updated at any time without prior notice.

If access of the JSGenesis operated backend app to your youtube channel is disabled on the side of Google account, then you are automatically opted out from the YPP programme and no longer qualify for rewards.

Opt out

Channel can opt out from auto-sync feature by choosing this option in the settings tab of the YPP dashboard. Opting out from Auto-sync would stop automated upload of all new content published to YT channel, but would keep the Gleev channel in the YPP programme, meaning that referral rewards can still be collected.

Opting out from the entire programme can also be done from the settings tab. This will result the channel marked in the internal data base as "opted-out" and payout calculation for this channel will stop for any activities undertaken.

Already uploaded content will remain on the platform but can be deleted by the user at any time.

Termination

Any channel can be suspended from the programme at any time without any disclosure of the reason. The reasons can be for violating the adherence to the content vertical policy, and continuously posting videos that do not match the content expectation/ category requirements.

If the channel is suspended from the programme, it can no longer re-apply with the same credentials and can barred indefinitely or for the period to the discretion of JS Genesis team.

Disclaimer

Your use of our Services is at your sole risk. Our Services are provided “as is" and “as available" without warranties of any kind, either express or implied, including, but not limited to, implied warranties of merchantability, fitness for a particular purpose, title, and non-infringement. In addition, the Company does not represent or warrant that our Services are accurate, complete, reliable, current or error-free. While the Company attempts to make your access to and use of our Services safe, we cannot and do not represent or warrant that our Services or servers are free of viruses or other harmful components. You assume the entire risk as to the quality and performance of the Services.

Manual process is involved, so errors are not inevitable. JSG team is not liable for any reconciliations, but is committed to spend reasonable efforts to support all participants in reconciliation of rewards calculation where it deems to be operationally viable and commercially sensible to do so.

JSG team is not liable or obliged to do the payments and in case of errors will seek to provide the support in reconciliation of payments but not be obliged for channel rewards. In case of any disputes over content quality and qualification for rewards, JSG has no liability to compensate the channels and these terms are not binding, but payouts are made on total discretion of the Gleev App operator and the JS Genesis AS team. In case programme budget runs out before some of the apps are paid, there is no obligation to pay late subscribers.

Severability

If any term, clause or provision of these Terms is held invalid or unenforceable, then that term, clause or provision will be severable from these Terms and will not affect the validity or enforceability of any remaining part of that term, clause or provision, or any other term, clause or provision of these Terms.

Limitation of Liability

The Company and the other Company Parties will not be liable to you under any theory of liability—whether based in contract, tort, negligence, strict liability, warranty, or otherwise—for any indirect, consequential, exemplary, incidental, special or punitive damages or lost profits, even if the Company or the other Company Parties have been advised of the possibility of such damages.

Governing Law

Governing law of these terms are the same as the general Terms of Service for Gleev App as described on this page: https://gleev.xyz/legal/tos

Miscellaneous

These Terms constitutes the agreement between you and the Company relating to your access to and use of the Services of Youtube Partnership Programme. We may assign our rights and obligations under these Terms. Under no circumstances may you assign your rights and obligations under these Terms, including in the event of change of control or by operation of law, without our prior written consent. The failure of the Company to exercise or enforce any right or provision of these Terms will not operate as a waiver of such right or provision. We will not be liable for any delay or failure to perform any obligation under these Terms. Except as otherwise provided in herein, the agreement is intended solely for the benefit of the parties and are not intended to confer third-party beneficiary rights upon any other person or entity.

bedeho commented 1 year ago

Questions

Remarks

Rewards can be also paid via direct transfers from JS Genesis specific account to the channel account. Rewards are paid by JS Genesis company, from the funds (tokens) budgeted for the purpose of operational support.

This remark sent me on a major tangent, because I had not previously thought of this idea as an alternative, despite it actually being quite superior to using the council as an intermediary. The problem with the latter is that navigating the council will be unpredictable, and relying on them to act in a timely and reliable way is nice to avoid. At the same time, and as confirmed by @drillprop, normal payments into the channel account will not be properly displayed under My Payments. For this reason I created this addition to the Ephesus network scope which will allow us to do this direct payment method, avoid the council, and also unlock future use cases around tipping and so on.

https://github.com/Joystream/atlas/issues/3591 https://github.com/Joystream/joystream/issues/4507

The primary way in which the rewards are paid are through the DAO-operated process of creating proposal with the payload that contains the rewards calculated for all Joystream creators to compensate for their content uploading.

I'll just list the steps a bit more clearly here, to make it clear what has to happen, and why the direct model above is preferrable as long as Gleev as sufficiently low scale.

  1. Determine all payments.
  2. Build new payment payload which is based on both our payment objectives but also the existing payment payloads being used. This part may require coordinating closely with the council to make sure we are not steppin on their toes, and possibly trying to bundle multiple payment initiatives from distinct gateways into one proposal.
  3. Jsgensis funds the net amount of the payment to be done by sending funds into the council (or was it content directory) budget.
  4. The council makes the payment proposal.
  5. The council at some point approves (hopefully).

Tiers Multiplier:

I don't know what the tiers are, it seems to me that it probably should mirror the very uneven distribution in follower count and audience of various creators, which means they should be way more uneven.

Rewards are calculated based on the internal DB records, generated automatically or added by the JSG team operating the programme. Manual process is involved, so errors are not inevitable. JSG team is not liable for any reconciliations, but is committed to spend reasonable efforts to support all participants in reconciliation of rewards calculation where it deems to be operationally viable and commercially sensible to do so.

I asked @zeeshanakram3 about this question of whether the DB indeed had internal records reflecting what videos had been published via youtube synch and what not, he said

@bedeho ypp backend only tracks videos that it has or plan to published on Joystream, with explicit status associated with each video e.g. New| VideoCreated|UploadSucceeded etc. It does not currently tracks the videos directly uploaded on the JS channel, however I am not sure if backend should store that info, as that is easier to achieve on client side (e.g. atlas), 1. by fetching all the videos from ypp-backend that it has published using /channels/{jsChannelId}/videos, 2. get details of all videos of JS channel from QN, and filter publish videos from list return by QN based on their runtime IDs, (if client app wants to categorise videos into synced vs direct upload)

Without this information, it is not possible to compute rewards for videos based on the state of the yt-synch backend. Moreover, even if this information had been there, to have a full calculation to the extent that it could power the sort of live online dashboard that you had in mind, we would also need payment finalization information like

I am sure with more investment we could get there in the end, but to me it seems

I am fine with us making some tools or automation to help us with this, but bundling this inside of yt-synch infrastructure is not advisable at this stage. With this said, I still think we are missing a fully specified process for how we actually do the operational side of this program, in terms of exactly what data lives where, read by whom, using what tools and updated in what way. Also important how we will practically be able to make sure channels are on topic, videos are on topic and not duplicate or bad in some way. Perhaps you could take a stab at this, and then as part of that suggesting suitable tools and services we should use or make.

terms & conditions

I think this overall looks quite sensible, I think we do need to add something about how

  1. We can change reward amounts & tier rates at our discretion.
  2. Terms can change at any time, and that we will send out notificaiton when it does.
  3. Gleev is a publishing tool meant to bolster Joystream adoption, and Jsgensis cannot be held liable in any way for any losses or consequencues incurred as a result of how third parties may end up using the content.
  4. Content published through this program will be published under normal Gleev terms, and those terms should be explicit about the creator retaining any copyright claims, and also that other applications built on Joystream may distribute and monetise the content.

Currently the DAO itself has no notion of terms, which it should, as described here: https://github.com/Joystream/joystream/issues/4305, but I don't think we gain much by delaying until this is done.

This is conceptually a bit of a messy topic, but I don't think its worth investing much formal effort here, just writing up something reasonably precise which vaguely captures the spririt of what we are trying to do is sufficient.

dmtrjsg commented 1 year ago

Questions:

  1. I assume that we can check the three qualifications automtically in the yt-synch backend?

Yes that is already built into the process. Backend returns if its a pass or a specific error, then we show which criteria did not qualify to users.

I assume the tiers are locked in upon signup: we are not going tobe in the business of monitoring and recalculating?

We store tiers set up on Atlas side, but Backend only fetches the subscribers. It polls it every 30 minutes. If someone suspends YT auth on the YT side we opt them out from programme altogether as we don't have access to subscribers hence cannot calculate the tiers.

Are we committing somewhere to how frequently payments will be made?

I assumed in-line with the council terms, but since it will/ may be handled by JSG we can choose our own cadence. This info will be provided in T&Cs and Notion page for the programme. This is not ultimately cut in stone yet.

Are there T&C for YPP as separaet from Gleev? seems annoying to have to present two times, but it could be useful to have a sort of more of a pedagogical explainer of what you are actually opting into when you join the program, just to align expectations, which ironically is not actually the goal of T&C.

YPP terms are shown in the flow, as of rn they are a separate set up. Once signed up to the programme to review T&Cs my expectation would be that user will be linked from the footer of the app to the general T&Cs page where YPP terms are also covered, perhaps under separate dedicated section but on the same page.

Remarks

I'll just list the steps a bit more clearly here, to make it clear what has to happen, and why the direct model above is preferrable as long as Gleev as sufficiently low scale.

If we pay directly we can bypass the council, but where the payments are done from? Zeeshan said its built in the way which only supports single channel/ account transfer so needs to be bundled via script of some sort to pay multiple recepients at once.

I don't know what the tiers are

Suggested starting set up is calculated in the model I shared.

whether the DB indeed had internal records reflecting what videos had been published via youtube synch

yes this is known to me, that's why I suggest a separate service to bundle this info. Covered in: https://github.com/Joystream/marketing/issues/327 Added this point explicitly

Screenshot 2023-01-13 at 10 07 51

Also

I believe we need someone with legal background to help us write them up so we avoid rookie mistakes and don't leave vulnerability gaps.

dmtrjsg commented 1 year ago

MM:

  1. Payout - starting with weekly cadence, paid out every Friday
  2. JSG YPP Account to be set up for that particular purpose
  3. Script for multiple recipients will be created to batch the payments
  4. We want to add additional field jsg_verified, true/false. Which will be manually updated by YPP programme operated in Dynamo DB. This field will serve the purpose of tracking the manual review of the quality of channels participating, and ONLY verified channels will be included into the payload composition.
  5. Add a note to T&Cs that the budget for the programme is limited and the programme has finite duration.
dmtrjsg commented 1 year ago

@attemka sorry about last minute change request, but I forgot to include the "license" part to the T&Cs 😬

Can we please add a new section after "Auto-sync" section 🙏

License

Auto-sync service will read the videos meta-data fields, including title, description, date created, duration, language and license and transfer them to the newly created video on the creators Joystream channel.

In case the original youtube video license was set to Standard-Youtube-License, such videos will be assigned Joystream-license, limiting the replication and usage of such content without the explicit consent of the author.

In case the original youtube video license was set to Creative Commons, such videos will be assigned CC0 license, allowing all viewers to distribute such videos freely in the public domain, allowing them to be built upon, enhanced and reused by others for any purpose without restrictions.

License can be updated manually for each videos individually from the list of available options.

dmtrjsg commented 1 year ago

General T&Cs modal uponcreating new member on Atlas encapsulates YPP T&Cs. The "joint" T&Cs should only be published to TOC page.

cc @attemka

dmtrjsg commented 1 year ago

LGTM, can be merged 👍

dmtrjsg commented 1 year ago

Update two sections in T&Cs:

Tiers Multiplier

Based on the YouTube channel followers count, a popularity Tier is assigned to each participant. Popularity tier results in multiplication effect on all rewards of the programme.

Tier 1 - x1 rewards Tier 2 - x2.5 rewards Tier 3 - x5 rewards

Your popularity Tier will be displayed in the YPP Dashboard after you sign up. Information on all tiers will be periodically updated and posted to the programme details, which are hyperlinked from the dedicated widget in the YPP Dashboard.

Who Qualifies

Youtube channel has to qualify the criteria shown in the sign up flow, and described in the programme page on Notion.

Channel must be focussed on Web3/ Crypto content, matching one of the categories supported by Gleev App. Be created not earlier than certain number of days before sign up Have a certain minimum number of followers and the channel followers must be set to public view. Meet minimum videos criteria, and each video must meet the requirement on latest date created, before the sign up. Newly created Joystream channel has to have description, avatar and background image set up. The criteria for qualification can be reviewed at any time without prior notice.