Joystream / atlas

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

RICE scoring future Epics #1777

Closed bedeho closed 2 years ago

bedeho commented 2 years ago

Background

We currently have a substantial backlog of things we would like to do for Atlas, as described in the sections Baseline and Web3 Specific in the onboarding issue https://github.com/Joystream/atlas/issues/1577. The purpose of this issue is to attempt to apply the RICE prioritisation model to that backlog.

Prioritisation: Parametric RICE Score

In this exercise, I consider a range of projects, which probably would be Epics in our new process, and attempt to quantify the dimensions of each RICE score. To be specific, I am estimating:

Critically, since I have so little information about the utilisation information on Atlas currently, I have elected to parametrise the Reach score by values X and Y which denoted the current size of

that use Atlas over a quarterly period. With this approach, I can separate concerns, and later we a spreadsheet can be constructed where we can explore how values of X and Y impact ranking.

Hence all Reach estimates, they are of the form kX, or kY, where k is some literal number. For some projects, I am assuming the project may in fact increase the total number of users, in which case k>1.

Finally, a total score is computed by (Reach Impact Confidence / Effort), but I omit this part of the exercise here, as a spreadsheet seems more suitable, and some points should be discussed further anyway.

Consumer accounts

Description

There is no notion of any user accounts on a server, as is conventionally the case with platforms, which would hold private user data. Private data includes things like who you follow, your viewing history, search logs any metadata about your search

Reach

All consumers will be impacted.

Estimate: X

Impact

Impact is nominal by itself, it may help with making usage devices, browsers or clearing of browser cache, more robust.

Estimate: 0.25

Confidence

Estimate: 100

Effort

Requires introducing a database in Orion which holds information about what users exist, and holds the current client side information which should be relocated, like

One would also need to add API for reading and writing this. There is an open question of how to do authentication.

  1. We can keep using the signer, which would require users to install a signer - even if they don't intend to use any crypto features to begin with. This is how OpenSea work for example, where you do signing with the extension as a way to authenticate when updating your profile state for example. The user would also have to create an account, albeit an empty one. If we chose this path, it could make sense to build in a way to give free tokens from Orion as well in the future. We would also need to do some redesigns for this, for example associated with triggering the login/signup when they try to follow someone and they have not authenticated. This approach probably also means that users on mobile could not use Atlas with an account in the browser, most likely, as there is no signer for mobile browsers. It would mean an app would be a must for account features.
  2. We can allow username + password authentication, which is more convenient, but also then introduces a bifurcated user model, which has its own issues. There would obviously be some redesign here as well, not only for triggering the login/signup , but also designing new auth flows based on username + password authentication, which we do not have today.

For estimation I am picking variant 1, for no particular reason. This issue needs to be resolved.

Estimate: 1

User playlists & series

Description

There is no ability for channel owners to publish playlists, as ordered compositions of videos from any channel, and series, which also have seasons.

Reach

Some substantial minority of Y, and a large share of the active Joystream specific content creators, do have publishing patterns that simulate playlist like features. I am going to assume all of them would be reached, and that they constitute 10%. Likewise, I am going to assume that we are going to reach a large share, 80%, of the consumer side, because many of them consume Joystream specific content.

Estimate: 0.1*Y + 0.8*Y

Impact

It is useful for organising content in a channel, and also helps discovery quite a bit, as it can automatically key off playlist ordering.

Estimate: 0.5

Confidence

Estimate: 80%

Effort

Requires no changes to the runtime, does require a new metadata standard for playlists & series, as well as query node support to decode this standard, which will be quite trivial, but then the work on the Atlas side will be more substantial in terms of design and tech. The impact will both be on the consumer and the studio side.

Estimate: 3

Transcoding

Description

There is no ability for uploaded videos to get converted into a range of different resolutions and encoding formats, making it easier for users to consume the content in a way which is suitable for their device and product.

Dependency

Appears to depend in some way on Consumer Accounts, possibly.

Reach

Anyone publishing will eventually run into this issue of encoding related problems, unless they are re-uploading/synching their content from YT, where is has already been processed to work well for browser based playback. On the consumer side, people occasionally will run into videos that have bad encoding, and that would stop, but this is a much negligible effect.

Estimate: 0.8*Y

Impact

Estimate: 0.5

Confidence

Estimate: 70%

Effort

Would require

Estimate: 5

Scrubbing Previews

Description

There is no ability to generate image extracts from regular intervals in a video so as to provide content previews while scrubbing.

Dependency

Can only be done after Transcoding.

Reach

All consumers would use this.

Estimate: X

Impact

Estimate: 0.25

Confidence

Estimate: 60%

