Special onebox for hypothes.is

(Christoph) #1

Discourse supports hypothes.is oneboxing out of the box, but it is the default onebox:

It puts the annotated text as the title and the annotation as the content. It’s an ok solution but it’s not intuitive. Someone who sees that onebox has no clue that what it’s referring to is actually a web annotation, i.e. a piece of text on the net plus a comment on that piece of text.

It would be great to have a special onebox for this. Perhaps something that looks more like how the annotation is displayed by hypothes.is itself:


Questions regarding Discourse features
(Michael Howell) #2

I don’t think Discourse Core is going to want to add this, but maybe this could go into Marketplace and make a plugin for it? Is it possible to make a plugin that provides a overridden custom onebox?

(Christoph) #3

I suppose this can be done in a plugin, but let me explain a bit more. I suppose I misframed this topic by describing it as a onebox question. Yes, a better onebox for hypothes.is would be nice. But I think there is much, much more to be gained for discourse from a closer integration of hypothesis (or supporting Open Annotation more generally). Honestly, I think this is huge:

But let’s stay focused and figure out how discourse might use hypothesis. The most obvious use seems to be that it allows for a much smoother quoting of external webpages. Not the url but any specific piece of text on that page.

Concretely: I navigate to some website that I want to refer to in my discourse post, I highlight the snippet I want to quote and save it. Hypothesis gives me a link to that specific annotation and I simply paste it into my post. Currently, it is rendered like this:

(Note the misleading url and image)

But it should be very easy to make it render like this:

From: The Day The Trackbacks Died at https://blog.codinghorror.com:
I want to read your response to my posts, whether it’s on your site, or mine as a comment. So rather than relying on direct peer-to-peer links, I’m exploring the use of external indexing services.

By default, hypothesis only provides public links for annotations, not for highlights, which means you have to write a comment into hypothesis even if you just want to share the text snippet you are commenting on, but nobody forces discourse to display that comment. (The UX problem remains, though, that it doesn’t make sense to type the same comment both into hypothesis and into discourse, but I think a solution could be found here.) So I in my mockup, I have stripped the annotation that is shown in the onebox.

So that would be discourse referring to the world. The other way around would, of course, also be nice. In principle this already works: a discourse post can be annotated just like any other website (or pdf, BTW). The problem is, it only works if you have the Hypothesis Extension for Chrome installed because Discourse doesn’t like being shown in an iframe which means the hypothesis’ proxy solution (called “via”) doesn’t work with discourse forums. Which is a pity.

This can be solved in at least two ways:

  1. Let discourse be iframed by via.hypothes.is
  2. Customize discourse to include this JS snippet: <script src="https://hypothes.is/embed.js" async></script>

The problem with the embedded JS is that you will have the hypothesis sidebar displayed on the right edge of your screen (though perhaps it can be configured so that it is only displayed when some explicitly requests to see a specific annotation, i.e. people following an annotation link.)

So there is some food for thought…

PS: Not only does discourse need hypothesis, hypothesis obviously needs a discourse forum :wink:

What would it take to replace Facebook with Discourse?
Docuss: an experiment on how to embed discussions in web pages
(Kane York) #4

You can have someone submit a PR to add an engine: onebox/lib/onebox/engine at master · discourse/onebox · GitHub

(Christoph) #5

Do you have some rough indication of how much work/money this would require?

(Kane York) #6

Certainly less than a plugin. I remember when writing a onebox engine that it was fairly straightforward, with only a few confusing parts.