Skip to content

DIP-290 Reposting #290

@wesbiggs

Description

@wesbiggs

Abstract

Provide a facility for one user to repost (share, highlight) another user's content in their own content stream. The ensuing thread is separate from the thread of the shared item.

Additional goal: Make it easy for a user to tell if their content has been reposted (i.e. without having to retrieve all content). Enable accurate counting of public reposts.

New Announcement Type

Repost:

  • announcementTypeId: enum
  • fromId: user doing the sharing
  • targetContentURI: DSNP Content URI of the post being shared
  • url: of sharer's comment Note
  • contentHash: of sharer's comment Note

A Note should be created for every Repost announcement, even if there is no additional commentary from the reposting user. This allows all Repost Announcements to have a DSNP Content URI. Additionally, important metadata such as the reported time of reposting is in the Note.

In line with changes to Reply Notes, a Repost Note should include "inReplyTo": "{dsnp_content_uri}" for additional validation and clarity of context. (While "inReferenceTo" might be more appropriate, standardizing on a single property to use across the two types feels more useful.)

Relationship to Other Announcement Types

Reposts should be able to reference Broadcast, Reply, or other Repost Announcements. The Reply and Reactoin Announcement definitions should be updated to allow reference to Repost Announcements.

Image

Motivation

This is a popular feature on social networks and allows a conversation that started with one set of users to be discovered and/or discussed by a second set of users. It gives the reader the ability to jump to the canonical content item that was originally posted if desired.

Specification Pull Request

Current change pull request: TBD

Rationale

Why were the design choices made? What other solutions were rejected and why?

Could have added an optional field to Broadcast. In general we try to avoid optional fields and types with variable semantics.

Could have just included the full text of the original in the share Note. This would not allow for easy counting of shares, and provides no authenticity guarantees or help to user agents.

Could have added a new type of attachment or special property within a note to declare the shared post. Again does not allow for easy discovery/counting of shares.

Backwards Compatibility

Any proposal that breaks compatibility with previous versions must describe how the change will be implemented and handle the migration period.

Because this is a new Announcement Type clients will have to be updated to "see" it (and might see Replies that reference it and have trouble finding a home for them).

Reference Implementation and/or Tests

What could this look like implemented or what tests could be provided to assist in validation of implementations?

Security Considerations

Any change will effect the security of the system in some way. Describe the implications this DIP on security, both technical and human.

Dependencies

  • List of dependent DIPs if any.

References

Any references or other related links that might be helpful.

Copyright

Copyright and related rights waived via CC0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions