wiki.trwnh.com/content/app/ideas.md

132 lines
3.9 KiB
Markdown

# Ideas for extensions and differences from current implementations
## 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]
```