Skip to content

Pioneer v1 explainer #1851

@bedeho

Description

@bedeho

Live v1 Product

https://testnet.joystream.org/

Purpose

The purpose of this explainer is to serve as a background reference for anyone new to understand what Pioneer is, and what the current software architecture issues are.

pic

Terms

This explainer is aimed at Blockchain/Polkadot/Substrate novices, hence the following terms are explained.

  • Substrate: A blockchain SDK that allows developers to build a standalone blockchain without having to think about consensus and networking, and only focus on the business logic of their use case.

  • Polkadot: A yet to be launched blockchain, based on Substrate, which focuses on allowing separate blockchains to securely interoperate.

  • Web3 Foundation & Parity: Web3 foundation is a non-profit tasked with financing and overseeing the development of Polkadot. They have contracted with Parity, which is a private for-profit company that has been tasked with building the Polkadot and Substrate software.

  • Polkadotjs: A collection of tools, interfaces, and libraries in javascript around the Polkadot project.

  • Polkadot apps: An example web app that is built on top of Polkadotjs, giving a basic interface to the base functionality of the Polkadot network.

  • Full node: A node in a blockchain network, Substrate or otherwise, which fully understands the rules of the given blockchain system, and continuously verifies that all rules are being respected.

  • Runtime: The application-specific business logic for a particular Substrate instance. This term is only really meaningful in the context of Substrate, not blockchains broadly.

  • Module: A (Substrate) module is both a software engineering and functional abstraction for how a Substrate runtime is organized. All runtimes consist of one or more finite modules, and the set of modules is static unless a full runtime upgrade is performed. Each module constitutes state machine with its own local transaction types, state (also called storage) and emitted events. Modules can make calls to each other when the system runs. The purpose of the abstraction is to make runtimes composable of reusable subsystems.

Description

Pioneer is a web application that interacts with the Joystream blockchain. The purpose of the application is to serve as a lightweight entry point for users to interact with the blockchain. Very little has been invested in the usability of the application, as the primary target audience is highly technical, and also incentives to endure the hurdles, as they are often engaging in paid roles on the active testnet. It started out as a fork of the Polkadot apps application, of which there is a hosted version pointed at the current Polkadot testnet here here.

Purpose

In the past, and leading up to today, this application has had the following primary goals:

  • Community recruiting: Pioneer is a hosted web application which allows the user to easily inspect and interact with our current system and community. This low friction, no-install, characteristic is essential. Actually seeing a working product live is a very effective way of conveying to prospective community members what it is we are actually building, how it will work in practice, that other people are currently part of the movement, and that we are likely to actually deliver on our goal. These are all considerations that could motivate someone to start participating in our community.

  • Community training: Using the application to participate in a live testnet allows community members to understand what is involved in participating in the different platform roles. Different roles have different associated requirements, rewards and risks, and participation is the best way to discover where one fits in, and how the different roles interact. This learning process, both at the individual and community level, provides critical training for the future, when the community will autonomously operate and develop the live platform.

  • Get feedback: Receiving feedback from users frequently, in order to guide our subsequent investment in protocols, products and policies, is critical for at least two reasons. Firstly, while we broadly know what we want to enable, and what our main constraints are, there are still many ways in which substantive technical and policy details of how the system will work once live is yet unknown. Second, when our products run in production, they are exposed to more ecological technical and social constraints. We cannot substitute for the authenticity level in well designed testnet deployment and policy withy in-house testing or validation process.

Structure and function

The following is a brief overview of the structure and function of the application.

  • The current codebase is based on a fork of the Polkadot apps and adapted to have support for additional Joystream specific functionality.

  • The application talks to a trusted Substrate full node instances operated by Jsgenesis. This node exposes a standard Substrate JSON-RPC interface which is used for

    • issuing transactions

    • reading blockchain state

    • subscribing to events

  • User keys, which are used for transaction signing, are generated and stored client-side in local storage.

  • The apps application is based on a suite of javascript base UI and API libraries, collectively referred to as Polkadotjs.

Features

These features are available as of Rome launch (imminent)

  • users voting in council elections.
  • council being able to vote on proposals.
  • a forum.
  • a membership registry, and a member profile page for each member.
  • a media section for viewing and publishing digital media (audio and video).
  • a list of current storage providers.
  • a working group section for applying and getting hired as a content curator.
  • other static sections that had to do with supporting information and relevant links to our hosted instance of Pioneer.

Probably missing lots of stuff here, but this is the gist.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions