██ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ██ ██ █ ██ ██ ██ ██ ██ ██ ███ ██ ██ ██ ██ ██ ███ ███ ██ ███████ ██████

Wild is a social utility that pushes computation to the edge of the network while relying on age-old conventions to store data. Modern web frameworks proved the interface could be computed on the client while depending on a server to compute the data needs. Wild pushes both the interface and data computation to the client and distributes storage to common providers like Amazon S3, Google Cloud Storage, or any run-of-the-mill file server.

Why? Three reasons: 1) Data belongs to the people and will be increasingly valuable as use of intelligent systems demand relevant context. 2) Centralized control over user experiences has led to a stagnation of what's possible to make and share, boxing people in to cookie cutter experiences. When the service controls how data is computed and experienced, innovation stalls. 3) Centralized services enforce a set of universal values that are at times not universally shared. People deserve more control over what they see but this can only be achieved when the incentive to control consumption is eliminated.

  1. Network Protocol

Wild uses HTTP to communicate with a file server. Everything in Wild is a file, all state is persisted on a file and JSON is the most common file format. GET, PUT, POST, DELETE and HEAD methods are used to manage files on the server. ETags are used extensively to reduce unecessary uploads and downloads as well as undesired writes when content on the server is newer than the client.

  1. File Organization

Every user has the same folder structure:

~/
├─ .profile
└─ <USER_ID>/
  └─ .wild/
    ├─ config
    ├─ HEAD
    ├─ picture.png
    ├─ objects/
    ├─ remotes/
    └─ logs
  ├─ Files/
  ├─ Chats/
  └─ Notes/

The top-level folder for a user is their USER_ID. Every user has a .wild folder that manages all the file metadata and configuration files for a user. The top-level folder structure under a USER_ID is managed by Wild. Every file within these folders (excluding the .wild folder) has a corresponding metadata file tracking its location and other information not tracked by the file system.

  1. File Server

Currently the only supported file server is an Amazon S3 bucket with minimal configuration. The plan is to support a wide range of file servers.

Requirements to be a file server are:

  1. Trackers

Trackers maintain a directory of people to make them discoverable. Users can find other users. They are a minimal mapping of user names/identifiers to file server locations. Every user also acts as a mini-tracker mapping the users they follow to their servers.

  1. The Client

The client is the workhorse of the whole experience. There is a macOS and iOS that are read/write and a web client that is read-only.