hyaenidae/TODO.md

153 lines
6.3 KiB
Markdown
Raw Normal View History

# Things That Need To Be Done
## Actix Web 4.0
It's not out yet, and not everything has a beta release yet, but we should continue tracking the
status of 4.0 and update our libraries as we can.
2021-02-04 03:19:14 +00:00
Current status:
- actix-webfinger on actix-web 4.0.0-beta.1
- http-signature-normalization-actix on actix-web 4.0.0-beta.1
- background-jobs on actix-rt 2.0.0
## Sled 1.0
2021-01-22 05:51:46 +00:00
As of the time of writing, the official Sled 1.0 release date is ~~in two days~~ eventually. I'm
not sure how much the API will change, but I can assume there will be changes around flushing and
transactions, as those have been the subjects of recent PRs against Sled. Most of the other PRs
against Sled in the last month or so have been about reducing memory usage by employing a variety
of fancy techniques backed by whitepapers.
## Async
A lot of logic in the Profiles and Submissions modules synchronously accesses Sled, which is an
issue because Sled is potentially blocking. All of the Big Dangers (transactions) are safely on a
threadpool already, but a couple iterations are currently occuring directly on the Arbiters.
## Organization
A lot of modules in hyaenidae-server have circular dependencies, and a few are more than a thousand
lines long, each. These should be separated where possible into smaller modules which create a
dependency DAG
2021-01-17 22:26:41 +00:00
## Pagination
Tasks:
2021-02-05 03:07:37 +00:00
- Enable pagination for notifications
2021-01-17 22:26:41 +00:00
- (potentially) Enable pagination for comments on submissions
- this one is less clear because comments are tree-structures
## Submissions
Tasks:
- Add "Mark as Sensitive" to report actions
- Ensure submission updates cannot override an administrator's "mark as sensitive" ruling
- (potentially) expose an NSFW flag on profiles to both hide profile banner image, and to default
submissions to NSFW
2021-01-17 22:26:41 +00:00
## Registration
There is currently no way to disable or limit registration to Hyaenidae
Tasks:
- Add an option in the Admin settings to disable registration
- Create a concept of Invite Links which can be used N (user specified) times to register accounts
when registration is disabled
- Add an option in the Admin settings to generate invite links
## Tags
Tags are useful for searching Hyaenidae for content. There should be a tag system that makes it
simple to search for submissions.
Tasks:
- Design a Tag database optimized for multi-tag lookups (within reason)
- Design a UI for authors to add tags to a submission
- Design ActivityPub interop for tag federation
## Reports
Reports are implemented for on-server moderation, but cross-server moderation has not been tested.
Tasks:
- Add a "delete" mechanism for remote objects. This should not induce any federation, but should
ensure the object is not accessible locally
- Enable forwarding reports to origin server. There is already code written to perform this
forwarding, but it is not exposed in the UI.
2021-01-17 22:26:41 +00:00
- Enable viewing of closed reports
## Reacts
Reacts are similar to "likes" on other platforms, but do not get added to a collection for a given
profile. Reacts only notify the author of the item being reacted to.
Tasks:
- Design a UI for reacting to submissions
- Design a UI for reacting to comments
- Design a UI for reacting to posts (see Posts)
- Decide which kinds of reacts are valid
## Posts
Posts are top-level content created by profiles that do not have associated images, and so cannot be
considered Submissions. Posts are stored and viewed separately from submissions, and are more
"ephemeral" in that they will not backfill (see Backfills).
Tasks:
- Design a Post database
- Design a UI for creating new posts
- Design a UI for viewing posts from followed accounts
- Hook Posts into Note federation code
## Direct Messages
Direct Messages are Posts that are shared directly between two profiles, and are not publically
visible to other profiles.
2021-01-18 04:10:17 +00:00
## Shares
Shares are a collection of submissions a profile can display that were submitted by other profiles.
They will not appear in followers' feeds, but will be visible on a given profile's page. This
feature is analogous to a public favorites gallery on other platforms, although it is separate from
"reacts", which can act as favoriting a post. Whether a profile is notified of a share is undecided.
Tasks:
- Add shares tree(s) in the data store. This is likely not much more than a single tree with a key
consisting of the Profile ID, a timestamp, and the Submission ID, where the value of is the
Submission ID as well. A second tree could contain Profile ID + Submission ID keys for quick
lookups for whether a given submission has been shared by a given profile to avoid duplicates
- Add a shares page or section to the profile section of Hyaenidae.
- Implement Shares in ActivityPub as a variant of Announce Note where the Note represents a
Submission
## Backfills
Bakfills for a given item should not be permitted to run concurrently. A single backfill task may be
permitted to have multiple requests in-flight, but no two tasks may backfill the same item. There
should also be a limit on concurrency for backfills from a given server
Tasks:
- Add Profile Backfill on federation
- Add Submission Backfill on follow
## Object Cleanup
When things get deleted or suspended, we need to ensure that the database does not hold onto any
lingering data. This includes cleaning text fields for deleted items, cleaning up dependent items on
deletion.
Tasks:
- Differentiate between Profile Deletion and Profile Suspsension
- Federate profile suspensions for local suspended profiles
- Delete profiles (and submissions and comments and reacts) for defederated servers
## Federation Fixes
Not all of federation has been tested yet
Things that have been tested:
- Federation:
- Request
- Accept
- Reject
- Defederate
- Profiles:
- Create
- Update
- Submissions:
- Create
- Update
Anything not in this list has not been tested and needs to be verified and possibly fixed.
## Blind Key Rotation
If an incoming post has an invalid key, we should try fetching the key/profile & then verifying the
signature again. This is because other softwares, like mastodon, work on the assumption that you
might not want deleted posts to be associated with your account. It's not a Big Deal IMO when only
HTTP Signatures are in use, such as in Hyaenidae, but when JSON-LD Signatures are in use by other
software, it becomes trivial to trace authorship of any object.