Overview
PawSD is a distributed directory system for modern networks. It permits everyone to publish information about themselves and advertise their networked services in a secure and open way, promoting autonomy and independence from centralised naming organisations.
Compared to DNS (its closest equivalent in current widespread use) it allows you to use completely arbitrary names, doesn't require you to pay money to anyone, is cryptographically verified by default, and supports usage of networks other than the Internet, among other benefits. Its main shortcoming is that names are necessarily not globally unique, so you can't just tell someone to go to a particular URL and expect it to work. In practice though, this can be solved through hyperlinks and large “community directories”, and it is more detrimental for unsolicited advertisements and spam than it is for genuine friendly networking.
PawSD also tries to avoid creating any distinction between “administrator” and “end user”. As a user, you can create and manage your own zone(s), which lets you publish edge names (see below) and add entries for your website, etc., through the same graphical interface you use to manage your contacts.1)
It is based around a few core data structures:
- A zone represents one logical organisation or person, and serves to collect various related services together. Every zone is identified by a public key and the contents of the zone is always signed using the corresponding private key.
- A service represents a single resource (for example a website, game server, messaging endpoint, …) which may have multiple different ways of accessing it (e.g. the same site could be retrieved through HTTP, Gemini, Gopher and even packet radio or snail mail!). Each service is composed of a number of records, each of which indicates one such access method (or other piece of metadata). Additionally, the zeroth service in every zone contains information about the zone itself.
- Records are a list of tag-value pairs, each one containing a small piece of information.
- Tags are abstract labels for data. Usually they are given readable labels, but internally they are represented by long numbers (16 bytes) which are not centrally assigned or managed.
Additionally, there are a number of different ways zones and services can be given readable names (all of which are arbitrary Unicode strings):
- Self-proposed names are chosen by the creator of the zone
- Local names (or “petnames”) are chosen by the end-user, and therefore may be more personally meaningful (e.g. “mum” instead of “Jane Smith”) and/or can be used to disambiguate conflicts
- Edge names are chosen by the creator of one zone but given to another zone
- Proposed names are not strictly part of PawSD itself but may be found in protocols that use it, such as when a document links to one from a different zone and provides a suggested name for the linked-to zone
The concept of “edges” allows people to publish their own names for each other, which can be followed by others. For example, an organisation might publish edge names for their staff in a professional context, such as “Jane Smith (Camera Operator)”, while your friend might publish edges for the same zones with more informal names like “jane from college”. (of course these are quite contrived examples, but hopefully they illustrate the point!)2)