Effort

Once we have done the Transcoding work, the extra work here is

Estimate: 3

Recommendations

Description

There is no way to recommend to the user what they should watch which is based on either their own or other consumption statistics. This is required in order to for example suggest new a new video when playback of one ends, or to show related videos.

Dependency

In principle this can be done, at least as an MVP, without Consumer accounts, just having Orion use global traffic statics about what recommendations convert, however anything sophisticated likely will Consumer accounts, for this reason I am just assuming the most naive simple version without Consumer accounts.

Reach

All consumers are impacted

Estimate: X

Impact

Currently it has a limited impact because catalogue is so small, but once we get YT-synch going it will be much more impactful. Since I assume that happens in Q1 2021, I am accounting for this.

Estimate: 0.5

Confidence

Estimate: 50

Effort

Will require new state in Orion database representing information needed to power recommendations, as well as whatever logic and APIs that expose recommendations and update them. I am hopeful that the naive version of this can be done with our current team, but at some early point after that, someone with a specialisation in this needs to be brought in to at least advice us on a more useful setup to support further innovation down the road. Changes in Atlas will be negliible design wise, and only modest changes are needed to actually read these new recommendations, as well as to provide extra information to Orion that updates recommendations.

Estimate: 2

Query Speed & Quality: Transition Hydra -> Subsquid

Description

Atlas is a super slow application to load, and to my understanding, this is in substantial amount caused by the query node being very slow, despite the fact that it has a very light load. This is because Hydra as a framework is very under-optimised and under-maintained. Subsquid is a version of Hydra which is being actively maintained by a separate team, and they have already made substantial progress on improving it's query, and processing, speed. There is also the issue of the quality of free-text search results, currently, they work very poorly. In the long term, I don't actually think search across the content catalogue will be powered by the query node, it will likely be powered by some more sophisticated Orion service, but some types of search possibly would, such as within a channel, or searching across membership handles.

Note: this was not described on onboarding document. Note 2: It should probably be verified that a big part of Atlas slowness is actually due to this.

Reach

All consumers and channel operators.

Estimate: X + Y

Impact

This has a very big impact, the slowness is noticeable on the very first interaction with Pioneer.

Estimate: 2

Confidence

Estimate: 95%

Effort

The primary effort is outside of the Atlas team, however, the Atlas team will need to do quite a bit of testing and collaboration trying to resolve problems with the Subsquid team, possibly finding workarounds if something is not feasible with Subsquid even in the long term.

Estimate: 0.5

Better search

Description

There is no way to search based on anything except a very bad full text matching of the search string against, video titles and descriptions. Sophisticated search will be sensitive to many more parameters, including popularity and consumption statistics of candidate matches.

Dependency

Same as Recommendations, at least as best I can gauge it.

Reach

A substantial minority share of the consumer side use search for discover

Estimate: 0.2*X

Impact

Estimate: 2

Confidence

Estimate: 80

Effort

Very similar to Recommendations, it's not clear how substantial the marginal work for the naive version of search is, given Recommendations being done, or vice versa.

Estimate: 2

Subtitling

Description

There is no way to display subtitles in content, or allow control of. As a result of the lack of post-processing, there is also no way to have subtitles automatically extracted.

Reach

