Giter VIP home page Giter VIP logo

swarms's Introduction

Status Swarms

Swarms follow a structured approach to developing features. These include:

  • Research
  • Specifications / Planning
  • Implementation
  • Communication / Post-mortem

Getting Started

For new swarms:

For existing swarms:

  • Go to the file in Github
  • Click edit and commit

Active swarms

SNT Utility

Essential

Teams (fallback for responsibility)

swarms's People

Contributors

0xc1c4da avatar 3esmit avatar adambabik avatar adriacidre avatar andytudhope avatar arash009 avatar b00ris avatar cammellos avatar ceripower avatar chadyj avatar churik avatar corpetty avatar debragail avatar divan avatar flexsurfer avatar goranjovic avatar gravityblast avatar guylouis avatar jacqueswww avatar jakubgs avatar jeluard avatar mandrigin avatar martinklepsch avatar maxhora avatar naghdy avatar oskarth avatar rachelhamlin avatar richard-ramos avatar vkjr avatar yenda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

swarms's Issues

GitPivot - engage git repositories into DAOs

Preamble

Idea: <to be assigned>
Title: GitPivot
Status: Draft
Created: 2017/11/22

Prototype

Summary

Incentivize development

Incentivize open-source development by providing tools to fairly distribute donations and bounty contributions.

Proof project ownership

Who owns an open-source project that have contribution of hundred of developers?
Who should control the licensing or accept changes?
Through tokenizing contributions users can proof ownership of project and use it in a voting contract.
To help, we can have a special software licenses stating that the source code owners are expressed in an ethereum smart contract.

Vision

Configurable reward modes by project

For a project being accepted by GitPivot it must have a file in root of tree called .gitpoints with specifying user-agent: to * or gitpivot.

Example:

user-agent: *
commits-reward: words
issues-reward: pulls, comments, commits, reactions
pulls-reward: comments, commits
comments-reward: reactions
reactions-reward: heart, +1

GitHub User Ethereum Address

To control GitPivot users need to link their GitHub user login to an Ethereum address.
User calls GitPivot and passes his username and the gistid, GitPivot registers users by loading gistid file called register.txt under user login. This file must contain only the Ethereum address who made the register call, starting with 0x.

Mint tokens for contributions

Any repository that enabled commits-rewards will have tokenization enabled of the contributions and a donation bank.

The available modes are lines or words that respectively mint tokens by added lines or added words. Custom reward modes are planned.

GitHub Oracle load commits in batches, and accept continue in case of huge commit trees (+4k commits).

Distribute project donations to contributors

Repositories that enabled tokenizations of contributions also have a DonationBank that can be withdrawn by the Project Token Holders in the start of every epoch, called locked period, where transfers and minting are blocked.

Reward bounties by contribution in GitHub Issues.

Issues may be tracked by GitPivot, accept payments, depending on the .gitpoints configuration, positively reacted posts and merged pull requests/commits generate points that allow issue contributors to withdraw a fair share of balances related to the issue.

Network Features

The elements of the system can be used in other descentralized applications and deployed in other networks, extending the features of SOB.

Code wage contracts

Different types of contracts can be programmed to automatically buy project tokens, under arbitrary rules, such as a list of users with a maximum amount per day. This can be part of other descentralized application or as a custom contract.

Code ICO

In replacement of selling coins of a promised project, developers can create the tokens their project need by code contribution and get paid for their development selling their development tokens.
The ICO contract might have milestones that realease a share of a prealoccated token source to project token holders.

Oraclize & GitHub API

Issues rewards and commit points are discovered reading GitHub API through Oraclize computation data source, that reads all issues or branch commits at once and return to contract points and authors.
Updates can happen once in a month, or daily, anytime, by anyone.

Swarm Participants

  • Lead Contributor: @3esmit
  • Testing & Evaluation:
  • Contributor:
  • Contributor:
  • UX (if relevant):

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Status Beta by March (Dogfooding)

Preamble

Idea: DEV#26
Title: Status Beta
Status: In Progress
Created: 2017-11-20
Replaces: PROC#019

Summary

This issue is a meta-summary of some ideas, goals, and considerations around the beta release of Status. The goal is to

Swarm Participants

  • Lead Contributor: Oskar
  • Testing & Evaluation: Anna
  • PM: Chad
  • UX (if relevant): Andrei

Product Overview

The vision for Status is to drive mass-adoption of Ethereum.
As a first step, the beta will focus on shipping these core features:

  • Send and receive encrypted messages, smart contracts, and payments.
  • Browse, chat, and interact with decentralized applications.
  • Store and control crypto-assets with the built-in Status Wallet.

Product Description

The result of the beta will create the leanest product that can validate the vision outlined above in the pursuit of exposing new users to Ethereum and driving the adoption of its technologies. The beta should do just enough to showcase each core foundation, validate our assumptions, and inform future work.

Following from the stated goals of Status, the beta should at a minimum be based on a chat form factor that facilitates interaction with messaging, payments, dapps, wallet-based crypto-assets. We intend to underpromise and overdeliver.

These goals are at a high level, and rather than listing all the required features each Swarm will find their own way to meet these goals so that a user can:

  • Send and receive messages
    • With offline and push notification support
  • Send and receive payments
    • Using ETH and at least SNT
  • Browse and interact with dapps
    • From our curated list, or by adding a URL
  • Store assets in the wallet
  • Utilize a chat form factor
    • Simplify the UX and orientate users on clear actions and expectations (doc looking at simplified features and UI)
    • Remove redundancy and consolidate chats, contacts, and discover into one tab

Additionally there are core support functions, such as signup, settings, etc. These support the core features.

Also there are technical goals such as performance, security that need to be considered.

And importantly, the goal of the beta is to ship within an accelerated timeline. Done is better than perfect.

The beta is NOT about extended functionality on top of the core foundation. Instead the beta aims to enable these additional layers later, such as SNT use cases, a sticker market, DApp directory, teller network, group chat etc. All of these will rely on the chat/payment/dapp/wallet foundation established by the beta.

We should not work on something that isn’t explicitly outlined as fundamental in the Status white paper vision and goals.

To support these anti-goals some features will be (temporarily) removed from the current build as they are not explicitly enabling the core vision.

Audience

Whilst the long term vision of Status is driving mass-adoption of the app and Ethereum, the beta is not for everyone. Marketing has focused the initial target groups which are DApp developers, crypto-traders, and tech enthusiasts. These are users that will have some familiarity with blockchain, cryptocurrency, and privacy.

Requirements & Dependancies

Minimum Viable Product

Goal Date:

Description:

Dates

Goal Date:

Description:

Testing Days required:

Success Metrics

Copyright

Copyright and related rights waived via CC0.

SOB Organisation dashboard

Preamble

Idea: #47
Title: SOB Organisation dashboard
Status: Draft
Created: 2017-11-27

Summary

A simple dashboard view for organisations that post bounties so they can manage their bounties and track their progress.

Vision

As the admin on an Organisations repository on GitHub, I would like to have a dashboard view on Status Open Bounty, so that I can view a summary of my bounty activities, and manage their progress all through a central point.

The Orgainsation should also be able to use the dashboard as a way to take them through the steps to post their bounties - step by step guide, and they can see when they are waiting on SOB manual whitelisting etc.

Swarm Participants

  • Lead Contributor:
  • Testing & Evaluation:
  • Contributor:
  • Contributor:
  • UI/UX: @denis-sharypin

Requirements

--Summary view--
List of active bounties
List of closed bounties
Total pay out
Highest contributor

--Functions--
Close the issue and retrieve funds
Pause an active bounty for a time period
Reduce payout?? (Just a thought. This use case might have to be done by closing and creating new bounty)

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Wallet: portfolio management and calculations (long-term)

@oskarth commented on Thu Sep 21 2017

User Story

As a user, I want the Status wallet to show how all assets in my portfolio are doing, so I know what my financial health is and it can inform financial decisions.

Description

This issue is too big as it stands, but I'm using it as an opportunity to capture and clarify how I envision the wallet portfolio calculation working. I'll do this by way of example.

As we progress with these capabilities and we have a better understanding of the problem space, this issue can be closed. There is thus no specific deliverable or end in this issue, other than what has been described in the user story above.

