hosted conversations open to interpretation

ℹ️ To see Truffle in action, check out my personal feed. There's a reader written in React, as well as the raw JSON feed.

What is a truffle?

Truffles are decentralized messages for hosting conversations. They are open-source, user-definable, and can be transported independent of any specific social network. Because they are open-source, they can be filtered, sorted, and displayed in any method desired by end-users.

Why truffles?

Centralized social networks (e.g., Facebook, Twitter, etc...) are great at helping you stay in touch with people around the world. However, they're generally noisy and distracting. This is because most social networks monetize user activity. The more user activity they can generate, the more ads they can show. Controversy and debates generate more activity, so social networks are naturally disincentivized from carefully moderating conversations. They have even less incentive to give you access to raw data on the network, which you could otherwise use for sorting and filtering.

Unlike social networks, truffles are hosted by individuals. Since the format is open, truffle publishers can add any structured information desired, which end-users can then use for filtering. Also, truffle publishers are responsible for publishing replies they receive, which decreases the likelyhood of "drive-by" comments derailing conversations.

Why the the name "truffle"? 🍫🍬

Truffles (chocolates, not fungi) are small treats of different kinds. You can usually differentiate truffles by their external coating or icing. They're special, rich, and desireable. People seek them out.

By contrast, cookies leave crumbs everywhere and are used to track you around the Internet. They're shoved into HTTP headers when you aren't looking.

Truffle format

Truffles are JSON objects with one required property (id) and two optional ones (hostId and timestamp). All other properties in each truffle are user-defined.

The id property value should be unique. Using a UUID generator for this value is strongly recommended.

The hostId property is a reference to another truffle'sid. This allows for replies and threaded conversations.

The timestamp property is the date and time when the truffle was originally published. This should be a string representation of the date and time in ISO 8601 format. You should be able to generate this with the following JavaScript:

date = new Date; date.toISOString();  // or date.toJSON();

Any other properties included in the object are open to interpretation. They can either be displayed in a pre-determined format (e.g., whenever you see the property coordinates, use it to show a map), or they can be displayed as plain-text.

Truffle feeds

You can create a feed of truffles by placing them in an array in reverse-chronological order. Here is my truffle feed.