-
Notifications
You must be signed in to change notification settings - Fork 4
UL aggregates
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.
A registered, confirmed account on a server. In ActivityPub-terminology this is the Actor.
A member is presented as, or has:
The public visualisation of a member.
When member A follows member B, member A is a follower in that relation.
When member A follows member B, member B is a contact of member A in that relation.
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?
Optional public name for the person. E.g. a real name. Managed only by the member themselves. Single-line, UTF8.
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.
Both optional images to present onselve. Managed only by the member themselves. Scaled and scrubbed on-server.
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.
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.
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.
Representing anyone participating in the flockingbird network.
Actors are the group containing both any members of our instance, and any peer of another instance.
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.
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?
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.
An App, Website or Software that operates on behalf of the Member and requests data or proposes changes with an Instance.
See https://w3c.github.io/activitypub/#inbox
See https://w3c.github.io/activitypub/#outbox
See https://w3c.github.io/activitypub/#update-activity-outbox
TODO
TODO
TODO
TODO
TODO
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
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
TODO
TODO
TODO