FitTrackee
FitTrackee copied to clipboard
Federation support [development on pause]
Allow a FitTrackee instance to federate with other instances with ActivityPub.
[!NOTE] Development is on hold since February 2023. The first part of the social features will be released without federation. Before resuming development, adaptations and fixes must be done following the implementation of this first part.
First draft (as experimental feature)
scope may evolve
Notes
- by default, federation is disabled. FitTrackee can still be used as single user application. Note: actors for local users are created even if federation is disabled in case it is activated later
- visibility levels: add "local followers only" and "local and remote followers" levels to existing ones
- visibility level on analysis data to handle (added after development was paused)
- workouts
- a custom object on FitTrackee instances, a
Notefor non-Fittrackee Instances (for example Mastodon) - for now, location-related data remain on local instances
=> a workout created with a gpx file appears like a workout without gpx on remote instances (FitTrackee or non-FitTrackee). - visibility update
- if workout visibility changes to private, it sends a
Deleteactivity to remote instances - if workout visibility changes from private to another visibility, it sends a
Createactivity to remote instances - otherwise, it sends an
Updateactivity
- if workout visibility changes to private, it sends a
- if workout sport does not exist (the instance has not been updated since release of a new sport), workout is not created
- a custom object on FitTrackee instances, a
- domain change not supported for now
Progress
(not exhaustive)
Latest tests with another application
latest federation testing with a Mastodon (v4.0.2) and another FitTrackee instances:
| FitTrackee | Mastodon |
|---|---|
Federation
-
Federation configuration
- [x] federation can be enabled (disabled by default)
- [ ] allow disabling federation after activation (impact?)
- [ ] allowed/blocked instances
-
Webfinger
- [x]
/.well-known/webfinger(get resource links) - [x]
/.well-known/nodeinfo(get node info links)
- [x]
-
Node info
- [ ] [in progress 🔄]
/nodeinfo/2.0
- [ ] [in progress 🔄]
-
Keys and signature
- note: actor keys are generated even when federation is disabled to easy its activation
- [x] generate signed headers
- signature verification
- [x] with and w/o digest
- [x] check if actor who signed header is the same in activity
-
Application
- [ ] [in progress 🔄] Shared inbox
-
Actor
- Types:
- [x] Person
- [ ] Application
- ...
- [ ] [in progress 🔄] Inbox
- [ ] Outbox
- Collections
- [x] Followers Collection
- [x] Following Collection
- ...
- Types:
-
Visibility settings
- [x] visibility levels
- public
- only local followers
- only local and remote followers
- private for workout, mentioned users for comments
- applied on:
- [x] workouts data (without location data)
- [x] map
- [x] comments
- [ ] analysis data
- [x] visibility levels
-
Activities
- [x] Follow
- [x] Accept
- [x] FollowRequest
- [x] Reject
- [x] FollowRequest
- [x] Undo
- [x] FollowRequest
- [x] Like
- [ ] Create
- [x] Workout on remote FitTrackee instances
- only workout data (no location-related data)
- archive import: limit on 5 latest workouts (to improve or remove)
- [x] Workout on non-FitTrackee instances (= Note)
- [ ] handle i18n and imperial units depending on user preferences
- [x] Note (Workout comment)
- [ ] update template
- [x] Workout on remote FitTrackee instances
- [ ] Delete
- [x] Workout (on FitTrackee and non-Fitrackee)
- [x] Workout comment (= Note)
- [ ] User/Actor
- [ ] [in progress 🔄] Update
Note: previous versions are not stored for now.
- [x] Workout (on Fittrackee instance)
- [x] data update
- [x] visibility update
- [ ] workout refresh
- [x] Workout (on non-Fittrackee instance) (= Note)
- [x] Workout comment (only content can be updated)
- [ ] User/Actor
- [x] Workout (on Fittrackee instance)
- [x] Like
- [x] Workout
- [x] Comment
- [ ] Block
-
Objects
User account
- [ ] allow importing data exported from another instance
Comments
- [ ] update autocomplete with remote users
- [ ] pagination?
- [ ] how to handle replies?
- [ ] direct link to comment?
Notifications
- [ ] add UI notification from remote instance events
- ...
Moderation
- [ ] handle remote content
TODO in a next version
- map thumbnails for remote workouts (on FitTrackee and non-Fitrackee instances)?
- store edited versions of a comment
- workout for remote follower
- tags?
latest federation testing with a Mastodon (v4.0.2) and another FitTrackee instances:
| FitTrackee | Mastodon |
|---|---|