A portfolio consists of multiple assets. Each assets has some valuation in a certain currency (henceforth USD, for simplicity's sake). This valuation fluctuates from day to day. The amount a user has of a certain asset also fluctuates, but usually not on a day to day basis by that much.

As an end user, if I invest $100 USD in crypto and this includes ETH, SNT, etc I want to know roughly how much my portfolio is worth in USD if I were to liquidity it. I also want to know how I'm doing - is my portfolio going up or down in terms of USD? Of course, USD is arbitrary and it could be measured in ETH, BTC or number of second-hand Saabs 93s.

Example 1 - Not all asset allocations are equal

I own two assets, A and B. 10 A and 10 B. One A is worth $100 and one B is worth $10. The whole portfolio is thus worth $1000+$100=$1100. In terms of portfolio composition, 90% of my money is in A. If A goes up 10% and B down 10%, my total portfolio, valued in USD, has gone from 1100 to 1100+90=1190. This represent a 8% increase in portfolio value.

Example 2: Day trading gone wrong

Same portfolio but I sell my assets A before the market starts moving and don't capture any gains. I thus have $1000 that I liquidated from A, and when market closes (or 24h later, say) B has gone down 10%. After 24h my portfolio value is 1000+90=1090, which represent a 1100/1090 a 1% decrease.

This case is a bit tricker since we don't necessarily have all the trading data. Thus it makes sense to assume a static portfolio and only compare last 24h with now. At least for now.

Example 3: Starting from nothing

If I don't own any assets, or, equivalently, only own USD (or whatever you measure portfolio value in), then the portfolio value never changes. It thus makes sense to say this represent a 0% (or -%) change on any time horizon.

Example 4: A new kid on the block

A new asset C is introduced and we don't have any pricing information on it, but it still part of the wallet. I suggest we visually indicate this by greying out that asset somehow, to make it clear that it's not part of the portfolio calculation. This seems like a design question though.

Those are all the scenarios I can think of now, on a high level.

cc @jeluard @yenda

Remove swipe-through navigation and introduce a tab-based screen hierarchy instead

Preamble

Title: Remove swipe-through navigation and introduce a tab-based screen hierarchy instead 
Status: Draft
Created: 2017-11-22

Summary

Remove swipe-through navigation and introduce a tab-based screen hierarchy instead.

Vision

Tab-based screen hierarchy will make it possible to use swipes inside the screens:

  • Swipe a chat row to quickly access actions such as "delete chat"
  • Swipe a token row to access actions such as "delete" and "hide"

w2

Swarm Participants

  • Lead Contributor:
  • Testing & Evaluation:
  • Contributor:
  • UX: @andmironov

Requirements

  • Prepare more use cases that will be possible after implementation of this feature. I guess it would be useful in Discover screen.

Copyright

Copyright and related rights waived via CC0.

Status Open Bounty end-to-end automation

Preamble

Idea: DEV#0040
Title: Status Open Bounty end-to-end automation 
Status: In Progress
Created: 2017-11-23

Summary

In order to reduce time spent on regression testing we should automate the testing

Vision

  • All main use cases should be covered with tests
  • All tests should run against each successful build
  • Test results should consist from detailed steps, status, failure message and a video of a test run
  • Results should be linked to a PR, or to Slack channel

Swarm Participants

Requirements

  1. Status Open Bounty should build on Jenkins

Goals & Implementation Plan

Minimum Viable Product v1

Goal Date: 2017-11-28
Description:

  1. Infrastructure for test runs is created
  2. A test for adding bounty to an issue is created
  3. Jenkins automation job is running after each successful SOB build

Minimum Viable Product v2

Goal Date: 2018-05-02

Description: define actions needed for future automate tests

  • check, that issue with deployed contract is shown in "Open bounties" tab
  • automate fork repo
  • automate creating PR
  • define function for merging PR
  • create Readme with full setup/configuring instruction

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Allow easy status-go consumption from nodejs environment

Idea: DEV#002
Title: Easy status-go consumption from nodejs environment
Status: Draft
Created: 2017-11-08

Summary

A simple nodejs module encapsulating all ethereum interactions.

Vision

Status accesses ethereum via a go module built on top of ethereum. This go module is then used through Java and C bridges.
As we are considering using nodejs based platforms (notably electron for status-desktop) it makes sense to offer a nodejs module.

NOTE Mobile support, while desirable, is explicitly out of scope. For this reason existing glue code in status-go will have to be kept for backward compatibility.

Swarm Participants

Requirements

Easy nodejs integration

As a nodejs app writer I want to integrate with status-node-ethereum by simply adding the proper dependency in my package.json.

web3 (used by status-react, webview (for DApps) and inside jails) will rely on a Web3 provider offered by the node module. Other internal APIs can be provided differently depending on implementation convenience.

import Web3 from 'web3.js';
import Statusgo from 'node-status';

const status = new StatusProvider({type: "native", id: "ropsten"});
const web3 = new Web3(status.attach());

web3.eth.doSomething();

Easy testing / experimentation

A simple REPL could offer a great platform for quick experimentation and testing. This is similar to what geth -console does.
NodeJS offers ample libraries to facilitate this.

./status-node-ethereum
web3.version;
> "1.0.0"

Unified API (mid-term)

As a go developer I only have to manage a single interface for status-go consumers.

Goals & Implementation Plan

status-react team will be the main consumer of this API so they should provide input on what is expected. status-go team is responsible from the technical implementation.

Security is our top priority. In particular no internal capacity is leaked to the existing JSON-RPC interface.
A strong focus on performance will be put. There should be little overhead in using this approach compared to the existing one (say .1ms extra). While mobile support is out of scope it is important to keep it in mind.

Particularly a in-process implementation is favored (everything is contained in the library).

MVP

Let's constraint work on this to 1 week: we should either have a working implementation by then or very concrete steps on how to achieve this.

A simple module that can be loaded and demonstrates viability of the bindings technical solution.

import Web3 from 'web3.js';
import Statusgo from 'node-status';

const status = new StatusProvider({type: "native", id: "ropsten"});
const web3 = new Web3(status.attach());

web3.version;

Goal Date: 2017-11-17
Description: a simple functional nodejs module

Iteration #1

status-desktop (built using electron) will be used as first consumer of this API. A simple version of chat should be built on top of status-node-ethereum to validate the viability of the approach.

Offer a Web3 provider
Expose management APIs: admin, debug, personal to the extent they make sense.
Expose status API (https://github.com/status-im/status-go/blob/develop/lib/library.go)

Goal Date: 2017-11-24
Description: the final nodejs module

Copyright

Copyright and related rights waived via CC0.

SOB activity feed

Preamble

Idea: #49
Title: SOB activity feed
Status: Draft
Created: 2017-11-28

Summary

The current "Activity" tab is confusing and feels disconnected and disjointed from the "Open Bounties". These should be integrated somehow so you can track activity against each Bounty and be able to easy follow its progress.

Vision

As a developer looking for bounties to work on, I want to have a uniform view of all bounties, both current and closed, so that I can monitor activity against them, and look at historical bounties for comparison.

As a developer working on a current bounty, I want to easily track its progress, so I can see if anyone else is also working on it or submitted a claim, and any changes to the bounty though out its life, including increase in value.

Swarm Participants

  • Lead Contributor:
  • Testing & Evaluation:
  • Contributor:
  • Contributor:
  • UX (if relevant):

Requirements

Integration of the activity feed into the bounties. This may also mean we need a way to capture and display closed bounties

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Cryptoeconomics solutions for SOB state-change gas requirement

Preamble

Idea: <to be assigned>
Title: Cryptoeconomics solutions for SOB public adoption
Status: Draft
Created: 2017-11-14

Summary

Surround SOB state-change with cryptoeconomics incentives using bounty prize to pay deploy.

Vision

Status Open Bounty gas expanses are currently being paid by Status, this is done because repository owners without any Ether can start opening bounties.
Status will not be able to pay for this service forever, however we replace it by a cryptoeconomic solution around the state-change of SOB.
The simpliest implementation would be:

  • at first donation, whatever is ERC20 or ETH, the first donator will pay for the bounty initialization;
  • and the bounty winners pay for their withdraw;
    • or makes a signed message allowing other to make the withdraw to his account by giving some part of the prize to pay gas cost + incentive.

Swarm Participants

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Testing cluster

Preamble

Idea: 51-test-cluster
Title: Testing cluster
Status: Draft
Created: 2017-11-29

Summary

Provision test cluster consisting of Status nodes running the simulation of real user behavior. Setup high-level metrics monitoring and track changes between releases.

Vision

The idea stems from #22 (tools for diagnosing performance regressions). One of the main challenges with it is to simulate real-world load and currently, we have no way to do this. Analyzing performance on a single device is also prone to inaccurate results due to the high variability of hardware, software running in the background and other conditions. We also have no easy to way to gather metrics we want from devices.

This leads to the idea of provisioning a cluster consisting of nodes (status-go, real devices or both), including boot nodes. Cluster may run on its own test network or on existing test network (Ropsten). Each node in the cluster shall be instrumented and configured for metrics collections. Infrastructure for metrics gathering, storing and display should be set up.
rand_graph

Using graph visualization tools (like Graphana) it'd be possible to see statistically sound performance measurements, pinpoint changes to release/version changes and easily identify regressions.

screen-shot-2017-09-19-at-12 32 38

Think about this cluster as a Status network playground, where you can deploy, say, 30% nodes with a new change and easily see the difference in performance metrics against stable version. It also enables further possibilities for data gathering and exploration. Example: by collecting stats about each incoming and outgoing whisper message, we can visualize Whisper protocol behavior which may help to build intuition around it and help to debug/develop future versions of the protocol.

Swarm Participants

  • Lead contributor: @divan
  • Testing & Evaluation:
  • Contributor:
  • Contributor:
  • UX (if relevant):

Requirements

  • There is a cluster provisioned and deployed using available cloud providers
  • Deployment scripts and tooling are well documented, codified (i.e. terraform/packer) and understood
  • Core team members have clear understanding how to deploy Status build to the cluster
  • Status code is instrumented with metrics and Core team have clear understanding how to add new metrics if needed
  • Metrics gathering infrastructure is designed and deployed (this includes metrics collection, storage and visualizing software)
  • Real-world usage simulation is designed and implemented, so each deployed node automatically starts "behaving as a user"

Goals & Implementation Plan

Implementation of this idea has three roughly independent parts that need to be researched, designed and implemented:

  • cluster infrastructure
  • metrics part (changes to code and infrastructure)
  • usage simulation

Cluster infrastructure

This part should start by evaluating the viable size of the cluster we want to have: 50 nodes, 100, 1000, dynamic? Then, which nodes cluster should consist of: only status-go nodes, real devices/simulators or both.

Then find the best software solution for that. This part requires an understanding of the ethereum discovery process. Solutions like Docker Swarm might be enough, but it might be possible that we'll want to simulate real network topology, for which we'll need to use specialized simulators like Mininet. Each node should probably be isolated using containers, but any isolation alternatives can be evaluated of course. That's unlikely that cluster can run on the modern laptop (it would be awesome though), so the cloud provider should be chosen, whichever easier to work with (AWS/GCP/DO, I guess).

Once the vision of how the cluster should look like is clear, provisioning scripts and tools should be implemented and designed to be developer friendly, with a high level of automatization (again, terraform is probably the right way to go). Ideally, we should be able to deploy as many identical clusters as we wish without any hassle.

In case if cluster runs on the private network, it should setup own bootnodes as well.

Metrics

As the main purpose of having test cluster is to gather data and observe behavior at scale, the code needs to be instrumented to provide those metrics to the metrics collection infrastructure. Here we have two connected parts: code instrumentation and setting up metrics collection infrastructure. Ideally.

Metrics instrumentation

Developers might want to add custom metrics apart from obvious things to measure — CPU, memory, I/O stats, etc. Go code would probably want to report number of goroutines, garbage collection stats, etc, plus many custom things like the number of Jail cells, incoming and outgoing RPC requests, etc.

The task here is to make code instrumentation to be as friendly to the developer as possible: it should be easy to add and test new metrics with the minimal learning curve. One of the examples of such easy approach is expvar Go stdlib package, which might work perfectly for the pull model of metrics. Which model to use (pull/push) is a subject to investigate.

Finally, the instrumented code should not go into production. It can be implemented via build tags, or simply by mocking it with dummy NooP metrics sender, which doesn't change resulting binary code.

Metrics infrastructure

This infrastructure should be a part of cluster deployment, so if there are many clusters, each has its own metrics dashboard and tooling. Essentially it involves metrics collection code, storage (for some period of time) and visualization software. There currently a lot of software to choose from, including Prometheus and Graphana, so the best tools should be chosen here.

Then deployment scripts and code should be implemented. Ideally, it should be (almost) zero configuration for nodes.

Usage simulation

This part consists in developing ways of automating user interaction with Status node and researching of real-world user behavior. First one is more or less simple — provide API to talk to the node, and make it do stuff (send messages, create chats, use dApps, send money, etc). The second one is trickier because effectively it's about simulating the whole economy and humans behavior — simulation code should decide who sends the message to whom, how often, how much money to send, how to use dApps, etc.

Obviously, perfect real-world simulation is unlikely to be achieved, we just need the simulation to have two properties:

  • sequences of user actions generated should be close to the real world usage (we might grab them from TestFairy sessions)
  • probability distributions should be close to what we think is a real-world case (Poisson distribution for independent actions, gather knowledge about real-world usage and improve simulation as much as possible)

Each simulation agent could be independent or controlled by a single node in cluster — subject to investigation, which would be a better approach.

Minimum Viable Product

MVP should consist of:

  • a simple cluster of <10 nodes, possibly running on the laptop
  • three metrics reported and visualized in the dashboard: CPU, memory, Goroutines (i.e. one custom metric)
  • naive user behavior simulation — login, add a new contact, send some message, receive messages, sleep, repeat.
    Goal Date: 2017-12-25 (Xmas!)
    Description: MVP

Iteration N.1

  • increase number of nodes to 100
  • setup a cloud infrastructure if needed to support this number
  • setup a metrics infrastructure for the cluster in the cloud
    Goal Date: 2018-01-20 (adjusted for winter holidays in mind)
    Description: Move to the cloud

Iteration N.2

  • evaluate and develop user simulation strategy and tooling
  • work on developers experience — libs & docs
  • add more metrics and better visualizations (including net topology, for example)
    Goal Date: 2018-02-10
    Description: Make it candy

Supporting Role Communication

Copyright

Copyright and related rights waived via CC0.

Discoverable public chats

Preamble

Idea: DEV#00
Title: Public chat discoveries
Status:  WIP 
Created: 2017-11-13
Requires: #8 

Summary

Allow public chats to be discoverable so that people can join them.

Vision

Where we are at the moment:

  • All public chats can be joined if the user knows their exact name/identifier
  • But they are not discoverable - instead the public chats are hardcoded in Discover screen: status, ethnews, ethereum and devcon.
  • In addition, there is a number of open issues and bugs with regards to public chat functionality (to-do add links to issues)

Where we want to be:

  • Public chats are discoverable and ranked according to their popularity
  • Users can see the number of participants in discovered public chats (allowing for some latency)
  • Public chats are reasonably bug free

Swarm Participants

  • Lead Contributor: @goranjovic
  • Testing & Evaluation: TBD
  • Contributor: TBD
  • Contributor: TBD

Requirements

  • Every app node needs to broadcast a list of all public chats currently open on that account to all its contacts.
  • Those contacts will broadcast its own open public chats and any other chats they received.
  • All public chat discoveries are stored in local database with public key as the primary key and a string array as the list of public chat identifiers.
  • Then those public chat discoveries can be aggregated by public chat identifiers and we can have a list of most popular public chats by number of participants.

Goals & Implementation Plan

It is recommended that #8 is implemented before this Idea, so that Discover is in a consistent state before we add any new feature.

Minimum Viable Product

TBD

Goal Date: TBD
Description: TBD

Iteration 1

Goal Date: iteration sign off + 2 weeks
Description: Discoverable public chats

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Structured way to manage the requirements of an idea

Preamble

Idea code: PROC#006
Title: Know what to do
Status: WIP
Created: 2017-11-10

Summary

Structured way to manage the requirements of an idea

Vision

Status builds its set of tools and services around individual
ideas. While these ideas draft a larger vision they will lead
to individual user stories and requirements. To ensure proper
realization and quality assurance these need a common agreed
way how to manage them. Here process and documentation have to
be commonly usable, tracable, and induce only few overhead.

Swarm Participants

Lead Contributor: @themue
Testing & Evaluation: (tbd)
Contributors: Anyone interested in proper requirements (tbd)

Requirements

Typical requirements engineering tools are powerful, but also
expensive, seldom prepared for distributed usage, and often
bloated. A pragmatic approach will be around GitHub as our
already used tool.

Here an outline of first ideas:

  • Each new idea as issue first in repository ideas as we do today
  • Two directories in ideas
    1. /active for active ideas
    2. /archive for archived ideas
  • In case of an acceptance of a new idea creation of a directory
    inside of /active based on the idea code (e.g. .../dev-001)
  • In idea directory three standard files
    1. README.md containing and also referencing the issue
    2. roles.md listing and describing the participating roles in this
      idea (stakeholders, implementors, actors, etc)
    3. glossary.md listing relevant terms for this idea
  • In idea directory two standard directories
    1. /user-stories for the user story files
    2. /requirements for the concrete requirements
  • In user stories directory one file per user story named like us-001.md,
    ID individual per idea
  • A user story document contains
    1. The ID to make it easily addressable (user story 001 in idea
      dev-001 could be referenced as dev-001/us-001)
    2. A name
    3. A description
    4. One or more triggers for this use case
    5. A list of actors (see roles.md above)
    6. Pre- and post-conditions
    7. Regular and alternative flows as simple text lists
    8. Optional exceptions and remarks
  • In requirements directory one file per requirement named like req-001.md
  • A requirement document contains
    1. The ID
    2. A description
    3. A fit criteria
    4. A priority classification matching RfC 2119
    5. Optional lists of dependencies, conflicts, or links to supporting materials

Material about a Lightweight Requirements Engineering is currently in progress
and will follow. Changes have to be done in branches and merged after pull request
and review by the lead contributor. She also has to ensure that the scope of
the PR is only inside the according idea.

Goals & Implementation Plan

Minimum Viable Product

So far this draft is only very rough. Together with more material it has
to be discussed, improved, and specified. Also the role of swarm leads
has to be defined.

Goal Date: 2017-11-24

Iteration 1

Outlined and agreed process has to be documented in our wiki and introduced
to the whole team.

Goal Date: 2017-12-08

Iteration 2

Implement scripts allowing to create reports on the current set of issues.

Goal Date: (tbd)

Copyright

Copyright and related rights waived via CC0.

Multi wallet support

Idea code: DEV#042
Title: Multi wallet support
Status: Draft
Created: 2017-11-23

Summary

Multiple wallet management

Vision

Status provides a comprehensive wallet allowing to manage your main Status ethereum address.
As a user I want to leverage this wallet to manage other addresses.

We will also consider if switching address should also impact other status features (DApps browsing, bot usages, ..)

Swarm Participants

Goals & Implementation Plan

Wallet switching address

New addresses can be added and browsed in the wallet. All existing features (browsing funds, access to historical data, send/request funds) are functioning.

Abstraction for external wallet access

Status must be able to interract with hardwallet and other hardware wallet. Consider how this impact our current wallet abstractions.

Goals & Implementation Plan

Minimum Viable Product

A new address can be added and switched to. All wallet features are functioning.

Goal Date: To be defined
Description: any ethereum address can be used in wallet

Iteration 1

Decide how switching address impacts other Status features

Goal Date: To be defined
Description: decision on how address switching impacts Status

Iteration 2

Identify specific changes needed to interact with hardwallet

Goal Date: To be defined
Description: hardwallet can be used in Status wallet

Copyright

Copyright and related rights waived via CC0.

Status issue curation and communication by bounties

Preamble

Idea: PROC010
Title: Status issue curation and communication by bounties
Status: Draft
Created: 2017-10-11

Summary

As part of scaling Status, we use Status Open Bounty. To use it effectively we need to curate issues, put bounties on them, and ensure proper communication with newcomers.

Vision

We are already doing this work, and since we want to continue doing it we should formalize it into a swarm. This will probably require high commitment from some people (QA, Community) and low commitment from a larger number of core developers.

We want to ensure we always have a bunch of issues available for people who want to contribute. These should be more than just translations, and vary in bounty size.

Specifically, Status Open Bounty as a standalone project is out of scope for this. This is about us using Open Bounty for status-react, status-go et al. issues, although there's likely to be some overlap.

This is a process, similar to how we do code reviews and QA now, that we want to install in order to scale Status. It requires:

(a) Curation of issues. Not all issues make for great bounties. It is particularly important issues are well-defined in terms of acceptance criteria, and ideally shouldn't require too much context, and no special permissions. They should also ideally not be time-critical, as these issues are best done by core contributors working full-time in dedicated swarms.

(b) Ongoing communication with developers. We want to make sure they get a warm welcome, and that we help them along the way. Additionally, if a bounty issue has been open for a long time we should figure out why and how we can change this. We also want to increase repeat contributors.

Both of these activities and the swarm as a whole has an eye towards improving our two core metrics:

  • monthly active contributors
  • daily transacting users (of SNT)

Swarm Participants

Requirements

3 core contributors, 2 from community and one from QA. 1-2 devs from both status-react and status-go to help create, edit and otherwise curate issues just 5hrs/week.

Goals & Implementation Plan

  1. Channel created with initial members.
  2. Create guidelines for good issues to bounty for devs, QA, and community.
  3. Curate ~10-20 issues in each repo initially (by 22/11/2018).
  4. Iterate on feedback process to improve flow and document in wiki (along with fixing the current QA docs there, which Anna is doing).
  5. Figure out useful ways to pull data from the db into current spreadsheet in order to automate as much as possible, without losing personal touch that community requires.

Minimum Viable Product

Goal Date: 2017-11-19
Description: A swarm with Slack channel and instructions/flows set up for proposal of bounty issues, creation of bounties, testing etc.
Labelling system on issues so that there is an easy flow from developers -> QA -> community and back.

Iteration 1

Goal Date: 20/11/2017
Description: Get access to DB so that we can pull the data we need on contributions. Set up automated processes for creating, managing, accepting and confirming bounties. Create Open Bounty Twitter Bot.

Iteration 2

Goal Date: 06/12/2018
Description: Discuss with @tpatja the issue.updated event and whether we can access that from the DB - still no answer there.
We have already started a GH project to track issues using a kanban board to limit the co-ordination and communication costs internally. We need to make sure everyone is using this and that it is working as expected.
Keep on gathering data and providing to Jonny for analytics and blog posts etc.
Co-ordinate wth Arash to get more Riot bounties in, as well as onboard other organisations. This will also mean helping with basic filtering of issues on SOB (#48) and co-ordinating with @3esmit and @tpatja to see when SOB can implement an admin dashboard, allow multiple contributors to a PR, allow multiple admins to manage and confirm payouts, and set time limits on bounties.

Iteration 3

Goal Date (start): 05/12/2018
Goal Date (end): 01/03/2018
Description:
Track actual metrics to improve our understanding of how well this swarm is achieving its goals.

  1. Automation of bounties!! We need to make it so that people can simply assign a size label to their bounty and have it automatically funded from a (super) hot account that they only maintain a small balance in and top up every so often, rather than manually funding each and every bounty. This has been a request from a number of projects, most notably Aragon, who have actually already written a bot for us: https://github.com/aragon/autobounty

  2. 10% week over week growth in available issues for all Status repos, as well as in status-go and status-react independently. Currently 11 bounty issues in status-react and 5 in status-go. Do this for 3 months and we are at 30x, then re-evaluate since we might hit on financial limits.

  3. 10% week over week growth in new contributors for all Status repos, as well as in status-go and status-react independently. After 1 month of real tracking introduce 3rd metric which measures and grows recurring contributors.

Get this data for last few weeks. Plot it over a timeline. Plaster it all over #general on a weekly basis. This achieves three things:

(a) communicates success
(b) clarifies deficiencies, e.g. this repo failed to meet growth target this week - why and how do we fix?
(c) forces automation naturally, e.g. instead of "automate" or "bounty all issues" at once we can gradually introduce processes that actually solve bottlenecks.

  1. 5 other recognisable projects using SOB by 28/02/2018 (Aragon and Riot count).

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

ENS subdomain username registrar

Preamble

Idea: <to be assigned>
Title: ENS subdomain username registrar 
Status: Draft
Created: 2017-11-20

Summary

Provide a Registrar for Status users to share their identity easier with their friends.

Vision

Sometimes scanning a QRCode in your friend smart phone is not the best, perhaps it would be easier to provide them a URL through ENS. Status would register their domain and upon a fee in SNT register their Identity address to an available subdomain.

Allow the change of address might not needed, as them would be registered against an Identity Contract, that internally can change the manager key.

Swarm Participants

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description: Users can register (FIFS) an available username in Status's ENS subdomain

Copyright

Copyright and related rights waived via CC0.

Status fiddle (online editor for developing UI)

Preamble

Idea: DEV#16
Title: Status fiddle (UI online editor)
Status: WIP
Created: 2017-11-14

Summary

UI editor in the web (something like fiddle.status.im) for creating status UI in "live" mode, so user can write code for UI and see the result immediately

Vision

We're developing UI for status in 3 steps, 1 - designer prepares UI in vector editor and publishes it in Zeplin, 2 - developer implements UI from Zeplin in code, 3 - design review, could take a lot of time and resources for both designers and developers. We can seriously improve this process if designers provide UI in code to developers, but we need a simple way, tools for designers to do that.
Also, if we'll have such a tool, external contributors could develop UI for status without building and running status environment. And chatbot developers could test their bot suggestions UI.

Update1: And we could generate views in different sizes and look how app will look on different devices
Also we could generate views with different labels size to see how it may look with different languages, now we only check English version.

Swarm Participants

  • Lead Contributor: @flexsurfer
  • Testing & Evaluation:
  • Contributor:
  • Contributor:

Requirements

It should be possible to open web page, type hiccup data structures and see resulting UI
And probably tutorials and templates for status UI.

Goals & Implementation Plan

Minimum Viable Product

Goal Date: 2018-01-01
Description:

  1. User can open web page, type hiccup data structures and see resulting UI

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Onboarding experience

Preamble

Idea: 24-onboarding
Title: Onboarding experience
Status: Draft
Update: 2017-12-21
Requires: #26 

Summary

Status, Ethereum, cryptocurrency and the decentralized internet are new paradigms for many users. The job of onboarding will need to educate and inspire users about these new technologies, as well as help users get started with Status, create an account, send their first message, explore their first app, and initiate their first transaction.

Onboarding will be an important part of the upcoming beta release. Currently this is in a preliminary explore phase, and the requirements will evolve as the beta work matures.

This swarm will be the collaboration of marketing, product, design, and engineering to ensure that users have a consistent brand and product experience.

Vision

In progress.

Swarm Participants

Swarm channel: #24-onboarding

Requirements

Create onboarding flow mockups
As we define the brand tone of voice, make sure this is reflected in the on boarding experience.

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Recoverable DApp

Preamble

Idea: <to be assigned>
Title: Recoverable System
Status: Draft
Created: 2017-11-18

Summary

Provide framework to emergency stop and upgrade dapps - specifically Status Network.

Vision

The RecoverableSystem contract is a delegate message forwarder to Application model address, or in case that address code is size zero, to Recoverer address.
RecoverableSystem address will be storing the value and data storage of the application, but not storing the main business logic neither the recovery logic, but only the emergency stop logic, that is activated by address of Application model's code being empty.
The only way of Application model logic being empty is if it was never deployed at that address, or if the code called selfdestruct.

address.extcodesize==0 to emergency stop advantages:

  • Works on-the-fly;
  • The result is a emergency state that cannot be bypassed because the main logic (that was emergency stopped due a bug) does not exists anymore. In other words it's technically impossible to have bugs in main logic that ignore emergency stop;
  • Not need to check for emergency stop (with modifiers), nor having emergency stop storage variables, however we have a new address basic variable, that would be the recoverer address.;
  • Can be used to define the first main-logic, by starting RecoverableSystem with only Recoverer address.

Application model

Application logic model owned by Watchdog, and that this watchdog can call a specific function only in model that triggers selfdestruct, causing the address code size become zero.

Watchdog

Watchdog address is defined in Application model constructor, because it contains volatile code (therefore impossible to recall), Recoverable System should safely reserve watchdog address variable to ensure that is impossible to call the model destructing method in Recoverable System, and if this requires a selfdestruct then it must be through it's own logic. If not reserved, a risk of unknown unknowns is risen.
Watchdog contract may be:

  1. a list of curators in a proven-safe multi-signature permission contract.
  2. a proven-safe liquid democracy for electing a new main logic.

The watchdog in a ideal scenario should not share code with the application, as we might have a bug in the tokens and we used that for controlling the watchdog, that would make the watchdog useless. Because of this a InterDAO liquid democracy should be used, that other DAOs could trigger a emergency stop in other DAOs.

InterDAO shared DApp watchdog

A delegative democracy, as specified by #20, that uses tokens by democratically aggregated DAOs, starting with Status token, can vote for emergency stop a topic.
The reach of a quorum on a certain topic would trigger the InterDAO watchdog to call a self-destruct in Application model address of that topic.
When adding a new DAO to the InterDAO congress, the current participants must vote for it in the root topic.

Recoverer/Updater

When emergency stop is triggered, in place main logic, a recovering code (Recoverer) takes place that can only set new main code address.
The recoverer contract must be extremly simple and NEVER write or read storage besides of changing the application model address.
The usual recoverer contract will only change the application model address, but this call must only came from a democratic repair address, that may be:

  1. a list of curators in a proven-safe multi-signature permission contract.
  2. a proven-safe liquid democracy for electing a new main logic.

What type of Recoverer logic need to be defined as a per DApp case, as if the DApp is owned by tokenized stake-holders, then 2. should be the case. More complex cases can be build, but this two types would be the most cases for all DApps.

Swarm Participants

  • Lead Contributor: @3esmit
  • Testing & Evaluation:
  • Contributor:

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date: Soon
Description: RecoverableSystem Framework

Iteration 1

Goal Date: Later
Description: Safe-Proven Democratic Upgrader

Iteration 2

Goal Date: Later
Description: InterDAO Shared Watchdog

Supporting Role Communication

Copyright

Copyright and related rights waived via CC0.

Replace status-go bindings with a single RPC-like one

Preamble

Idea: DEV#007
Title: Replace status-go bindings with a single RPC-like one
Status: WIP
Created: 2017-11-10

Summary

The idea is to replace most of the currently exposed bindings in status-go with a single one that operates on a JSON-RPC protocol. It will allow us to remove a significant part of glue code that needs to be written between status-go and platforms that use it (status-react, status-desktop, possibly others).

Vision

The vision is to have only two bindings exposed: CallRPC and CallPrivateRPC (subject to change as may be confusing, CallBinding or CallPrivateMethod maybe?). They are totally separate and serve totally different purposes.

CallRPC is used to forward JSON-RPC calls to the ethereum node that status-go runs inside. It will be used to implement custom providers to web3.js.

CallPrivateRPC will be used to perform actions like StartNode, StopNode, Login, CreateAccount and will effectively replace all the bindings that status-go currently exposes.

As bindings are exposed as C functions, glue code is required to call them from status-react (native modules written in Objective-C and Java) and status-desktop (C or C++ code). Reducing the number of bindings and using a single one supporting a protocol like JSON-RPC will allow developers to modify or add new actions without modifying the glue code at all.

Swarm Participants

This project should finish in a week. It will require at least 2 developers who will work on status-go side and at least 1 who can help with React Native modules and Clojure code.

  • Lead Contributor: @adambabik
  • Testing & Evaluation: TBD
  • Contributor: TBD
  • Contributor: TBD

Requirements

TBD

Goals & Implementation Plan

TBD

Minimum Viable Product

The Status app works as before changes. Some currently exposed bindings may be missing but it should be possible to create an account, start node and use chat.

Goal Date: 2017-11-27

Copyright

Copyright and related rights waived via CC0.

Improve developer experience on status-react

Preamble

Idea: DEV#008
Title: Improve developer experience on status react
Status: Draft
Created: 2017/11/10

Summary

Improve developer experience on status react by making necessary refactoring, implementing developer features and supporting clojurescript tooling development.

Vision

The current developper experience with status-react has a few rough edges. Our goal is to identify and eliminate them in order to improve the developper experience and get new people onboard more easely.

We shall also improve the clojurescript tools that we are using for status-react to make sure they stay updated and match our expectations.

Making our project more developer-friendly is the best way to get new contributors !

Swarm Participants

Requirements

  1. the app can be started in a specific state with a configuration file
  2. the developper environment can be launched with a single command
  3. add profiling to re-frisk
  4. react-native update
  5. finish re-frame refactoring
  6. Refactor db usage
  7. Remove derived data from app-db
  8. Fix Node is already running error when connecting to an account
  9. Document the debug server
  10. Get devtools to work
  11. Sponsor clojurescript development

Goals & Implementation Plan

Minimum Viable Product

Goal Date: 2017-11-24
Description:

  • Be able to start app on specific screen
  • Have a styling issue in open-bounty that provides a configuration file that make the app open directly on the screen
  • Define which tools and what kind of development can be sponsored

Iteration 1..N

Goal Date: 2017-11-24
Description: Requirement 1 and 4 should be done + as much of 5-10 as possible

Goal Date: 2017-11-01
Description: Requirement 2 should be done + as much of 5-10 as possible

Goal Date: 2017-12-08
Description: Requirement 3 should be done + as much of 5-10 as possible

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Status and SOB integration

Preamble

Idea: DEV#21
Title: Status and SOB best friends
Status: Draft
Created: 2017-11-16

Summary

Status app and SOB Dapp should be closely integrated and be a guide for programmers into new exciting crypto world

Vision

As a programmer who is new in crypto world, i want to start work on SOB open bounties and Status should help me to do that easily.

  1. Suggest to install Status on SOB page
  2. SOB should be in onboarding options in Status
  3. After creating new account SOB Dapp should be opened and SOB should suggest to add this account (address) as default
  4. SOB chatbot to share open bounties with friends or in groups

As a potential investor i want to find and fund interesting for me GitHub issues

  1. Suggest to install Status in SOB comment on GitHub
  2. SOB for investors should be in onboarding options in Status
  3. GitHub page should be opened within SOB chatbot
  4. It should be possible to fund and sentTransaction to SOB contract

Swarm Participant

  • Lead Contributor:
  • Testing & Evaluation:
  • Contributor: @andytudhope
  • Contributor:
  • UX (if relevant):

TBD

Requirements

TBD

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:
TBD

Iteration 1..N

Goal Date:
Description:
TBD

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

SOB Bounty lock

Preamble

Idea: #53
Title: SOB Bounty lock
Status: Draft
Created: 2017-12-01

Summary

A developer who is interested in a bounty but would like to reserve it so that someone else cant claim it, can pay X amount of SNT to lock the bounty for Y time frame.

Vision

As a developer, I find a bounty that I am interested in working on, but I'm not sure if I can finish it quickly enough before someone else, or maybe I need a few days before I can start it, so I pay an amount of SNT to lock the bounty for a time period where only I can claim it.

Swarm Participants

  • Lead Contributor:
  • Testing & Evaluation:
  • Contributor:
  • Contributor:
  • UX (if relevant):

Requirements

1- 3 different time frames (1 day, 3 days, 5 days) that you can lock for
2- SNT value could be fixed or % of value of bounty
3- You can only initiate a bounty lock once per user
4- Whats technically possible for where the SNT would go? Can it go to a separate address different to the bounty to trigger a lock when received?

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Delegation Proxy

Preamble

Idea: <to be assigned>
Title: Delegation Proxy
Status: Draft
Created: 2017-11-15

Summary

Delegation Proxy provides ability to set other account (some Delegate, any other address) to take influence on behalf of self.

Vision

"Having the promise of blockchain be trustless trust and be decentralized, how decentralized the system is in future when, currently, it might change it, only 5 to 30 people in this whole network really understands the ins and outs of such a great discussion. (...) when we need to take action at this moment we need to trust the experts."
Blockchain's Problems with Unknown Unknowns - Shermin Voshmgir
Delegation Proxy enables to set which expert you trust (can be none but yourself). There should be a root delegation proxy level, and for each expertize field there should be a specialized delegation proxy, which in case of unset for a determined account would lookup at parent proxy.
PoC
A specific topic for #18 can be used to improve reach of quorum in Token Registry consensus.

Swarm Participants

  • Lead Contributor: @3esmit
  • Testing & Evaluation:
  • Contributor:

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Requirements for a High-Quality Group Chat

Preamble

Idea: PROC#015
Title: Requirements for a High-Quality Group Chat
Status: Draft
Created: 2017-11-13
Requires: https://github.com/status-im/ideas/issues/6

Summary

To make Status strong in group chatting wie have to gather ideas and requirements
and compare them to our competitors.

Vision

The group chat situation of Status is a bit messy. We used Slack for our internal
talks as well as for the community. Due to troubles with scammers we tried to use
Riot, which sadly misses features we're familiar with. So right now we use Slack
internally, Riot for the community, and Telegram for discussions about cryptocurrencies
and trading.

Our Status itself provides group chat features too. To create a powerful competitor
to existing products, not only Slack or Riot, we need to gather and prioritize
ideas and requirements for our software.

Additionally we have to compare our vision as well as the gathered set of ideas and
requirements with other tools on the market: Slack, Riot, WeChat, WhatsApp, Facebook
Messenger, Snapchat, and more. Goal is to compile a list of requirements to make Status
stronger than the market.

Swarm Participants

  • Lead Contributor: @themue
  • Testing & Evaluation: (tbd)
  • Contributor: Owner
  • Contributor: Product Owner
  • Contributor: (tbd)

Requirements

  • Establish infrastructure in Git or different tool to collect, discuss, and prioritize
    the ideas and requirements.
  • In iterations:
    • Collect, discuss, and prioritize ideas and requirements.
    • Compare collected requirements to competitors.
    • Review requirements based on comparison.

Goals & Implementation Plan

Minimum Viable Product

Goal Date: 2017-12-01
Description: Establishing of infrastructure and initial iteration.

Iteration 2..N

Description: Continuous process to improve our product.

Supporting Role Communication

(tbd)

Copyright

Copyright and related rights waived via CC0.

Messages Update

Preamble

Idea: Update and clean up the messages in Chat. Add missing message types.
Title: Messages Update
Status: Draft
Created: 2017-11-24

Summary

There is a lot of UI/UX issues with the chat at the moment. Here i've put together all issues with messages and message types.

  • Added text buttons and buttons with options. Use case: respond to a transaction request: Send/Decline;
  • Align User Picture to the bottom of the message bubble. This is to make it easier to see from who is the message if it's too long and exceeds the visible screen height;
  • Add/update message types: Location, Transaction, Link, Image;
  • Message groups. If a group of messages has been sent one after another with a short time gap between, group them together (put them closer, do not show the avatar and the name next to each message);
  • Added "Scroll to latest messages" button;
  • Added "Only visible to you" message type. To be discussed. As a use case i suggest showing some service notification as a message from a Status Bot. This is a rather wide topic. Needs more thought to be put in and a set of rules on when do we show those messages. One more use case: when a person uses a command to send a request to a bot inside of a chat with somebody else. They get a response from that bot inside the same chat but "Only visible to you" message;
  • Took the name out of the message. Let's try following this rule: "What's inside the message bubble is the messages content. Put all meta information outside the bubble";
  • To save some screen real estate we could get rid of names and avatars in the 1-1 chat, but as you can see for now there is no distinction between a group chat and a 1-1 chat. This is because it would be possible that for instance a bot can send a message inside a 1-1 chat;
  • Cleaned up some mess: made padding smaller and consistent, mede font-size for names/message meta info smaller;
  • To be added later: voice messages, messages with a set of images, message with a file attachment and more.

messages

Vision

screens_messages2

Swarm Participants

  • Lead Contributor:
  • Testing & Evaluation:
  • Contributor:
  • Contributor:
  • UX: @andmironov

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

SOB bounty sort/filter option

Preamble

Idea: #48
Title: SOB Bounty sort/filter option
Status: Draft
Created: 2017-11-28

Summary

There is no way currently to sort or filter the list of bounties on the page. A sort and filter option would be very useful as our list of active bounties start to add up.

Vision

As a developer looking for bounties to work on, I would like to be able to search, filter, and sort the bounties available, in order that I can find suitable bounties that I'm interested in without having to scroll through a large list.

Swarm Participants

  • Lead Contributor:
  • Testing & Evaluation:
  • Contributor:
  • Contributor:
  • UX (if relevant):

Requirements

Sort options should include:

  • Date
  • Bounty value
  • Repo/Org

Filter options should include:

  • Repo/Org
  • Min/Max bounty value
  • Bounty type? (bug/feature/security/non-development)
  • Skill set required? (language?)

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

General architecture & patterns for status react

Preamble

Idea: <to be assigned>
Title: General architecture & patterns for status react
Status: Draft
Created: 2017/11/22

Summary

Define and adhere to architecture vision for status react. Have all the best practises clearly defined in one place.

Vision

Our architecture (shape and organisation of data + code) is not optimal, what's worse it's nowhere clearly defined and discussed about. The purpose of this Idea is to improve it by identifying all the problematic parts of our current architecture, capture them as user stories, fix them and properly document it for future reference.

Swarm Participants

  • Lead Contributor: @janherich
  • Testing & Evaluation:

Requirements

  1. Re-frame database shape is reflecting the the app access patterns (writing for handlers, reading for subscriptions) by correctly indexing for fast lookups and normalised storage for fast, consistent updates
  2. Subscriptions form efficient signal graph, with minimal amount of Level-1 subscriptions and highest possible re-use of all subscriptions
  3. All the events in application are related to outside inputs and there are no artificial intermediate events anymore
  4. Co-effects and effects are isolating the side-effects everywhere and we re-use them to highest possible degree

Goals & Implementation Plan

Minimum Viable Product

Goal Date: 2017-12-08
Description:

  • Database is refactored according to point 1

Iteration 1..N

Goal Date: 2017-12-08
Description: Requirement 1 should be done

Goal Date: 2017-12-24
Description: Requirement 2 should be done

Goal Date: 2018-01-14
Description: Requirement 3 should be done

Goal Date: 2018-02-07
Description: Requirement 4 should be done

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Browser update + new chat header look

Preamble

Idea: <to be assigned>
Title: Browser update + new chat header look
Status: Draft
Created: 24-11-2017

Summary

The idea to treat Dapp's webview and Chat with a person as first class entities requires some UI updates. Need to add a regular browser as well to be able to open in-chat links.

top

Vision

Made the Chat header and Browser header look similar. See browser window in action https://framer.cloud/HuwfG

screens_browser

Swarm Participants

  • Lead Contributor:
  • Testing & Evaluation:
  • Contributor:
  • Contributor:
  • UX: @andmironov

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Wallet: portfolio management and calculations (long-term)

@oskarth commented on Thu Sep 21 2017

User Story

As a user, I want the Status wallet to show how all assets in my portfolio are doing, so I know what my financial health is and it can inform financial decisions.

Description

This issue is too big as it stands, but I'm using it as an opportunity to capture and clarify how I envision the wallet portfolio calculation working. I'll do this by way of example.

As we progress with these capabilities and we have a better understanding of the problem space, this issue can be closed. There is thus no specific deliverable or end in this issue, other than what has been described in the user story above.

A portfolio consists of multiple assets. Each assets has some valuation in a certain currency (henceforth USD, for simplicity's sake). This valuation fluctuates from day to day. The amount a user has of a certain asset also fluctuates, but usually not on a day to day basis by that much.

As an end user, if I invest $100 USD in crypto and this includes ETH, SNT, etc I want to know roughly how much my portfolio is worth in USD if I were to liquidity it. I also want to know how I'm doing - is my portfolio going up or down in terms of USD? Of course, USD is arbitrary and it could be measured in ETH, BTC or number of second-hand Saabs 93s.

Example 1 - Not all asset allocations are equal

I own two assets, A and B. 10 A and 10 B. One A is worth $100 and one B is worth $10. The whole portfolio is thus worth $1000+$100=$1100. In terms of portfolio composition, 90% of my money is in A. If A goes up 10% and B down 10%, my total portfolio, valued in USD, has gone from 1100 to 1100+90=1190. This represent a 8% increase in portfolio value.

Example 2: Day trading gone wrong

Same portfolio but I sell my assets A before the market starts moving and don't capture any gains. I thus have $1000 that I liquidated from A, and when market closes (or 24h later, say) B has gone down 10%. After 24h my portfolio value is 1000+90=1090, which represent a 1100/1090 a 1% decrease.

This case is a bit tricker since we don't necessarily have all the trading data. Thus it makes sense to assume a static portfolio and only compare last 24h with now. At least for now.

Example 3: Starting from nothing

If I don't own any assets, or, equivalently, only own USD (or whatever you measure portfolio value in), then the portfolio value never changes. It thus makes sense to say this represent a 0% (or -%) change on any time horizon.

Example 4: A new kid on the block

A new asset C is introduced and we don't have any pricing information on it, but it still part of the wallet. I suggest we visually indicate this by greying out that asset somehow, to make it clear that it's not part of the portfolio calculation. This seems like a design question though.

Those are all the scenarios I can think of now, on a high level.

cc @jeluard @yenda

Implement native screen animations and swipe-back gesture on iOS + bug fixes

Preamble

Title: Implement Screen Animations and swipe-back gesture on iOS
Status: Draft
Created: 2017-11-23

Summary

Implement native screen animations (slide left when opening a screen, slide right when go back, slide up when opening a fullscreen popup, slide down when closing a popup). And implement swipe-back gesture on iOS.

Also, let's remove the "accidental tap" when you are trying to scroll/swipe a list on IOS.

Here's an example of a native "slide in/slide out" animation on IOS https://framer.cloud/HuwfG

Vision

Native screen animations create a more smooth and native experience and provide a visual sense of screen hierarchy

Swarm Participants

  • Lead Contributor:
  • Testing & Evaluation:
  • Contributor:
  • UX: @andmironov

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

ERC20 token support

Idea code: DEV#003
Status: Done
Created: 2017-11-08

Summary

Add ERC20 support

Idea proposal

As a user I want my ERC20 tokens to be first class citizen.

Swarm Participants

Swarm channel: 3-erc20

Requirements

A user should be able to manage its ERC20 tokens pretty much the same way as ETH.
In particular wallet and send command must support ERC20 tokens.

As a first step considered ERC20 tokens will be based on a static list embedded in the application. This might be revisited later (see #18).

ERC20 extensions might also be considered: ERC223, Minime (SNT itself is a Minime token).

Zeplin references

Board

https://github.com/status-im/status-react/projects/4

Goals & Implementation Plan

Following features should be considered:

  • list wallet tokens
  • provide default token
  • send tokens to a contact
  • request token from a contact
  • get current price
  • get historical price
  • get token details (historical price, market cap, # tokens, volume, crowdsale)
  • list historical transactions
  • add gas and data support when sending transaction
  • chart graphs

Can be split in 4 categories:

  • wallet token details (access and management)
  • token details (static and dynamic data)
  • token price details
  • token transactions

Token details will require some metadata currently not available in ethereum.
Token price details can be provided by cryptocompare.

Minimum Viable Product

List user tokens and display token details

Goal Date: 2017-12-01
Description: token list and details

Iteration 1

Allow sending and requesting tokens.

Goal Date: 2017-12-15
Description: send/request tokens

Iteration 1 acceptance criteria (functionality to demo at the end of iteration):

  • User is able to send STT (status test token) under Ropsten testnet in Wallet
  • User is able to request STT (status test token) under Ropsten testnet in Wallet
  • Wallet is updated accordingly send/request transactions performed: main wallet value is updated, asset value is updated (both wallet main screen and asset details screen)

Demo acceptance:

  • functionality above is tested prior the demo
  • functionality above is merged in develop after it is tested and prior the demo so we avoid to demonstrate something we do not have in develop build

Iteration 2

Show token historical data and update percentage info

Goal Date: 2017-12-22
Description: token historical data

Copyright

Copyright and related rights waived via CC0.

Improve status-go release process

Preamble

Idea: DEV#52
Title: Improve status-go release process
Status: Draft
Created: 2017-11-29

Summary

status-go is being consumed by more and more projects like status-react and status-desktop. We also create libraries that wrap status-go like status-nodejs or React Native modules embedded in status-react.

The goal of this idea is to improve status-go release process and allow other projects to safely depend on status-go.

Vision

There are a lot of problems with how status-go is released now:

  1. All work happens on develop branch,
  2. There is no stable branch like master,
  3. There is neither semver versioning nor tags to mark individual releases,
  4. There are no binaries easily available for various platforms.

The vision here is that the release process is automated and its outcome is a new git tag, changelog on Releases page and binaries for iOS, Android and node.js (linux and macOS oses).

Also, any code in master branch should be considered safe, i.e. it should pass all tests, including e2e tests on public networks. master could be considered also as latest release. (TBD, we may not need this at all.)

This could be also really helpful for bug reporting (especially, if we want to use SOB for bug reports in the future) and Test Team as it's often unknown, until further analysis, which status-go version (currently git SHA) is used by the current Status app build.

Finally, it's something that may bring more external contributors as the project will be better managed and organized.

Swarm Participants

I think two contributors is enough. It's hard to split the work here between more developers.

  • Lead Contributor: @adambabik
  • Testing & Evaluation: TBD
  • Contributor: TBD

Requirements

  1. This idea will need a hosting as status-go binaries, especially for iOS, are pretty large (around 80-90MB). There is a way to add files to the releases on Github and it should be researched first. If it's not a viable solution, we should use some hosting like S3.

Goals & Implementation Plan

Minimum Viable Product

Introduce an automated way of versioning and concept of release branches. It's described in details here: status-im/status-go#422.

Goal Date: TBD
Description: Deliverables described in status-im/status-go#422.

Iteration 1

Each release should contain binaries for the following platforms:

Goal Date: TBD
Description: Binaries on Github or other file hosting provider, easily accessible for other projects.

Copyright

Copyright and related rights waived via CC0.

Github Bot

Preamble

Idea: 37-github-bot
Title: Github Bot
Status: Draft
Created: 2017-11-22

Summary

Build a Github bot to automate various tasks and processes on our Github repositories

Vision

Github bots are used on repositories such as react-native to automate some tasks that would be too repetetive or cumbersome for a human to do.

As a community manager I want to be able to garantee that external contributors PRs don't get forgotten and get treated within a reasonnable timeframe by the team
As a tester I want to be warned when I have to test migrations in a PR

The bot could mostly be developed via the bounty system in order not to distract the team too much from the critical path of development.

;;;;; template

Swarm Participants

  • Lead Contributor:
  • Testing & Evaluation:
  • Contributor:
  • Contributor:
  • UX (if relevant):

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Status user subscription

Preamble

Idea: 35-subscription
Title: Status user subscription
Status: Draft
Created: <date created on, in ISO 8601 (yyyy-mm-dd) format>
Requires (*optional): <Idea number(s)>
Replaces (*optional): <Idea number(s)>

Summary

This idea is to explore the feasibility of the economic model for subscription based access to the Status features that require spending, e.g. offline boxing #1

Vision

New users awarded with X SNT after successful onboarding.

Users can subscribe for usage packages and don't care about paying for each message stored for offline, etc (carrier's tariff plans analogy). Although the billing implementation could be cumbersome.

Swarm Participants

  • Lead Contributor:
  • Testing & Evaluation:
  • Contributor:
  • Contributor:
  • UX (if relevant):

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Extend react-native-desktop to support status-react Desktop functionality

Preamble

Idea: DEV#34
Title: Extend react-native-desktop to support status-react Desktop functionality
Status: Draft
Created: 2017-11-22

Summary

Status React cross-platform (Linux, OS X and Windows) desktop version based on react-native-desktop port of react-native.

Vision

React-Native-Desktop is the desktop extension of origin react-native framework developed by Status. With direct access to underlying OS's APIs (via Qt Framework APIs mainly) we should be able to have almost full control on software stack and provide better users experience.

Status IM application should has range of unique screens optimized for the best desktop users experience.

Desktops version of Status IM is supposed to re-use backend implementation of Status IM Mobile, but with unique UI screens and based on react-native-desktop extension of original react-native.

Swarm Participants

Requirements

Goals & Implementation Plan

Goal Date: 2017-12-11 (Done)
Description: Enhance development cycle to get acceptable performance in code development (adopt figwheel + live-reload, find the way to compile ClojureScript to JS without code optimization (lein has known issues with that)

Goal Date: 2017-12-15 (Done)
Description: Login screen rendering and functionality

Goal Date: TODO
Description: Integrate react-native-desktop into latest status-react sources with desktops screens available.

Goal Date: TODO
Description: Resolve react-native-desktop related UI issues (missed support of some specific props or components, etc)

Goal Date: TODO
Description: Smoothly working figwheel for dev builds

Goal Date: TODO
Description: Stable Status Desktop application with screens specific for desktop users experience.

Goal Date: TODO
Description: Support by react-native-desktop of [all react-native components](https://github.com/status-im/status-electron/wiki/Status-Components are supported by react-native-desktop) used in Status Desktop.

Goal Date: TODO
Description: Automated process of Status Desktop distributions creations for Linux, OS X and Windows desktop platforms.

Minimum Viable Product (completed)

  1. Application shows 'chat' screen
  2. User can login
  3. User can exchange 1-1 messages

Minimum Viable Product 2

Status Desktop application with screens specific for desktop users experience based on Status-React (Status IM Mobile) source code base with possibility to chat without interruption.

Exit criterias

  • All react-native components from the list of used components in Status Desktop https://github.com/status-im/status-electron/wiki/Status-Components are supported by react-native-desktop
  • Existing UI for status-react desktop runs smoothly with react-native-desktop
  • Automated creation of binary distributions for Linux, OS X, Windows desktop platforms.

Success Metrics:

Successful internal usage by Status Team on daily basis.

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

T-Minus 100 days to production, or, Janitors Broom Club

Preamble

Idea: PROC#019
Title: T-Minus 100 days to production, or, Janitors Broom Club
Status: Draft
Created: 2017-11-15
Requires (*optional): <Idea number(s)> [TODO: Fill in with critical path swarms]

Summary

Release the Status app to production in 100 days, enabling real live users to transact.

Vision

We want Status to be live in production as soon as possible. This will be a quantum shift in how we think about the app, as we'll be dealing with real transactions and real users using the app regularly (hopefully). It will be both exhilarating and scary, as reality is the real litmus test for what we are all
working on. This will help guide us in all future endeavours.

In order to get there as soon as possible, we must define a critical path. A critical path is one where if you leave out something then the thing as a whole falls apart. This also means there are a lot of things that are important that we still want to be doing, but they might not be a deal breaker in terms of being live in the App and play store. The purpose of this swarm is to:

(a) outline the critical path so it is crystal clear for everyone
(b) support swarms doing the lion's share of the actual work necessary
(c) do or take responsibility for any miscellaneous janitorial work necessary to get to production in 100 days

Swarm Participants

TBD. We want people from every department in this one, including lead swarm devs, marketing, community and general support.

  • Lead Contributor:
  • Testing & Evaluation:
  • Contributor:
  • Contributor:
  • UX (if relevant):

Requirements

There is one main and one auxiliary requirement for this swarm.

  • Main: Have a released version of the Status app in production in 100 days, enabling real live users to transact. If the Swarm starts this week, this means end of February, 2018.

In order to fulfill the main requirement we need to figure out the scope and requirements of our production release, but this falls under Goals & Implementation plan.

  • Auxiliary: It's not about telling people what to do or saying they should change their priorities. It is about showing people the critical path, to the best of our knowledge, and make it easy for people to see and work on this. This swarm is thus janitorial as opposed to managerial in purpose.

This implies any work that isn't being done by additional swarms falls under this swarms responsibility.

Goals & Implementation Plan

Before talking about specific goals and implementation plans here, here is an outline for how I personally think about this problem. First, a universal problem: assuming you care about something, it is much easier to not launch and keep adding things than it is to remove things and launch. We must counteract this tendency fiercely.

In order for this goal to be credible, we need to be realistic about what we can do in 100 days. Exactly what do we mean by being in production? To me there are two main hallmarks for saying something is in production:

  • Mainnet with transaction possibility
  • Open for consumption (i.e. in App Store or equivalent)

One worry about pushing for production early with a suboptimal product (onboarding, bad perf, so-so security, confusing UX, bad Whisper scalability, etc) is that we can't push marketing and installs. This means we lose of capability of being top 10 in App store, etc. I believe this reasoning is flawed
for three reasons:

(a) It assumes too much. Scaling more than 2 orders of magnitude is not realistic (~100->10k++) without real-world experience. Additionally we'll hit up on lots of UX and misc quirks just getting an order of magnitude more users than we currently have.

(b) It relies too much on the 'big splash launch' effect and is thus fragile. We launch, things go alright but our retention is bad. Now what? It isn't iterative enough.

(c) It doesn't take into account the possibility of re-launching. We can launch a 'Status Beta' app earlier which has both the hallmarks of being in production and grow users and order of magnitude or two, doing user research etc before doing 'real' launch. If this turns out to be impossible, we can do something similar with Testflight and a much pruned list of only active users.

This would thus create two checkpoint releases. As soon as the first one is out we have real value flowing through the system, as well as real users. This will sharpen our focus even more, and provide valuable lessons for the 'big splash' launch.

Whether we count the Status Beta release as our production release or not is up to this Swarm to determine, in light of what is credible and realistic. The goal here is to not postpone an open and mainnet release several months because we don't have the guts to put Status out there.

Minimum Viable Product

Goal Date: 2017-11-24
Description: Decision on whether to proceed with Status Beta approach or not; coarse view of critical path; insight into major things missing from current swarm's work (i.e. a 'Wishlist').

Iteration 1..N

TBD.

Goal Date:
Description:

Supporting Role Communication

Y'all.

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Developers! Developers! Developers!

Idea code: DEV#004
Title: Developers! Developers! Developers!
Status: WIP
Created: 2017-11-09

Summary

Towards a better environment for developers

Vision

Status provides an ethereum based platform for developers. It must be comprehensive, accessible and complete as much as can be.
This is specifically targeting developer experience.

Swarm Participants

Goals & Implementation Plan

My first bot

Bot rely on easy to grasp technologies. My first bot should be testable in 5 minutes.

Bot API

Bots provide great power and allow developers to tightly integrate in status.
API must cover all cases and have meaningfull semantic. There should be no hole in the paint.
Documentation should detail all available features.

Higher level APIs for common scenario might be considered too (converstations, ..).

It makes sense to test integration with existing ethereum technology to get some hands-on experience (livepeer, trustlines, raiden, favor network).

DApp integration

DApps can be browsed natively in status using web3 object. It makes sense to offer some integration with others status features:

  • bot manipulation
  • contacts access
  • ..

Special care will have to be payed to the security.

Integrated dev environment

status-desktop offers great potential for an integrated dev environment.

  • device discovery and one-click bot deployment
  • inline suggestions preview
  • bot / DApp debugging
  • inline bounty integration

Seamless deployment experience

Once a bot is developed and tested it must be made available to others. This should be done as much as possible in a decentralized way (swarm).
Identity and versioning might also be considered here.

Goals & Implementation Plan

Scope is very broad and some of the listed scenarios depend on non existing tools (e.g. status-desktop).

We want to use this umbrella idea to detail mid-term goals and keep them in mind to implement some of the more concrete ones.

Specifically following will be implemented:

  • improved bot API documentation (first bot and complete API)
  • identify missing APIs and make it sound (both bot and DApp integration)
  • detailed plan for status-desktop dev env
  • detailed plan for deployment experience

Minimum Viable Product

Updated documentation, bot and DApp API.

Goal Date: To be defined
Description: a sound set of dev APIs

Iteration 1

Define concrete steps for status-desktop role and deployment process.

Goal Date: To be defined
Description: a clear plan for the future

Copyright

Copyright and related rights waived via CC0.

Fix them all

Preamble

Idea: DEV#50
Title: Fix them all
Status: Draft
Created: 2017-11-28

Summary

There are bugs that sneak from time to time and just must be fixed. Unfortunately, they are not part of any idea but ruin user experience with the Status app. We need to dedicate some time per week to fix and verify such bugs.

For example: status-im/status-mobile#2426

Any team member can mark any bug for the cleanup, e.g with fix them all label. Mind the bugs that we can delegate to the community as bounty issues, they will get label bounty-awaiting-approval!

Vision

  • We dedicate x amount of time weekly to keep the house clean (fix/verify bugs)
  • We mark bug with fix them all label whenever we think it's not acceptable for the app to behave like this.

Swarm Participants

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date: 2017-12-01
Description: Fix at least 2 bugs from list below
status-im/status-mobile#2426
status-im/status-mobile#2314

Filter to see current open issues with label fix them all https://github.com/status-im/status-react/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3A%22fix+them+all%22+

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Message viewers for Chat

Preamble

Idea: <to be assigned>
Title: Message viewers for Chat
Status: Draft
Created: 24-11-2017

Summary

At the moment there are missing these message viewers for the chat:

  • Image
  • Location
  • Transaction

Vision

These are the initial states, need to add more states, will do soon, work in progress.
Re-using the transaction details screen from wallet for consistency.

screens_viewers2

Swarm Participants

  • Lead Contributor:
  • Testing & Evaluation:
  • Contributor:
  • Contributor:
  • UX: @andmironov

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

StatusBOX

Preamble

Idea: <to be assigned>
Title: StatusBOX
Status: Draft 
Created: 2017-11-21

maxresdefault

Summary

As a Status user i don't want to store ethereum blockchain data on my device and don't want ethereum node to drain my battery, also i don't want to use services like infura because it's not safe and in any case i need status node on my phone, and i want to store my messages during i'm offline, i need some cheap and plug'n'play solution, i want to buy it or make it by myself - StatusBOX?

Vision

We can manufacture it or user could DIY it, based on Raspberry Pi 3 — A 64-bit Pi with Built-in Wireless and Bluetooth LE.
As a user i want to plug it into an electrical outlet, connect my Status app using Bluetooth, make some initial settings, connect it to my wi-fi network. Thats it, now my Status app working with StatusBOX, and i don't need node on my phone, and StatusBOX will store my offline messages. Also i can "mine" SNT, storing messages for other users.

Swarm Participants

  • Lead Contributor:
  • Testing & Evaluation:
  • Contributor:
  • Contributor:
  • UX (if relevant):

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Rename sections

Preamble

Idea: Rename sections in bottom navigation of the App
Title: Rename navigation sections
Status: Draft
Created: 2017-11-22

Summary

Basically the idea is to change the order of the sections and rename "Chats" to "Tabs" and "Contacts" to "Favourites" to indicate a more generic purpose of those screens.

The idea of changing the order and putting "Tabs" and "Contacts" in the middle seems relevant as these screens are both related to chat, yet "Wallet" and "Discover" are different and it makes sense to put them at the first and last positions respectively.

The words "Tabs" and "Contacts" have been chosen on the basis of being commonly used in browsers which fits well in Status since it's a browser as well.

screen shot 2017-11-22 at 15 35 44

All resources available for export here zpl://screen?sid=5a1575cef4f55be22789c352&pid=5863cdcee68455850f1929f2

Swarm Participants

Goals & Implementation Plan

The goal is to decrease confusion for users by using more generic and at the same time representative section names.

After completing this, we can move on to implementing the Omnibar and Chat redesign.

Copyright

Copyright and related rights waived via CC0.

Offline inboxing and persistent messaging

Preamble

Idea: DEV#001
Title: Offline inboxing and persistent messaging
Status: Done
Created: 2017-10-25
Started: 2017-11-14
Ended: 2018-01-04

Summary

Make it possible for users to see messages sent to them while they were offline.

Vision

No messaging app is complete without persistent messaging. Unlike servers, end users with mobile phones as endpoint go in and out of connectivity. When a user comes back online, the expectation is that they can see messages that was sent while they were gone. How can we solve this without compromising on decentralization and anonymity? There are two basic scenarios we want to solve.

Basic user story A: User A and B are chatting. User A goes offline for a longer period of time. In the meantime, User B sends a message to A and goes offline as well. When User A opens app they see the message from B.

Basic user story B: User A enters public chat room X. User A goes offline and people keep chatting. When User A comes back they instantly see all the missed messages in X.

We want to make it easy to run a Whisper mail server (part of Whisper v5 API). This will archive messages and forward them to a peer upon request. You can run this yourself if you want to, but we’ll also provide default mail servers through our clusters, and make it easy for anyone to set one up. This can be paid using SNT, which aligns incentives in terms of Quality of Service.

Swarm Participants

Squad size: 5-8 people. Squad channel: #1-offline-inboxing

Update on time commitments after MVP

  • Go contributors available until Christmas, after this on retainer in background
  • @trybeee just joined swarm
  • Design, no new designs right now - on retainer for iteration 2 (MVP sketch from design POV)

Requirements

From a user point of view, anything that solves one or both of the user stories seems like a good start. From a 10 000 feet technical view for the initial version:

  1. status-go: Ability to run a standalone wnode with Whisper Mail Server from the terminal
  2. status-go: RequestHistoricMessages binding exposed that status-react can call
  3. status-react: put these messages in their appropriate place
  4. status-react: handshake with wnode to get it to receive messages on its behalf

Side note: Exactly what amount of granularity do we want these requirements to be at? And should it be for MVP or for future iterations as well?

Ultimate goal: Decentralized marketplace where people host and connect to wnodes/mailboxes, informed by their reputation, and pay/get compensated with SNT in a fluid fashion. Seamless end user experience in terms of reliability of offline messages showing up when they start the app.

Goals & Implementation Plan

Minimum Viable Product

Initial Goal Date: 2017-11-24
Updated Goal Date: 2017-12-08
Completed: 2017-12-08
Passed Full QA: TBD
Description: Run a wnode from the command line; let A send message to B who is offline, and then A goes offline again. When B comes online it should call wnode which should reply with some payload that contains A's message. This payload should be visible in A-B's chat. The wnode can be hardcoded.

Iteration 1 - Public chat, MVP retainer, and laundry

Goal Date: 22 December
Started: 2017-11-08 (MVP end) or 2017-11-12 (retro meeting done)
Completed: 2017-12-22 (main user story)
Description: Main user story: User A enters public chat room X. User A goes offline and people keep chatting. When User A comes back they instantly see all the missed messages in X.

Additionally, MVP retainer and laundry: QA of MVP complete and all MVP work merged into develop on status-react and status-go. MVP bug fixing. Basic error handling, refactoring and logging. Documentation for updating wnode-status and API calls introduced. Identify and make bounties of some nice-to-have / upcoming issues. Planning and swarm participants re-organization: likely one more Clojure dev and identify Go dev needs. Clarification on interface (enode). Specify group chat workflow and tests thereof.

Uncertainty: Swarm availability, both w.r.t. other ideas and holidays (seems OK). Availability normal for 2 weeks: Adam 2w 22 Dec, Eugene, Boris, Dmitry, Oskar After Christmas no more Go dev necessary.

Iteration 1.5/2 - Joe Blockchain goes to town (multiple wnodes)

Goal Date: TBD - est. +~2w, due to holidays possibly delayed till mid January
State: Aborted
Completed: 2018-01-14 (very partial; read only screen under flag)
Description: Ability to toggle between different wnodes in the app. Show basic connectivity to wnode in interface. The wnodes identifiers are hardcoded in the app. Add by enode (?). Multiple wnodes enabled for redundancy (?).

Uncertainty: Go dev work necessary. Seems docs and options for wnode-status but other than that not. Only on retainer.

Archive (old stuff)

Design track

Consider how to surface and solve the following challenges in our UI. wnode and mailbox used interchangeably. This list should probably be split into MVP concerns and later concerns as there is quite a lot.

  • How will user select and deselect a wnode?
  • How do we communicate more "trusted" nodes, like the ones we operate initially?
  • How do we communicate and quantify reputation such as uptime and reliability? Start ad hoc (upvotes? number of connected nodes? "official" Status nodes with guaranteed uptime?)
  • How will the cost of using node be determined? Initial setup and running costs?
  • What happens if we fail to connect to our mailbox? How do we communicate this in a chat?
  • How communicate to the sender that a message was ACKed by a mail box but not by end user?
  • What about if a user wants to use multiple mailboxes?
  • Where can a user get an overview of the mail server / contracts they are using?
  • How will ongoing payment signing work?
  • How do we communicate a certain wnode is dead or can't be trusted for some reason?
  • How do we communicate capacity of a wnode to ensure quality of service?
  • How does a wnode operator accept or deny a request to act as mail server? How is this communicated to end user?
  • Initially a wnode will probably just be a CLI thing. How do we surface options like how much compensation we want? And what about when this can be run through Status Desktop? How do you decide how much capacity you have as a wnode?

Iteration 1..N

TBD. Smorgasbord of desirable features. Revisit this.

  • Discovery of wnodes
  • Ability to select wnodes
  • Running wnodes in cluster and making it possible for others to run them
  • Giving feedback in chat about state of messages
  • Using multiple wnodes
  • Cryptoeconomics to incentive running of nodes
  • Basic reputation system to signal quality of service

Goal Date:
Description:

Supporting Role Communication

TBD.

Post-Mortem

TBD.

Resources

Copyright

Copyright and related rights waived via CC0.

Practices for performance control

Idea: DEV#0022
Title: Practices for performance control
Status: Draft
Created: 2017-11-17

Summary

A set of practices (tools, documents, methods) to help diagnose and prevent performance regressions

Vision

User experience is paramount for user retention, especially in mobile environment.
Performance issues are hard to pinpoint without special tooling and trivial changes might introduce subtil performance regression.
We want to ensure we own performance profile of our products.

Swarm Participants

Requirements

Pinpoint areas of slow performance

Provide a list of tools with associated documentation to quickly identify sources of performance issues.
Specifically those performance issues might lie:

  • at the react level (e.g. suboptimal re-frame usage, algorithmic complexity)
  • at the go level (e.g. whisper overhead)

NOTE Fixing those issues is not part of the scope

Automatize prevention of performance regression

Simple change might introduce performance regressions. Automatizing the discovery of those regressions reduces the probability that they will be shipped.

Improve perceived reactivity

Even when everything is optimized there can still be some inherent slowness, especially on older mobile.
Some UX technics can help improving the perceived performance, like:

  • screen open fast
  • jank-free scrolling
  • smooth transition
  • consistent loading and error handling
  • animations?

Goals & Implementation Plan

MVP

When it comes to performance optimizations, gut feeling is generally wrong.
Define procedures (tools and documentations) allowing to discover the root cause of performance issues.

Goal Date: To be defined
Description: a set of rules allowing to pinpoint performance issues

Iteration #1

Automatize performance regression. Some specific e2e tests will track performance of common scenario and will be integrated in Jenkins.
If customizable thresholds are crossed build fails.

Goal Date: To be defined
Description: improvements to our CI preventing performance regressions

Iteration #2

Define precise guidelines and technics that must be implemented consistently to provide a smooth UX.

Goal Date: To be defined
Description: a set of practices to improve perceived reactivity

Copyright

Copyright and related rights waived via CC0.

Bounty for the found issue

Preamble

Idea: DEV#11
Title: Bounty for the found issues
Status: Draft
Created: 2017-11-13

Summary

Make it possible to give bounties for the found bugs

Vision

Anyone who reported an issue can be rewarded with a bounty if the issue is valuable.

  1. Contributor creates new issue in the GitHub project with mandatory text bug-bounty.
  2. Team member reviews bug and if it's a valuable one then assigns label bug-bounty to the issue. This triggers a bounty contract to be created on the issue.
  3. Team member adds a label to classify the importance of the bug (more important -> bigger bounty). E.g XS, S, M and L
  4. Team treasurer sends tokens (e.g. SNT) to the contract.
  5. Payment
  • option 1: Repository owner can confirm the payment as soon as contract has funds (got SNT)
  • option 2: Payment can be triggered only after issue is fixed (PR is merged), to promote important bugs to be reported first.

We trust that team members will evaluate the bug and pay proper reward for it (rewards should be listed per project probably, e.g XS in project A is 2 000 SNT, XS in project B is 100 SNT, there is no voting mechanism. Contributors will just see the history for each bug in GH and decide if they want to participate in the project. So if reward is considered unfair then no more contributions will come.

Swarm Participants

Requirements

  1. Contributors should be able to discover such bug-bounty projects. Status Open Bounty site needs to have separate sections for listing/searching the projects.
  2. Organisations who need bug hunters should be able to add, suspend and remove "bug-bounty" for the repositories.
  3. Extra information on the exact build number(s), urls, expectations should be provided by an Organisation to the contributors to target their efforts to the right version in the right time. Their should be a common shared "template" and "location" for each project where this info is visible.
  4. Need to prevent bug reports submitted as "stubs" with no useful content that will be modified later and more valuable bug report content copied to such "stub" (so it looks like user A added same bug before user B). Possible solution: as soon as new is issue created with text bug-bounty bot would copy it's tittle and content as a comment, so reviewer can see initial bug report.
  5. Issue can be fixed, verified and closed even before we send funds, so need to take into account closed issues

Goals & Implementation Plan

Minimum Viable Product

Goal Date: 2018-03-30
Description:
In short: contributor can get test SNT for the reported bug. All process is manual (to verify it works and find weak spots before implementing smart contracts and changing SOB site)

  1. Contributor provides his/her ETH address on SOB site
  2. Contributor reports an issue in the GitHub repo and specifies Bug-Bounty type in the issue description
  3. Reviewer adds a comment to the issue and if bug report is ok then add a label bug-bounty and label size (e.g. bug-bounty and M). If bug report not ok then explain why (ask for extra details, close if duplicate with previous issue number, etc)
  4. Team treasurer reviews new issues with "bug-bounty" label and sends SNT to the contributor's ETH address. Also adds a comment with transaction details
  5. All bug hunting is done on specific build(s) within specified timeframe and functional scope (to be documented by bug hunt lead)

There will be a "closed beta" group of testers to avoid any frauds and games with copying others bug reports. If it works well and we implement copying initial issue description as a comment then next iterations can be open for everyone.

MVP verifies that proposed process can work and is aimed to find weak spots in the process before implementing bot/smart contracts/SOB site modifications.

Outcomes:

  1. Process description for the next iteration
  2. Description of the features to be implemented in future iteration(s)
  3. Found Issues

Swarm members:
Need several reviewers (2-3) who know open issues or can learn them to review new bugs for duplicates and good description. Also evaluator is needed to decide if swarm does what it promised.

Iteration 1..N

Goal Date:
Description:

  1. Add to the SOB site sections for Bug hunters: projects available, top hunters
  2. Make a beta run to check this model on Status app or SOB
  3. Possibility to suspend the bug hunting - need more thinking. Same for removing project from the listing
  4. Implement a bot who will copy the initial bug report description
  5. Auto-funding?

Supporting Role Communication

Finance: will use funds from SOB funding, if 24 000 SNT are used before end of iteration then we stop cc @andytudhope

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Status Desktop (Electron)

Preamble

Idea: DEV#12
Title: Status Desktop (Electron)
Status: WIP 
Created: 2017-11-13
Requires #2, #7, #9 

Summary

Develop Status Desktop application for Mac, Windows, and Linux using Electron (formerly known as Atom Shell, is an open-source framework developed by GitHub)

Vision

We are already working on Status Desktop components, implementing React Native components and libraries using Qt technology, but this work requires a lot of resources. Using Electron and React Native Web library we can develop Status Desktop reusing our code base from status-react without a lot of modifications and this work requires only clojure developers resources for code development.

Swarm Participants

Requirements

Status Desktop should provide for users all the functionality that is available in the mobile application

Goals & Implementation Plan

Minimum Viable Product

Goal Date: 2017-12-12
Description:

  1. Account can be created or recovered
  2. User can login
  3. New contacts can be added
  4. Users can send 1-1 messages to each other
  5. Users can join public chats and send messages

Iteration 1..N

Goal Date:
Description:

  1. Users can create public groups or join public chats and send messages
  2. Users can add reaction to messages
    ...

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Fix discoverable statuses

Preamble

Idea: DEV#008
Title: Fix discoverable statuses
Status:  WIP 
Created: 2017-11-10

Summary

Fix the way discoverable statuses work.

Vision

Where we are at the moment:

  • status discoveries are partially implemented - it works but with a number of open issues (old statuses are not being replaced by new ones, generally status deletion doesn't work, etc.)

Where we want to be:

  • status discoveries are scoped out properly, implemented and working correctly

Swarm Participants

SWARM_COUNT = 3

  • Lead Contributor: @goranjovic (main priority - 40 h/w)
  • Testing & Evaluation: @asemiankevich (15 h/w)
  • Contributor: TBD
  • Contributor: TBD

Requirements

Currently there is a large mismatch between how statuses should work and how they actually work. This is especially visible if we compare local statuses (without any hashtags) and broadcast statuses (with at least one hashtag). Basically, statuses without hashtags behave like users would expect, but the ones with hashtags behave like a decentralized twitter.

In addition to that there is a number of incorrect or not verified behavior related to status expiration and deletion.

Status discoveries need to comply with the following constraints:

  1. Statuses without any hashtags are visible to one's immediate contacts, but as a profile field - not in discoveries. (this works already)
  2. Statuses with at least hashtag are broadcast to all contacts, from where they are re-broadcast to all their contacts and so on. (this works already, but without any weighing or ranking)
  3. The total number of status discoveries stored in any app storage may not be larger than 1000. If more than that number of new statuses are received, the oldest ones should be deleted.
  4. Any user may have at most one status shown in other users' Discover screens.
  5. Whenever a user changes their status from A to B, where B contains hashtags, status B should replace status A on all devices that receive it.
  6. Whenever a user changes their status from A to B, where A contains hashtags and B does not, there should be a special "delete" status broadcast to all recipients instructing their apps to delete status A.

In addition to that, we should enhance the way that statuses are re-broadcast to transitive contacts to include a weight based algorithm that ranks them based on:

  • the newest available information (latest status from that user),
  • the most seen contact statuses by other contacts. (that user who has seen the same contact status from all his contacts)
  • and actual interactions with contacts, favor contacts that the user has actually messaged themselves.
  • if contact is online

Successful implementation of the constraints listed above will result with Discover being in a consistent state where the mismatch between the perception of how it should work and actual implementation largely bridged. That is the must-have list.

Nice to have list contains all the different criteria that may be used in the weighing algorithm.

Goals & Implementation Plan

Minimum Viable Product

  • Deletion of statuses on a 1000th item mark fixed and covered with automated cljs tests (constraint 3)
  • Statuses with hashtags overwrite any previous statuses from the same user (constraints 4 and 5)

Nice to haves:

  • If user replaces a status with hashtags for a status without hashtags, the old status should be removed from any devices who get notified of the change (constraint 6)

Goal Date: TBD
Description: TBD

Iteration 1

Goal Date:
Description: Working MVP

Iteration 2

Goal Date:
Description: All constraints fulfilled, basic weighing algorithm working (not all criteria)

Iteration 3

Goal Date:
Description: Working weighing algorithm

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

DApp Catalog

Preamble

Idea: DEV#00
Title: DApp catalog
Status:  WIP 
Created: 2017-11-13
Requires: #8

Summary

Add support for discoverable dapps.

Vision

Where we are at the moment:

  • Dapp discoveries are hardcoded to a small list of dapps selected by hand by developers: Dentacoin, Melonport, Augur, Ethlance, bchat and Oaken Water Meter.
  • The same dapps are included in the list of initial contacts (also hardcoded in the app)

Where we want to be:

  • Dapp creators can publish dapps in a way that doesn't involve embedding the dapp details and URL within the Status code, e.g. in a PR
  • Newly added dapps are discoverable by the users as they appear
  • The list of dapps is curated by admins to ensure they conform with the quality standards criteria for inclusion
  • Admins also need to be able to remove a dapp in case that inclusion criteria are no longer met
  • Important constraint: dapp addition, curation and discoverability need to be completely decentralized - there mustn't be any dependence on any central servers, services or persons.

Swarm Participants

  • Lead Contributor: TBD
  • Testing & Evaluation: TBD
  • Smart-Contracts: @3esmit
  • Contributor: TBD

Requirements

TBD

Goals & Implementation Plan

It is recommended that #8 is implemented before this Idea, so that Discover is in a consistent state before we add any new feature.

Minimum Viable Product

TBD

Goal Date: TBD
Description: TBD

Iteration 1

Goal Date: TBD
Description: Discoverable dapps

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Public Chat Groups

Preamble

Idea: <to be assigned>
Title: Chat moderation
Status: Draft
Created: 2017-11-23
Related: https://github.com/status-im/ideas/issues/15

Summary

Moderation of public chat groups.

Vision

Users must have greater control over the content in their chat feeds to ensure a positive experience. We can give users that control by providing them with a suite of moderation tools. Our moderation tools will enable users to define their own content rules or subscribe to a moderation provider to do it for them. A marketplace will ultimately exist where users can choose from a range of moderation providers.

Swarm Participants

  • Lead Contributor: @thisbejim
  • Testing & Evaluation:
  • Contributor:
  • Contributor:
  • UX (if relevant):

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date:

Description

The MVP provides users with basic moderation tools so that they can block users, filter posts with certain phrases, and reduce spam.

User Stories

Blocking a user

User A enters a public group chat. User B sends a message that User A dislikes. User A blocks User B. All messages from User B no longer show up in any chat feeds of User A.

Reducing spam

User A enters a public group chat. User A discovers that messages in the chat feed are low quality (spam). User A adjusts the required SNT burn value until the quality of the chat feed improves.

Filter unwanted content

User A does not want to view any messages that contain the phrase x. User A updates their moderation rules to ignore any messages that contain the phrase x. Messages that contain the phrase x no longer appear in any chat feeds of User A.

Advanced filtering with smart contracts

User A is a power user. User A configures their moderation rules to include the address of a smart contract that implements a standard rules interface. The smart contract will be called to evaluate new messages as they are received.

Requirements

  • A format / schema for moderation rules must be defined.
  • A standard rules interface for smart contracts must be defined.
  • A smart contract that must:
    • Allow a caller to burn any ERC20 token.
    • Allow a caller to label burn amounts.
    • Return burn amounts given a token address, user address, and an optional label.
  • A moderation settings UI must exist where the user may configure:
    • Blocked users.
    • Filtered phrases.
    • The address of a smart contract to call.
    • Burn amount required.
  • UserA must be able to block a UserB from UserB's profile.
  • Messages are evaluated against the moderation rules before they are rendered, aborting render where necessary.
  • Moderation rules must persist between sessions.
  • Chat group settings UI must:
    • Display the user's burn amount for that channel.
    • Allow users to burn tokens for that channel.

Iteration 1

Goal Date:

Description

Users can subscribe to moderation providers.

User Stories

Requirements

TBD

Iteration 2

Goal Date:

Description

A moderation marketplace.

User Stories

Requirements

TBD

Iteration 1..N

Goal Date:
#Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Update the text input

Preamble

Title: Update the text input
Status: Draft
Created: 27-11-2017

Summary

Clean up the text input, put all actions and commands in one row to make it more flexible. Re-arrange the actions and commands;

input

Vision

To make it more clear for people how the text input and commands work, decided to re-arrange the text input. Main points:

  • New Text Input Look
    Update text input, put the actions and recent commands in the same scrollable row;
  • Show command descriptions on long tap;
  • Make it easy to cancel a command by adding an x icon next to it;
  • Update Send Button States
    Disable the send button when there is nothing to send. Point the Send Button Up if it's a text message or something that is ready to be sent to the chat directly. Point the Send button right, if there are some extra steps required;
  • Show the recent commands first, make the list horizontally scrollable;
  • Remove custom emoji (use native emoji instead);
  • Add image chooser, for now let's make it simple and add a way to add only one image at a time. Adding multiple images requires more work to be done;
  • Added a custom keyboard with a set of pre-defined options;
  • Hide Keyboard on swipe down;
  • For now it remains unclear how the voice messages work, we can just remove the mic icon for now.

This is work in progress, open for any discussion and suggestions

screens_inputs

Swarm Participants

  • Lead Contributor:
  • Testing & Evaluation:
  • Contributor:
  • Contributor:
  • UX: @andmironov

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Status Token Registry: Default Supported Tokens for Status Wallet

Preamble

Idea: <to be assigned>
Title: Status Token Registry
Status: Draft  
Created: 2014-11-12  
Required by: #3 

Summary

Create a Token Registry owned by SNT holders

Vision

Token Registries may get bloated with worthless tokens, leading to high processing in wallet load, to solve this, a Token Registry controlled by SNT holders would be deployed for use in #3 , where the addition of tokens would only happen upon approval of a SNT holders quorum. Any change on the registry should also happen upon SNT holders quorum.
To incentive SNT holders to accept a registry, the registrant can place a bribe to distribute among all yes-voters and Status Network reserve.

Swarm Participants

  • Smart Contracts: @3esmit
  • Wallet integration:
  • SOB integration:
  • Testing & Evaluation:
  • Review:

Requirements

Goals & Implementation Plan

Minimum Viable Product

Goal Date:
Description:

Iteration 1..N

Goal Date:
Description:

Supporting Role Communication

Post-Mortem

Copyright

Copyright and related rights waived via CC0.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.