141 lines
4.1 KiB
Markdown
141 lines
4.1 KiB
Markdown
+++
|
|
+++
|
|
|
|
# Ideas for extensions and differences from current implementations
|
|
|
|
## max followers
|
|
|
|
https://github.com/mastodon/mastodon/issues/20089
|
|
|
|
max followers? mastodon has a MAX_FOLLOWS and MAX_FOLLOW_RATIO so why not MAX_FOLLOWERS
|
|
|
|
## Webfinger Content-Type of activitystreams profile
|
|
|
|
i wonder if setting a Content-Type of `"application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\""` instead of `"application/activity+json"` would break anything
|
|
|
|
## Message type
|
|
|
|
Message is an IntransitiveActivity?
|
|
|
|
```yaml
|
|
id: https://alice.social/activities/1
|
|
actor: https://alice.social
|
|
type: Message
|
|
to: https://bob.social
|
|
content: "hello bob"
|
|
```
|
|
|
|
could also be a regular Activity, where `object` is the conversation or room?
|
|
|
|
```yaml
|
|
id: https://alice.social/activities/1
|
|
actor: https://alice.social
|
|
type: Message
|
|
object: https://alice.social/rooms/1
|
|
to: https://alice.social/rooms/1/audience
|
|
content: "hello room"
|
|
```
|
|
|
|
instead of making it transitive, we could swap `object` for `context` which is a bit more semantically correct if pointing to a collection?
|
|
|
|
```yaml
|
|
id: https://alice.social/activities/1
|
|
actor: https://alice.social
|
|
type: Message
|
|
to: https://alice.social/rooms/1/audience
|
|
content: "hello room"
|
|
context: https://alice.social/rooms/1
|
|
```
|
|
|
|
or have both `object` and `context`?
|
|
|
|
```yaml
|
|
id: https://alice.social/activities/1
|
|
actor: https://alice.social
|
|
type: Message
|
|
object: https://alice.social/rooms/1
|
|
to: https://alice.social/rooms/1/audience
|
|
content: "hello room"
|
|
context: https://alice.social/rooms/1/context
|
|
```
|
|
|
|
## distribution model
|
|
|
|
[tldr i should choose if i want my reply to go to my followers, or their followers, or just them, or all of the above, or whatever]
|
|
|
|
direct addressing should be better supported
|
|
|
|
alice makes a post and sends it to her followers or whatever. optionally it can be made available to the public?
|
|
|
|
```yaml
|
|
id: alice.example/54078934249073290847321094/activity/1
|
|
actor: alice.example
|
|
type: Create
|
|
object:
|
|
id: alice.example/54078934249073290847321094
|
|
type: Note
|
|
content: "hello world"
|
|
audience: Public # could be alice.example/followers instead
|
|
cc: [alice.example/followers, Public]
|
|
```
|
|
|
|
bob replies to alice, they send that to alice only, and *maybe* optionally to their followers. **this should be up to the user (bob).**
|
|
|
|
```yaml
|
|
id: bob.example/94378256423895476238954/activity/1
|
|
actor: bob.example
|
|
type: Create
|
|
object:
|
|
id: bob.example/94378256423895476238954
|
|
type: Note
|
|
inReplyTo: alice.example/54078934249073290847321094
|
|
content: "hi i'm bob"
|
|
audience: Public
|
|
to: [alice.example]
|
|
cc: [alice.example/followers, bob.example/followers] # alice's followers will be inbox-forwarded if alice allows it
|
|
```
|
|
|
|
alice can then choose to redistribute that reply. **this should be up to the recipient (alice)** and also **this should be made clear to the replier (bob)**
|
|
|
|
```yaml
|
|
id: alice.example/7659804769058743906/activity/1
|
|
actor: alice.example
|
|
type: Announce
|
|
object: bob.example/94378256423895476238954
|
|
cc: [alice.example/followers, bob.example]
|
|
```
|
|
|
|
note that alice might allow bob's replies to be automatically redistributed, if alice trusts bob.
|
|
|
|
bob may not want his reply to be redistributed though
|
|
|
|
```yaml
|
|
id: bob.example/15789436589346/activity/1
|
|
actor: bob.example
|
|
type: Create
|
|
object:
|
|
id: bob.example/15789436589346 # may be excluded but could be better to explicitly specify as null. if provided, will return 401 Not Authorized if you do HTTP GET
|
|
type: Note
|
|
inReplyTo: alice.example/54078934249073290847321094
|
|
content: "i'm gay. don't tell anyone"
|
|
audience: alice.example
|
|
to: [alice.example]
|
|
```
|
|
|
|
alice can reply to bob's private reply, but no one else can see that reply
|
|
|
|
bob might also make his reply explicitly anonymous and transient by using id: null or not providing id
|
|
|
|
alice's reply SHOULD NOT target her followers, although she is capable of doing so. **this should be an explicit decision.**
|
|
|
|
### maybe objects shouldn't be inlined tho
|
|
|
|
spritely magenc golem ocappub etc etc etc
|
|
|
|
```yaml
|
|
id: alice.example/54078934249073290847321094/activity/1
|
|
actor: alice.example
|
|
type: Create
|
|
object: alice.example/54078934249073290847321094 # how to fetch this?
|
|
cc: [alice.example/followers, Public]
|
|
``` |