Skip to content
This repository has been archived by the owner on Jul 3, 2023. It is now read-only.

UL aggregates

Bèr Kessels edited this page May 18, 2021 · 1 revision

AggregateRoots and domain models

The domain model is not set in stone, and as such will always differ at least a bit from actual implementation: not everything is implemented yet, and implementation may yield insights that are not yet documented below.

Member

A registered, confirmed account on a server. In ActivityPub-terminology this is the Actor.

A member is presented as, or has:

As Profile

The public visualisation of a member.

As Follower

When member A follows member B, member A is a follower in that relation.

As Contact

When member A follows member B, member B is a contact of member A in that relation.

Has a Handle

The primary key, in form of @{username}@{instance-fqdn}. e.g. @[email protected] means "hpotter" on example.org.

TBD: "handle" is confusing, as it is also a verb: "to handle X"; what is a better userfriendly name?

Has Name

Optional public name for the person. E.g. a real name. Managed only by the member themselves. Single-line, UTF8.

Has Bio

Optional summary for the profile. E.g. a current position or a short description of the person. Managed only by the member themselves. Markup allowed.

Has Avatar and Header img.

Both optional images to present onselve. Managed only by the member themselves. Scaled and scrubbed on-server.

Has FollowingList

This is private to Member A, and represents the members that Member A has in their contacts.

The FollowingList and the PrivateContactList merged, make up Member A's contacts.

Has FollowersList

A SortedList with members following this member: members who have member A in their contacts are on the FollowingList of member A

This is the list that member A when broadcasting changes.

Peer

An Actor on another Instance.

One could think of them as Remote Members, Foreign Members or Remote participants. We call them Peers, because Instance Y may not be Flockingbird and/or may not call their registered 'users' by the name of Members.

Actor

Representing anyone participating in the flockingbird network.

Actors are the group containing both any members of our instance, and any peer of another instance.

PrivateContact

A profile, or member-alike object that represents a contact added to a contactlist, but which is not a member (yet).

In a common addressbook, this would be "a contact". In Flockingbird, however, contacts should often be members. Which is why we have additional PrivateContact.

They are Private, in that they belong to the author, are only visible by the author and never shared. If Bob creates a "Jane Doe" entry in his contacts, "Jane Doe" is not a member. Any contact details are only ever visible to Bob and no-one but Bob will ever know that "Jane Doe" is in his contacts.

Instance

An instance is a running version of the Flockingbird server software. In network terminology, it is a Node. In other terminology often referred to as a Server. But since a server can also mean the hardware or vps that the software runs on, we use Instance.

A member registers at an Instance, is a member of an instance.

An instance stores the Members' data. An instance handles the storage in In- and Outbox and handles the activities.

TBD: the word "Community" is friendler and less technical. Should we use this instead?

Instance Admin

A person administrating the software. They have root access to the software, can access and all data for all the members on their instance.

This is also a moderator, being able to block, alter, etc members.

An admin can configure the software. And an Admin can determine which other Instances can communicate with their instance.

Client

An App, Website or Software that operates on behalf of the Member and requests data or proposes changes with an Instance.

Inbox

See https://w3c.github.io/activitypub/#inbox

Outbox

See https://w3c.github.io/activitypub/#outbox

Activity

See https://w3c.github.io/activitypub/#update-activity-outbox

CreateActivity

TODO

UpdateActivity

TODO

DeleteActivity

TODO

FollowActivity

TODO

Tombstone

TODO

Tag

A short-text label that is applied to a Profile. Used as grouping or classification of that profile.

A tag has text that is a single-line unicode string of characters including spaces. Max 35 characters (Based on Stackoverflow limits)

  • It has an author, which is a Member.
  • Has a target, the profile (member) being tagged.
  • Has a tag, which is the label content.

Tags are not deduplicated. but stored as separate text-author-target combination tuple.

Seen from a Profile, a tag is unique: e.g. "hpotter" profile displays only one tag "auror", but that tag then has many authors.

A tag has a Visibility of Private, Community or Public

Adding a tag to a profile is the act of Tagging

Note

A free-text, rich-media, comment left on a profile.

Free-text is technically limited to 2048 chars. Unicode. Markdown or other markup allowed. Rich-media means it can be images, video, or markup text with these images or videos optionally embedded. Other than embedded video, no other embedded HTML or javascript is allowed.

  • It has an author, which is a Member.
  • Has a target, the profile (member) being annotated.
  • It has optional content which is the text of the note.
  • It has a list of 0 to N attachments, which are images or video's.

Each note is unique: two notes with accidentally the same content, will be seen as two distinct notes.

Adding a note to a profile is the act of Annotating.

A tag has a Visibility of Private, Community or Public

ContactDetail

TODO

RelationShip

TODO

Visitor

TODO

Clone this wiki locally