gnusocial.rocks/v3/updates-improve-the-attachments-system.md

1.8 KiB

Updates: Improve the Attachments system

With the milestone Port Media system from v2 we had ported the existing attachment system. The fact is that this system wasn't good enough.

It's always important to start with the original code as that allows us to review past decisions and understand all the corner cases previously considered.

Sadly, what motivated us to re-design the attachment system were the non-considered corner cases. In particular:

  • Remove title from attachment, as it's part of the relation between attachment and note.
  • Remove actor from attachment, many actors may publish the same attachment.
  • Remove is_local from attachment, as it's part of the relation between attachment and note.
  • Remove remote_url from attachment, different urls can return the same attachment.
  • Attachment now has a reference counter
  • Add entity GSActorToAttachment
  • Add entity GSActorToRemoteURL
  • Add entity RemoteURL
  • Add entity RemoteURLToNote
  • Add entity RemoteURLToAttachment
  • AttachmentToNote now has a title attribute

Key commits:

The structural changes and how it compares to v2 is detailed in our wiki.

Some relevant observations:

  • Link is now part of GNU social Data Representation terms. It represents any remote URL being shared in a note.
  • There's only one fixed directory for GSFiles.