Roadmap - amark/gun GitHub Wiki

Upcoming 2020 -> 2021 -> 2022 changes, notes to self:

  • gun.user() to support multiple users
  • ack.ok = {shard}
  • RAD needs to truncate file names (they got too long with the pubkeys), this might break all storage (and I don't want to write yet another auto-migrator)
  • Immutable links be auto de-stringified and chainable (I'm sad that this already doesn't work)
  • gun.js include an AXE a/b test (regardless of whether you've included axe or not) unless you opt out GUN.testAXE = false

RAD

Radisk is suppose to be the default storage adapter for GUN.

It has previously sustained ~3K writes/second acknowledged from disk across 1M+ writes. But its performance has regressed and it currently suffers 2 major problems:

  • Parsing 5MB+ file can take up to 2 seconds.
  • Doing 10K+ writes in 1 loop causes No ack errors.

Our target is to be able to handle 1TB/day of continuous load on commodity hardware (near 0 cost).

Read performance needs to be addressed first, with this priority in fixes:

  1. Prevent GUN from asking RAD to do reads if GUN has already gotten the node from RAD, but still ask again if any portion of the node has been garbage collected.
  2. Always read from and cache to local disk, even if using a remote storage adapter.
  3. Use @rogowski's improved RAD parser.
  4. Without breaking environment support, do not block hearing messages while handling parsing.

Reads may be impacting write performance, once fixed, retest write benchmarks.

AXE

AXE is a network of computers that provide optimized routing for bandwidth.

AXE has hit its limits at 10M+ monthly active users on 1 free Heroku relay peer with HackerNoon.

Our target is to handle 100M/monthly users on only 10 relay peers by rebalancing traffic amongst them using a Radix DHT sharding algorithm.

SEA

Security, Encryption, Authorization uses cryptography to prevent users from modifying each other's data.

It is successfully used in production with notabug (P2P Reddit)'s 10K+ users.

SEA can handle ACL (read/write permissions), but could benefit from abstractions that handle it automatically on GUN.

This can be done by an author stating what other public keys have write access to a particular soul or path in their graph, and then reading from that matching path or soul on the other user's graphs and merging the resulting object for view. Extremely large groups would need to cache/index the merged objects so load time does not slow down.

ERA

Economic Resource Allocation should be able to interoperate between different apps:

  • Decentralized Uber.
  • P2P AirBnB.
  • Food delivery.
  • Friend discovery.
  • Find knowledge.

With Freeism, this should be possible to do without spending money.

To make this possible, we need some algorithmic tools:

  • Iris/Identifi makes sure you are protected by friends.
  • Meta Editor makes it easy for stories, music, art, and games can be generated by users.
  • Party which turns the existing centralized web into your own platform and marketplace.

Notes

Notes for team:

  • Would GET throttling per-"screen" help?
  • Is GUN get split replies "l" skipping each letter change (happening in a GET itself "~T")? One time it did not split, it did not seem to come from an old browser.