A large share of the Joystream content at the moment would benefit from subtitling, and community members are currently doing this my manually adding it into the video (example https://play.joystream.org/video/8266), which is labour intensive, and also only allows you to do it for one language.

Estimate: X

Impact

Estimate: 0.5

Confidence

Estimate: 70%

Effort

There are really two parts here, one is automatic subtitling, and the second is just being able to have subtitling metadata associated to content, and have it displayed on playback. I will only concern myself with the latter, as the former requires a lot more work, and it depends on the latter anyway. On the design side, we would need to introduce some new part of the upload/editing flow for content for associating subtitle metadata, and we also need to adopt some off-the-shelf standard for this. I did some basic review and SRT seems to be the most popular format, and it also is compatible with YT, so when we do YT-synch, perhaps we get that format coming out already:

https://support.google.com/youtube/answer/2734698#zippy=%2Cbasic-file-formats

Payload needs to be stored as separate assets in storage system. The playback side has already been designed. On the tech side, changes would be limited to accommodate this.

Estimate: x

Comments & Likes

Description

Threaded discussion, per video, with reactions on the video and each comment, moderated by channel owner.

Reach

Nearly all consumers we currently have would be impacted by this, both using and seeing the feature.

Estimate: 0.8*X

Impact

I think this would have a big impact currently, in particular given in context credit and community feedback on content, I have personally wanted to do this very often. It also would allow for discussion and async asking questions and support.

Estimate: 1

Confidence

Estimate: 80

Effort

The runtime side of this has already been completed, which is where this state lives. There is no query node support, but it would be extremely easy to add, 1-3 days really. There is no design done here, which would be non-trivial.

Estimate: 2

Embeddability

Description

There is no way for users to embed playback of a video on third party websites or social media.

Reach

A lot of our active creators would want to share their content more effectively, in particular in the future if there are rewards tied to consumption data.

Estimate: 0.1*Y

Impact

Estimate: 1

Confidence

Estimate: 60

Effort

I have no clue!

Estimate: ?

Creator Social Tokens

Description

The ability of creators to monetise their channel by sharing their future channel revenue with their most passionate fans, as well as give them access to unique content. Here are some very rough, and now dated, requirements

https://github.com/Joystream/joystream/issues/2362

Reach

Likely would radically increase interest on both the viewer and creator side, only damper is that it would not be truly for real yet, as we are not on mainnet.

Estimate: X*5 + Y*10

Impact

Estimate: 2

Confidence

Estimate: 90%

Effort

Here the runtime work has not started yet, and that will take some time, and there is no query node support. Design would impact both the consumer and viewer side, in a very similar way to the NFT work as done. It may be possible to try to make earlier progress on this work by trying to work top-down, and nail down requirements on the product side before the runtime is done, or have it happen in parallel, and that would have the added benefit of allowing more market research and product input on how the system should work.

Estimate: 10

Reflection

In the end, I am actually not sure the ranking would look very different if I did this informally without RICE, in particular because of the dependencies imposing extra constraints, and I am also a bit concerned about the reliability of a lot of my impact and reach estimates. Put it differently, if the output of the analysis results in the conclusion that we don't do comments & likes first, then I would question the numbers I have estimated :D. Perhaps the framework would be more useful when considering a very large number small alternative changes that have limited internal dependencies.

One thing I did find useful was the exercise of identifying, or attempting, to the total amount of effort required across all the things we are considering doing, which is always humbling, and I also suspect the output of these notes will be helpful for the team to get more informed on where we are going.

Next Steps

I think the team should review everything, just to absorb the information, and then we need some validation from the tech team about some of these estimates, before we have final credible RICE scores.

kdembler commented 2 years ago

Great writeup, useful to reason about the future (not talking about RICE specifically, but just writing each of those down with some reasoning and estimates). I have feedback for some of the points:

  1. I think the reach of Transcoding may be a bit underestimated. You've only mentioned issues with bad encoding which is obviously a big part of it, but this feature would also allow having a single video in multiple qualities. This in turn would be very useful for users on mobile / with slow internet connection. If a creator uploads 4k footage today, it may be unwatchable for some of the consumers. Multiple qualities would allow the client to pick the version that works best for them, so I would say consumer reach isn't negligible here.
  2. I think the effort estimate on Scrubbing Previews is too high, if we assume that we already did the work on transcoding, I think this would be closer to 1/2. Remember that community members already did some kind of POC on this, which was working.
  3. On Embeddability: I think the name may not be fully descriptive here, I would potentially split this into 2 separate epics: a) Embeddability as in embedding via iframe on 3rd party sites. We actually have support for that already. It may not be the final solution but it's usable. For example check video from Atlas playing on https://blog.joystream.org/community-call-2/ One thing we may be missing is adding some kind of UI with instructions to allow setting this up easily, possibly worth doing that short-term to make embedding easier (thinking about thousands of views from embedded videos from drog) b) Social Media Previews as in having previews for Atlas links on Twitter for example. This sprint I've created an epic for this describing some of the problems we will have to solve (https://github.com/Joystream/atlas/issues/1785) and we also created an issue to do a POC of solving this (details here: https://github.com/Joystream/atlas/issues/1780). Depending on the outcome of POC, it may turn out we can have this working without too much effort. We would potentially need some design help before launching the full thing, but that would be trivial task

Also, one general note that comes to mind after analyzing those is that it could be potentially beneficial to start designing content metadata changes, including number of those and do it in a batch even before we start work on any of the epics. Just a wild idea, not sure if a good one though :P

bedeho commented 2 years ago

Also, one general note that comes to mind after analyzing those is that it could be potentially beneficial to start designing content metadata changes

What changes do you have in mind?

kdembler commented 2 years ago

We could compile all necessary changes from this list of epics:

bedeho commented 2 years ago

LOL, of course, yes that makes sense. I do think the simplest possible versions of all of those will be super easy though.

kdembler commented 2 years ago

Yes, I agree, that's mostly why I suggested it, we could do first step for many of those with relatively low effort