Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Babylon Release Plan #1249

Closed
bedeho opened this issue Sep 7, 2020 · 2 comments
Closed

Babylon Release Plan #1249

bedeho opened this issue Sep 7, 2020 · 2 comments

Comments

@bedeho
Copy link
Member

bedeho commented Sep 7, 2020

Name

Babylon

Goals

1. Launch Atlas 0.1

2. Deploy a new content directory and corresponding working group

3. Deploy first self-hosted Joystream Hydra node only supporting content directory.

Overview

This is a complex release with interdependencies between three major areas of technical improvement. These more or less have to come together like this for the release to be coherent. In what follows below we will cover each part of the release in terms of scope and current status of work.

Runtime

Team

  • Arsen

Work Scope

  1. The new content directory needs to be integrated into a fully working runtime for the current version of Substrate.
  2. The old content directory working group is still present now, it needs to be removed and replaced with a new working, and this group must be integrated with the new content directory.
  3. The proposal system must be updated to work with the new working group.
  4. There is no need for any migration. The old versioned store and permissions will be discarded, and likewise all the state in the working group, including channels.

Current Status

The organisation and function of the new content directory is described here:

https://joystream.gitbook.io/joystream-handbook/subsystems/content-directory

The content directory has been fully implemented & unit tested in up to date Substrate version and is currently being implemented into a full runtime.

Initial Division of labour

Arsen does everything.

Content Directory

Team

  • Leszek
  • Bedeho

Work Scope

Schemas

We must define new schemas that will capture the new data model. One important change for example is that channels can now live directly inside the content directory, not externally in the working group as is the case today. Another important one is how much of the special display choices in Pioneer, like the landing screen content, can come from the chain, however that would require having schemas facilitating this. The actuals schemas should be constructed informed by a new schema standard (see below in tools section) and the final API the Atlas team is expecting

https://github.com/Joystream/joystream/issues/824#issuecomment-653150085

Seed Content

Given that we are clearing the directory, we need to seed the initial directory with some content so that the experience people will have from the get-go is somewhat representative of how the system will work eventually. This is of particular importance because publishing will be relegating to only be CLI based, which will require a native install step, and be much more complicated than any publisher will be used to. An additional point here is that we have to select some specific content to occupy distinguished salient places in the Pioneer front-end, and these may need non-standard high-quality media artefacts.

We have actually procured a list of a few thousand public domain movies that could be published, the only issue with this is that the image preview on these has a different aspect ratio to the one used in the current design. The two alternative approaches would be to

a. Have manual creation of new covers, for example by using stills from the videos.
b. Adapt Atlas video previews to be aspect ratio of public domain videos.

Current Status

Nothing is done here.

Initial Division of labour

  • Leszek
    • New schemas
  • Bedeho
    • Seed Content

Hydra

Team

  • Metin
  • Dmitrii
  • Arsen

Clarification

We will refer to the framework as Hydra, and the usage of that framework for Joystream purposes as the query node.

Current Source & Issue Management

Hydra is being migrated out of a long-running branch in the monorepo and into this standalone repo in order to facilitate third parties using and discovering it.

https://github.com/Joystream/hydra/

This process is not complete, and there are also some ports on Dmitrii's personal NPM profile. This will all be consolidated.

All issues pertaining purely to Hydra should live in that repo, while issues pertaining to the query node should live in the monorepo with label query-node. The query node itself, in the form of input schemas, mappings and anything else, will live in the monorepo as well.

Work Scope

  • Implement content directory query node schemas+mappings.
  • Separation of indexer and processor
  • Facilitate the introduction of query node into network integration testing infrastructure.
  • Add basic Hydra integration tests.
  • Getting deployment of query node for network launch to work.

Dependencies

There will be no working chain with a runtime for at least a few weeks, and even then, there will be nothing to power the mappings, because there has been no usage. This means that the schema modeller and mapping author has to work in the blind. Once there is a functioning runtime, the work can be continuously integrated into the network integration tests, which will have some relevant transaction scenarios. Before this is ready, the only other option is unit tests on individual mappings.

Current Status

We have some progress on separation of databases, and also some form of deployment works, but everything else is basically at zero.

There is some very valuable pre-existing schema references that would be of great value to writing the query node:

a) Here is a early draft of input schemas for the content directory: #644
They are not complete, and maybe slightly out of date with the underlying model, but a great starting point.

b) Here is a sketch of the API the Atlas team is expecting, roughly: https://github.com/Joystream/joystream/issues/824#issuecomment-653150085

