The reason I split this discussion from the original “collapse reshare” is because of
diaspora_federation#82 and the related discussion on IRC.
In short, it was suggested by a PR to add a
text property to the
reshare entity. The main reasoning behind this was to enable people to add “their own comments” to a reshare when resharing them. Right now, some folks add a comment below their reshare, and some use a weird userscript that quotes the enire post. Both cases are less than ideal for obvious reasons. Adding a “text” field to the reshare would make this easier.
However, in my opinion, this is a short-lived workaround.
It is true that adding this property could solve the initial problem, but I see some obvious limitations. For example, when resharing a self-drawn comic, I might want to add my own comic as well, but I only have a text field available. Even worse, while talking about aggregating reshares in the stream, supporting “customizing” the reshare makes combining reshares even harder, since we’d have to handle “plain reshares” and “reshares with text” differently and somehow come up with an interface that shows both the plain reshares and the individual comments by people. So with adding
text to the reshares, we’d solve half of an issue by creating 3 new. Not good.
Instead, I propose two things.
- Leaving reshares as-is: a simple reference to another post, without anything fancy. After we solved the current discussion, I will propose removing the ability to comment/like/reshare on reshare instances. This would means that all comments, likes, reshares are always at the root post, not at the reshare. There are some implications to that and this might be a controversial thing, but it’s the only way we can ever aggregate reshares. However, this is not entirely the scope of this dicussion, and I will start this discussion when the time is right (i.e. after we’re done here).
- Inventing a way to reference posts, effectively creating a logical link between two posts without directly affecting each other. I will explain in detail.
Below is my proposed solution, with an implicit request for comments. Since this is a fairly complex topic, I will actually be using subheadlines here to make the text easier to navigate and reference. (I guess that’s a first for me!)
Please note that this has some unfinished work in it, this is not considered a “final implementation spec” or something, but merely a starting point. Also, I didn’t do any grammar- or spell checking, and the first version was drawn late at night. So sorry for painful errors.
Our users want a way to distribute a post while also enriching it with their own opinions and ideas. This proposes a way for users to create a post themselves, allowing them to do everything they can do in posts, while clearly linking the new post with another item. This is neither an addition nor a replacement to our current reshares.
For the lack of a better word, I will talk about “referencing posts” in this proposal, where the links between posts will be called “references”. In the initial post, “reshare” and “augmented” reshare" was used, which I find hard to understand. Also, “repost” and “spread” was a suggestion, which I find highly ambiguous. “Referencing” is not perfect and I am aware of it, but I did not manage to come up with something better.
With the support for
diaspora:// prefixed URIs on the way, we will have an easy way to reliable reference posts, no matter what pod they are on. Basically, this means we will be able to use
diaspora://email@example.com/post/14127090719d01351b19101b0e8ace24 soon and no matter what pod this URI is received by, there is a clear way to both retrieve the post and display a link to it. In addition, diaspora pods will automatically transform local HTTP URIs to those diaspora URIs when applicable.
So, I propose to make linking to posts a bit more powerful. When a user posts a link to a post, we should act upon that. Besides linking the post, we should highlight that link somehow.
In addition to make the “link” more meaningful, it would be cool to implement some kind of trackback like feature. That is, if someone links a post, the author would get a notification saying “Alice linked to your post ‘Foo’.”. In addition to the notification, this would allow us to show all posts with references to it below that post, similar to the list of likes and reshares. This would allow the original author of a post to keep track of reactions to their post, while allowing people to share the post around along with their own ideas and comments.
UI and UX
Initially, I was thinking about building a inline-preview like we do for YouTube videos or tweets to show a post preview. However, as I now have slept a night and thought about this idea, I don’t think it is necessary. Instead of showing the URL, we could replace the URL with something like “Post ‘Foo’ by Alice”, and maybe prefix the link with a diaspora icon or something, so we have a clear visual identification that this is “more than a link”.
Building a “preview” is still an idea, but UI could get hard. How do we display references if there is more than one referenced post? How to we handle posts with inlined media? Maybe an idea is to build something similar to our hovercards, where a small preview of the post is shown. However, this has some issues, see below.
Also, we have to figure out how to make it clear that this is a possibility in the first place. One idea is to add another link besides the “resahre” button, maybe opening a popup with “Just copy this link to your post”.
While having links between posts would be awesome, it creates challenges to retain privacy and content control here. Therefore, my current idea is to…
- … not build any kind of previews if the link target is private. If we usually replace the displayed URI with the title and the author, we can either replace that with “a limited post” or simply show the URI.
- … not “call back” if the post referencing another is a private one. We still can build previews and titles if the target is a public post, but we should not make the containing post trackable in any way.
- What happens if someone uses markdown to link to a post? How do we display it?
- How do we inform the user that a reference will be made?
- Should we offer a way to disable that on a per-post basis? If so, how would this look like?
If we decide to build a “preview” for referenced posts:
- How do we decide whether to show the contents or not in case of someone linking a private post?