Bir🅱s
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
README.md

README.md

FlockTogether

Federated Social Networking for bir🅱s

Revision 1

June 10th, 2018

Abstract

FlockTogether is a sketch of one way to combine the two federated communications technology ActivityPub and XMPP. FlockTogether attempts to create a social networking platform that values connectivity, safety, security, privacy, and autonomy. ActivityPub is used to handle public sphere communications, and XMPP is utilized to handle closed group secure communications. FlockTogether combines these seamlessly for an experience that allows interacting in the public and/or personal spheres without sacrifices.

In recent days, many have discussed new ways of approaching federated social networking. Questions have arisen such as how does one create a network that values user safety and freedom from harassment? This question has many answer. FlockTogether is one, humbly offered, vision of what something like that could look like.

A lot of this document is fairly technical, but I also added a User Experience section below that should walk through the concept from an end-users perspective. FlockTogether is an idea that I want all sorts of people to be able to critique and be inspired by, and the more technical implementation details are not neccessary for most of those conversations.

Overview

FlockTogether utilized the Publish-Subscribe extension XEP-0060 of XMPP to create ad-hoc outboxes that carry ActivityPub objects. One of the outboxes that is created is the ActivityPubOutbox. The ActivityPubOutbox is subscribed to from a serverside client (can be a separate server) that operates as a bridge between the XMPP Publish-Subscribe node and standard ActivityPub/ActivityStream HTTP endpoints.

Along with the ActivityPubOutbox, users may also address ad-hoc XMPP Publish-Subscribe nodes. These nodes function as seperate outboxes. These Coveys represent outboxes with special restrictions on who can access them and how they can be accessed. XEP-0060 defines a number of access models: Open, Presence, Roster, Authorize, and Whitelist (https://xmpp.org/extensions/xep-0060.html#accessmodels)

User Experience

A user opens a FlockTogether client on their web browser or phone. After the user has logged-in or registered to a server provided in a convienant list they land on their Home Timeline.

From their Home Timeline, a user may message:

  • Another user
  • The public
  • Their followers
  • Coveys they created or joined

Coveys

A Covey is a FlockTogether group. Some have compared them to Google+ Circles.

Coveys have an owner. That owner may decide the various access levels of who can see, read, and post to a Covey.

A user may have any number of Coveys. For example a user may have a 'Family' covey, a 'Work' covey, and a 'Fan Club' covey.

Realtime Push Notifications

A users FlockTogether client can subscribe to ActivityPub feeds and FlockTogether Coveys (both on their own server and others) to receive realtime push notifications. This means better battery life for your device and no wait time to see new messages when they are posted.

OMEMO Encryption

Coveys and direct messages may use OMEMO encryption to protect your messages. Only the intended audience can read your message.

Server

A FlockTogether server architecture can be setup with an ejabberd install and an ActivityPub sever. The ActivityPub server uses ejabberd Publish-Subscribe nodes as the backend implementation of the OrderedSequences for the user's Inbox and Outbox.

Client

There are two types of FlockTogether clients

ActivityPub Only Client

An ActivityPub only client utilizes the ActivityPub HTTP endpoints in a way similar to other ActivityPub clients (Mastadon, Pleroma, etc). The feature set is the same as any other ActivityPub client.

FlockTogether Client

A FlockTogether client uses XMPP streams for registration, Publish-Subscribe nodes, and instant messages.

Resources