Initial Division of labour

  • Arsen, Metin, Dmitrii
    • Implement content directory query node schemas+mappings This is a gigantic task, needs a lot of decomposition
  • Dmitrii
    • Separation of indexer and processor
    • Facilitate the introduction of query node into network integration testing infrastructure.
    • Add basic Hydra integration tests.
    • Getting deployment of query node for network launch to work.

Atlas

Team

  • Klaudiusz
  • Francesco
  • Bedeho

Work Scope

  1. The basic scope is described here, along with a temporary mocked query node API schema: https://github.com/Joystream/joystream/issues/824
  2. We are going to have a Jsgenesis hosted view count server, database and GraphQL API (for both read&write). We have thought about whether we should also attempt to stitch this API together with the query node API in a server free fashion client side, but we need not focus on this for now.
  3. In development mode we will continue to extend the API mocking we are currently doing in order to build and interact with the application, prior to the query node being ready. For now, a single scenario appears to work, but if we want to explore other cases, like failure & slow modes, or alternative media, we can expand this.
  4. All mocking related media assets will be hosted on a Jsgenesis server.
  5. We may want to update the Atlas UI in some way to allow it to be the landing page for joystream.org. It is not yet decided.

Current Status

  • Work on the basic UI functionality and API mocking is in a relative mature. The current status is reflected in the most recent: https://github.com/Joystream/joystream/issues/1120
  • Currently there is range of problems associated with different parts of the app. These need to be full enumerated and triaged in or out of the release. We also must identify which require input from a designer to properly solve.
    • Responsiveness
    • Errors handling
    • Loading handling
    • Non-functional design leaks
    • Non-clickable elements
  • We are also currently using offset+limit based pagination, but we will switch to using whatever Warthog is targeting, which appears to be the Relay standard.

Risks

Successful, and bug free, development, deployment and operation of Hydra is the biggest risk factor of this entire release. For example, there is an out of memory bug that was never fully accounted for, described here. For this reason, we should keep building on top of the mocked API as late as possible, at least it has become fully certain that, not only will the query node be ready and working well for us to rely on, but also that we will have time to do any inevitable API reconciliation that will be needed as a result of the currently mocked API not being identical.

Initial Division of labour

Klaudiusz, Francesco

  • Identify full list of problems with responsiveness, error handling, loading handling, design leaks.
  • Fix responsiveness, error handling, loading handling, design leaks.
  • Update mock API pagination style.
  • Reconcile mocked and used query node API with the actual API that will be provided by the stable query node. Read more about this under Risks.
  • Implement required changes to Joystream.org and Atlas, as determined later.
  • View count backend
    • define & validate requirements
    • define API
    • implement
    • tests
    • deployment
  • Telemetry
    • Define basic goals
    • Identify potential solutions
    • Implement: should be easy to turn on/off, change endpoints, etc.
  • Bedeho
    • Do a few full reviews of UI/UX issues to identify problems
    • Review outstanding lists of UI/UX issues and identify which require designer input, or which can be postponed.
    • Work with designers to solve any outstanding problems
    • Determine how Atlas should be integrated into joystream.org, and work with designers to make any required changes.

Pioneer

Team

  • Leszek

Work Scope

The general idea here is to not even attempt to reconcile Pioneer with the new content directory, it's not worth the effort given the complexity and pace of progress on Pioneer 2. This means a lot of stuff will simply be disabled, specifically

  • No more channel creation, listing, or publishing of any content of any kind.
  • No more viewing of actual content, either playback or browsing.

The media page can be re placed with a stats page that just shows a few key figures of importance, such as number of channels, videos etc, also perhaps lower level of abstraction, down to classes, entity counts, permissions, etc.

It probably is worth replacing the working group related logic in Pioneer, as we can pretty much 100% reuse what we have for storage now, as the system is identical.

Current Status

Nothing has been done.

Initial Division of labour

Leszek does everything.

CLI & Tooling

Team

  • Leszek

Work Scope

Low level interactions

Low level interactions means allowing initiation of individual extrinsics in the content directory. These operate at the data and permission model of the directory, which is much lower than concepts such as "video" or "episodic content" or "playlists". One way to think about it is as having direct access to SQL database, rather than through a high level API over that database. These interactions are still useful for doing low level tasks, such as creating classes, new schemas, updating permissions, and other operational and working group related activities. Given the current very simple model we have of curation, that is basically just marking content as curated, this can also be done with as single direct property value updating. The CLI should have some set of

We had an old standard for describing in JSON files the prospective changes to be made to the content directory, it is now stale as the data model and permission system has been altered. The very nice part about it was that it allowed people to share representations of complex changes, such as adding new schemas and permissions, have them validated by the tooling. It's also a practical way to provide the very rich input to the CLI itself, rather than having to type complex input in an interactive sequence. Some subset of these standards would be of great use to retain.

