Skip to content
This repository has been archived by the owner on Jul 29, 2024. It is now read-only.

Component Wiki Docs Template (WIP) #22

Open
avive opened this issue Sep 22, 2019 · 1 comment
Open

Component Wiki Docs Template (WIP) #22

avive opened this issue Sep 22, 2019 · 1 comment
Assignees
Milestone

Comments

@avive
Copy link
Contributor

avive commented Sep 22, 2019

Design Wiki

  • High-level component overview
  • What is the component main role in the Spacemesh full node software?
  • What are the main service(s) that the component is designed to provide to other components?
  • Which other components use this component and what services they use? Give one example.
  • What protocols / algorithms is the component design to implement? Link to research papers / wikipedia / etc.
  • Document any custom algorithm that the component should implement. e.g. modified hare.
  • What is the component NOT designed to do?
  • What services it assumes to be provided by other components for it to provide its service?
  • Flow chart of the component main algorithm(s) here. e.g. hare protocol flow
  • Main protocol sequence diagram
  • Context: How did we end up with this design and how it evolved since the project started?

Implementation Wiki

This is high level summary of information. Not go-docs we should have for specific types.

  • What are the API(s) provided by the component? Which public types provide the API? Which go interfaces define the API(s)
  • For the main types and interfaces, which concern does each type implement and what abstractions is used?
  • What is the main integration test that shows how to use the component from other components?
  • Point to code in another component that uses the component main API.
  • What are the main data structures used in the implementation?
  • What are the main dependencies used by the component in the implementation?
  • What are the known implementation limitations and tradeoffs - what can be improved in the future?
  • Point to the component unit tests
  • Which type can use more unit and integration tests? We want to get to good coverage and if we document this we can direct contributions to write these tests.
  • What are the main crypto primitives that the component uses in the implementation. e.g. eds25519, bls, etc...
  • Link to components go-docs
  • Control flow sequence diagram when applicable

Shared Types

  • What are the main types which are shared between the different components?
  • What is their interface?
  • e.g. blocks

@lrettig @zalmen @liathoffman

@avive avive added epic and removed epic labels Sep 23, 2019
@avive avive added the readiness label Oct 2, 2019
@lrettig
Copy link
Member

lrettig commented Jan 9, 2020

I'm now tracking this at https://github.com/spacemeshos/protocol/projects/1. Feel free to close this issue in favor of that project if you like, or else keep it open if there's more in scope here than just the initial set of wiki docs (e.g., more code documentation).

@avive avive added this to the TN2 milestone Feb 11, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants