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

4.1 KiB

+++ +++

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?

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?

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?

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?

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?

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).

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)

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

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

id: alice.example/54078934249073290847321094/activity/1
actor: alice.example
type: Create
object: alice.example/54078934249073290847321094  # how to fetch this?
cc: [alice.example/followers, Public]