High level interactions

If you want to make it at all easy to publish content to a channel, then we may want to have an explicit command for this that integrates the interactions with both the storage and content directory systems, and which perhaps done some simple input validation on things to make sure image links and storage size is acceptable. An alternative would be to just make sure that there is a specific command for uploading to storage, and then requiring publishers to read a tutorial to understand how to put it all together. We should delay deciding until we know more about the pace of progress in the release.

Current Status

There has been some work by Arsen on a new standard and updating the tooling, but largely nothing has been done.

https://github.com/iorveth/joystream/tree/cont_dir_json_schemas/content-directory-schemas

Initial Division of labour

Leszek does everything.

Network Testing

Team

  • Mokhtar

Work Scope

We need to land an up front testing plan which explicitly covers what we attempt to get out of our testing. The main goal here is to extend the integration testing to encompass the query node. This is not only to make sure it works well in production, but it will also be critical for the development experience as well. Specifically, it will need to be adjusted in the following ways

  • Update to work with changed proposals
  • Updated to work with runtime upgrade
  • Updated to cover important flows in the new content directory, including basic class and entity creation, schema support, and permission related activities.
  • Update CI to only run specific scenarios and use prebuilt node&runtime when a query node branch is base of PR

Dependencies

There will be no working chain with a runtime for at least a few weeks, and even then, there will be nothing to power the mappings, because there has been no usage. This means that the schema modeller and mapping author has to work in the blind. Once there is a functioning runtime, the work can be continuously integrated into the network integration tests, which will have some relevant transaction scenarios. Before this is ready, the only other option is unit tests on individual mappings.

Current Status

Nothing has been done.

Initial Division of labour

Mokhtar does everything.

Deployment

Team

  • Mokhtar
  • Leszek

Work Scope

  1. Status server
  2. Telegram bots
  3. Storage system
  4. Polkadotjs library & examples

Current Status

Nothing has been done.

Initial Division of labour

Leszek

  • Polkadotjs library & examples
  • Status server

Mokhtar

  • Storage system

Manual QA

Team

  • Martin
  • Ben

Work Scope

The testing here should be targeting Pioneer, CLI and Atlas. Pioneer should be quite easy to test, as we are mostly removing. CLI should be a bit more involved, as there will be some new non-trivial features. Atlas will also be very new experience to test, and here we may need to pay some attention to different browsers and screen dimensions during testing. Currently Atlas has next to no automated testing.

Current Status

Nothing has been done.

Initial Division of labour

Not determined.

Community and Communications

Team

  • Martin
  • Ben
  • Bedeho

Work Scope

I think we should announce this network much sooner than the last one we did, I (Bedeho) will personally make sure that any branding production delay will not prevent this. Some guides or tutorials will probably need to be updated.

Beyond the normal tasks associated with communications, it seems like something on the community side should complement the new stuff here. However, that system is still in flux as of this moment. Given the lag time involved before we can start executing on this part of the release, that uncertainty is probably not a big problem at this time. But setting aside time to address and execute this should be accounted for now.

Current Status

Nothing has been done.

Initial Division of labour

Not determined.

Project Management

Release Manager

Bedeho

The release manager is responsible for tracking overall progress, detecting delays and course-correcting. Tracking will be done weekly in this issue

#1242

as described by the following methodology

#474

Release Branch

<missing>

Github Project(s)

We are doing everything in one project.

https://github.com/orgs/Joystream/projects/28

The existing Hydra and Atlas projects have been closed, and we can open new ones once we establish new major project specific milestones independent of this release.

Team Meetings

Existing Meetings Continue

Work on Hydra and Atlas has commenced outside of the normal release pace, as a result the work has been coordinated primarily through focused weekly team meetings that are tracked here

We will continue with these, as they have been very successful at keeping us on track, unless we detect

Biweekly(ish) Release Meetings

A release wide meeting will be organised semi-regularly, we could start at a pace of once ever 2 weeks to begin with. Experience has shown that, even when there is no obvious issues that need tackling, discussions often reveal issues and corner cases that have not been accounted for. We can aim for one team rep. being present, so as not to distract everyone. Log will be kept here:

#1241

@bedeho
Copy link
Member Author

bedeho commented Sep 7, 2020

This Hydra team meeting had conclusions with bearing on the plan, will need to be updated later.

Joystream/hydra#10 (comment)

@bedeho
Copy link
Member Author

bedeho commented Sep 8, 2020

The following two meetings have an additional bearing on the final plan

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant