Skip to content

Instantly share code, notes, and snippets.

@makew0rld
Last active February 23, 2019 17:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save makew0rld/d00f7fc15ad83ddc6e9039a3863be816 to your computer and use it in GitHub Desktop.
Save makew0rld/d00f7fc15ad83ddc6e9039a3863be816 to your computer and use it in GitHub Desktop.
Node dreams backup before sharing

Node dreams 💻💭

To acheive the dream below

  • A lot of UI work is needed
    • Web design
    • Hank?
  • Existing technology needs to be improved to work in a mesh environment
    • IPFS, SSB, etc
    • Either hacks on our side or us submitting PRs to their repo
  • Deployment and outreach needs to happen above all else
    • Otherwise there's no point to all this development
    • Good, user-friendly development may beget deployment - but it shouldn't be depended on
    • With enough resources it can happen concurrently, but idk if we have enough
  • A lot of work needs to happen in general, and it's possible we don't have the resources for it
  • But maybe we will if we all work toward a common goal

General Overview

  • Meshes with nearby nodes wirelessly
  • Provides some software services to users
  • Software services are (mostly) browser-accessible
  • Provides a starting point for users into the mesh/P2P/decentralized world
  • Makes it easier to get into said world
  • Starting point to replace bad things currently going on in the Internet and technology
  • Fosters community engagement
    • Community setting up a mesh, talking with neighbours on SSB, etc
  • Only uses FOSS
  • Open to improvements and additions from anyone who can contribute
  • Money/Capitalism is not required in any way
    • Hardware purchases require money, but are not done through us
    • Obviously this can happen separately though: Internet service, support, custom networks, etc

Internet

  • Can provide Internet through tunneling
    • Not a requirement
    • Internet arrangements (especially paid ones) are separate from acquiring and setting up a node
  • Not required for the node to work in any way
    • With the possible exception of the initial install

Services

Overview

  • Runs P2P services
  • Makes it easier on the user(s) to get into this space
    • Cause they don't have to run servers themselves, or install a bunch of stuff on their computers
  • Accessible through a browser
    • ie IPFS server with WebUI
  • If not a browser, than a local site directs users to instructions on how to install the required software on their machine
    • The node could still run services to help
    • ie The node runs an SSB server but instructs users to install Patchwork
  • Also can point users to services not running on the node
    • Mastodon, Pixelfed, etc
    • Idk about this
  • All decently easy to use for users who are used to things like Google Drive
  • All encrypted

Desired services

  • Type of service
    • Known software that provides that service
  • File-sharing
    • IPFS
    • Brig - uses IPFS
  • Social networking
    • Aether
    • SSB
  • Live chatting
    • Cabal - won't work with IPv6
    • Scat - uses SSB protocol
    • ytalk - simple UNIX tool - too simple
    • P2P XMPP
  • Simple website hosting
    • IPFS
    • Will need a new UI for this
  • DNS

Landing page

  • Attractive overview of the node
  • Some nice simple stats
    • Uptime, # of clients & peers, CPU, software version, stuff like that
  • Documents services on the node
    • 1,2 sentence description
    • Link to homepage
    • Status of the service - Running / Not running, Enabled / Disabled
  • Links to local documentation
  • Links to Admin UI
  • Links to tomesh website, chat, etc
  • Graphic node visualization?

Documentation

  • Locally hosted
  • Browser accessible
  • From docs/ in the repo
  • Convert MD files to HTML?
  • Should feature some troubleshooting tips
  • Links to repo and tomesh chat

Admin UI

  • This is a big one for node UX
  • Basically a browser-accessible web interface for managing the whole node
  • Similar to what routers might have
  • Settings, stats, etc
  • List of clients
    • MAC address to determine device type
  • List of peers
  • Install, uninstall, update
  • Module configuration
    • Some IPFS config, etc
  • Reboot, shutdown
  • Restart services, enable and disable
  • Possibly just another tab of the Landing Page
  • Managing firewall
  • Domains example from PeerDNS

Modules

  • No flashing for updates
  • Individual packages
  • Pre-compiled where possible
    • Only when the original maintainers do this
    • Otherwise it can't be verified that we aren't doing anything malicious
  • Can be installed, uninstalled, updated separately from each other
  • Easily accessible package scripts online
  • Hosted on the Internet and mesh
  • Updates over mesh possible
  • Decentralized updates maybe
    • IPFS
    • Packages would be cached by nodes when they update or install stuff
    • Local IPFS address in apt conf
  • Likely as .deb packages
  • Module packaging standards and rules
  • Other people adding modules
    • Anyone can make a PR to add to our module repo
    • If it is rejected for not following standards/rules/COC then anyone can make their own repo and add it into their node
      • Like how many Linux OS package repos work

First Installation

  • No Internet install
    • Pre-generated OS images
    • Website where you can select profile/modules and download the associated OS image
    • One-time boot script that sets everything up - generating keys, etc
    • Harder to do but nicer since Internet isn't required
  • Internet install
    • Default OS image with no configuration except WiFi AP
    • Local website where you can select profile/modules and then install everything

Hardware

  • Anything that can satisfy these dreams
  • Single board computer
  • Potentially combined with a router, such as Librerouter + RPi

DNS

  • Some sort of DNS would be amazing
  • The DNS dilemma of Zooko's triangle has sort of been solved by Namecoin
  • But a solution that also doesn't require capitalism / money is harder
  • dnssb?
  • Some sort of self verifiable system based on node IP address?
  • Records placed in a DHT?
    • IPFS DHT is accessible for general use with ipfs dht
  • PeerDNS
    • Very recent project
    • Trust level based
    • Anyone can publish records
    • Designed for mesh, CJDNS support built-in
    • HTTP API
    • Nice UI

Deployment

  • Widespread deployment
  • Lower-income areas targeted
  • Library partnerships
    • Host nodes and improve network
    • Can run some sort of course related to mesh/P2P with library node as example or proof of concept
    • Can preach the virtues of dweb and alternate systems kinda?
  • Legality of deployment is investigated and considered, but not the sole deciding factor
  • Makerspace and other tech area partnerships

Outreach / Education

  • All nodes have a poster with links to our website and chat, etc
  • Some door-to-door stuff
  • Partnerships above will do some of the job
  • Continue with workshop
  • Several (poster format?) explainers about why one should care about privacy, decentralization, mesh, etc
    • Showing people SSB and stuff like that is likely more effective though
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment