Amanda Visconti

User Research Interview: Amanda Visconti (https://www.youtube.com/watch?v=BfoWy-GYkuo)

Her main use case so far: using H to collect anchored feedback on a site she is developing: http://programminghistorian.org/lessons/

Amanda mentions that she uses via for the benefit of folks who might not have the extension. I explained the plan for bouncer, "That sounds great, will it solve...?"

She then goes on to describe a different problem, one of doc equivalence: she wants to connect representations of the same page. We talked about rel="canonical" which she, being a pretty savvy web person, was aware of but hadn't yet deployed.

Low-hanging fruit: Write up a blog tutorial on the subject to raise awareness of the possibility of coalescing annotations across families of URLs among the less tech-savvy, and to provide some examples for everyone.

Next thought: "We want a way for people to tag other people's annotations."

Drilling down, "People were annotating lessons, we wanted to make sure they used the tag for that, so we could capture them for GitHub. We tried replying to the annotation and adding the tag to the reply."

Drilling down still further, this was the genesis of Amanda's request, last month (https://hypothesis.zendesk.com/inbox/tickets/111) for an RSS feed of annotations *and* replies.

Back then, after I explained in support that the feed doesn't include replies, I pointed her to the widget that later became what's now embedded in https://hypothes.is/blog/letters-to-the-next-president-2-0/, so she took a look at that.

Amanda: "Cool!"

This in turn prompts Amanda to ask about connecting H to GitHub. She is using GitHub Pages and Jekyll to manage programminghistorian.org, and in particular is using GitHub Issues to collect feedback. If H annotations are also a source of feedback, then they should sync to GH Issues.

Currently they are doing that by hand, e.g. https://github.com/programminghistorian/jekyll/issues/227 which captures H annotations and carries the GH label hypothesis.

Low-hanging fruit: Another blog tutorial showing how to do that.

Now I rewind to something implicit in her question about how to ensure that sets of annotations intended for a purpose -- e.g. as H comments that sync to GH issues -- will be captured without requiring people to remember to use a common tag.

Here I realized that we've under-advertised groups as a way to gather sets of purpose-driven annotations. Had Amanda tried groups?

"Nope, I've heard of that feature but hadn't tried it."

So, she makes a group, joins it from another browser, all goes smoothly. Creating an annotation in the group, and then focusing the scope selector on it, also worked intuitively for her.

Amanda: "So that'd be a way for people to not have to tag everything, their annotations would just be in the programminghistorian or digitalhumanities group? Oh, I like that."

Here it occurs to me that a group, used in that way, is perhaps the moral equivalent of the folder concept that @jeremydean wants.

"Hmm. So do I have to invite people? Or can I set it up so anybody can add themselves?"

She is thinking of Digital Humanities on Slack (http://bit.ly/1jI8VUx) where she invites interested members of her tribe to self-join a Slack conversation.

I explain that H group links can be shared out in this way, which of course leads to the question of moderation. She has two questions:

1) How do I get rid of flat-out spam?

I explain that NIPSA-for-users exists now, and NIPSA-for-annotations, as a group admin power, is planned.

2) How do I manage well-intentioned but inappropriate comments?

This is NIPSA-for-annotations which, I presume but we should specify here -- https://docs.google.com/document/d/1tXwdIeKqPo8FWCYbdLgyc99l_q8Ub-vJUozO3_0Q7cM -- is (like NIPSA for users) an action that can be undone. So I can envision this workflow (@jeremydean: please weigh in):

1. Student makes well-intentioned but inappropriate annotation

2. Teacher NIPSAs it

3. Student and teacher (who both can still see it) converse in what is now a private annotation channel

4. Problems are resolved.

5. Teacher unNIPSAs the annotation

Q1: It's on them to redact the private negotation, if desired?

Q2: Does this mechanism maybe meet the need for private messages?

This discussion prompts Amanda to ask about share links that can be used to manage clutter, i.e. to separate the annotations on a document made by multiple groups.

The answer here is a share URL that encodes both a target URL and a group, and focuses the scope selector on the group. (Direct Linking 2, https://docs.google.com/document/d/1NjjbmOl0vY2uINOBwzNXZ9qhV3luzFf2lRKgg_0fyDY, aka "smart links everywhere," should handle this.)

I also mention, here, the AAAS / ScienceInTheClassroom case, which uses the standalone anchoring library to give a publisher full control over what to select and display.

Amanda: "Does it work with touch?"

Jon: "Not very well."

Amanda's next question: Notifications. "Is there an opt-in way to be notified of annotations at a given URL? Or maybe for your whole website?"

I explain the possibilities (by URL/tag/user) and limitations (sans replies, no domain/wildcards) of RSS/Atom.

Now we take a look at the stream/activity-page prototype, starting with http://h.jonudell.info:5000/stream.alt?any=&user=AmandaVisconti

"I like the tag list" (Her tag set is small enough to be fully rendered. Currently for a user with many tags, like judell, it's trunctated with an 'nnnn more' notice. Yet to be addressed: Is a user's tag list, no matter how long, still a component of an activity page, or does it warrant its own page?)

Observation: In this prototype, filterable facets -- user, tag -- are both clickable and typeable. Given the choice, Amanda opts to type. Perhaps a preference, perhaps an indication that the clickables aren't sufficiently discoverable. Maybe Amanda will weigh in on that in the annotation layer!

After selecting some user and tag filters, Amanda removes all filters. "So, this is the latest stuff?" ("Yes")

Amanda: "Why not show top tags here?"

Jon: "Just didn't do it." Which prompts me to ask myself: Why not? I think it's because the prototype is just one API gulp which, with filters in place, is a complete set of query results, but without filters is just a small window onto what would presumably be an infinite scroll. In that case would it make sense to display tags for what's captured in the current screen? Probably not, that's probably why I omitted them.

Now Amanda filters on the tag 'digital humanities' -- "Oh, I'll have to check these out, there are lots of people I recognize." (In the "annotated by" slugs and "also annotated by" lists attached to each matching URLs.)

Amanda: "Are groups categorized as users?"

Jon: "No, but in this model, group would be another clickable facet, used independently or in conjunction with url/user/tag."

As I'm saying that, Amanda types the name of the group she just created into a search box. Which reminds me that, with respect to a UX that regards clickable and typeable facets as two sides of the same coin, groups will be special because the names are not straightforwardly searchable (would require a disambiguating widget).

Amanda: "Hmm, how would I want to use a text search, I don't have a big corpus of annotations?"

Observation: Amanda doesn't realize there's nothing new here, H already does text search, but because it isn't called out as such, it's often assumed not to exist.

The use case that occurs to her: searching an annotation layer for words like "suggestion" or "question" that wouldn't normally rise to the level of tags but could be found that way.

Observation: Really, though, that's another argument for controlled tagging. She has a pretty specific workflow: annotations that make suggestions for, or ask questions about, lessons managed in GH and published to GH Pages. Configuring H to offer a list of tags including 'suggestion' and 'question' would be a big win.

Amanda continues poking around, at this point she's been at it for a while and has not discovered that the numbered links preceding each URL's title expand to show the whole thread for that URL.

More poking around, Amanda tries the 'explore' link. I mention that it might rather be called 'export' because it's a saveable HTML page, she likes that idea.

Amanda: "I like the summary, maybe add counts of annotations per user? Or maybe not, I understand the benefit of not showing too much info."

Now Amanda revisits a "user page" (i.e. stream pinned to a username) and notices the activity chart, likes it.

Observation: It wasn't yet apparent to Amanda that filtered facets accumulate, i.e. pin to a user facet, then also to a tag facet. Also not obvious that clicking on a tag is a toggle that adds or removes a filter on that tag.

Observation: Amanda definitely was not expecting a selected tag to carry over to the new context created by clicking a username.

"I expected it to go the user page but not necessarily with that tag selected. But it's really nice, at the same time, to be able to do that. I can think of ways to make it more obvious, like adding a + next to each tag, but I'm not sure how that would look."

Now, with several tags selected, Amanda wonders how the input box for tags will accommodate many tags. It's a great question. If we go with an approach that offers (on the surface, or by expansion) input boxes for each facet, we'll want to experiment with whether/how they expand to accommodate variable amounts of input.

Amanda: "I like the per-document architecture."

Now we revisit https://hypothes.is/blog/letters-to-the-next-president-2-0/ which, I point out works the same way. Again it's clear that the clickable numbers of annotations, which unfold to reveal threads, are not an adequate affordance.

One possibility we discuss: unfurling the first URL's thread to indicate that unfurling is available. But we agree that if that first thread is a long one, it'll push the rest of the URLs below the fold and mess up the scannability of the list. No conclusion here but it is a thing to consider for all variants of this idea, whether implemented on a server-based stream/activity-page or a client-side widget.

Amanda: "I really like the numbers, and it should have been obvious what they do."

Jon: "But clearly it isn't, so that's a question for our designer to ponder.

While exploring the NextPrez widget Amanda wonders how reply threading works. "Can you reply to replies and it'll nest?" "Yes. Ridiculously deep."

Jon Udell

The prototype notifier just told me that Maryann replied to an item here in this doc. But when I view group annotations on the stream, https://hypothes.is/stream?q=group:wqvn7Lar, there's no indication of that recent activity despite the sort saying Recent (nor is there in the sidebar when the sort is Recent).

As Conor noted in a call today, this will be partly addressed when we can include direct links in notifications. That still leaves the challenge, which is unaddressed in the current stream, current sidebar, and alt-stream, of indicating that the newest activity for a document may be a reply to an older card that otherwise won't appear at the top of the stack in Recent view. It's a blunt tool but card recency could be determined by the most recent date on an annotation or on any reply descending from it. I'd like to prototype that and see how it feels.

[New Requirement: Use reply dates in card recency calculation?]

(cf https://hypothes-is.slack.com/archives/reading/p1455143207000047

it wouldn't be obvious at a glance that a newer reply was the reason the card floated to the top, so to amplify the effect it might be helpful to decorate timestamps with some kind of recency indication, like color intensity

Aron Carroll

(https://github.com/hypothesis/h/issues/1659)

As a user I would like to see my filter term highlighted in the matching annotation so I can see why it was a match

Sean Hammond

(https://github.com/hypothesis/h/issues/2145)

Go to a web page. Select some text. Realise that Hypothesis isn't launched. Launch Hypothesis. You have to unselect and reselect the text to get the popup button.

Solution: show popup on launch if selected text.

Jake Hartnell

https://github.com/hypothesis/h/issues/2114

| some users clearly expect whitespace to be a separator (as we see by the tags they make)

some users clearly expect whitespace to be a separator (as we see by the tags they make) It should be noted that some users had asked for tags to be able to contain white space. IIRC at first we didn't support whitespace in tags but added them later.

https://github.com/hypothesis/h/issues/1772

A request that came up during one of the user tests. As a user, I should be able to edit the selection of an annotation.

Personally, when using hypothes.is I've often made the wrong selection (for example sometimes I select a couple of sentences and decide as I'm writing the annotation that I should only target one of the sentences), and have wanted this feature. I also think it relates a bit to the work to be done on Orphaned annotations, providing users with the ability to reattach their comment if need be.

Greg Wilson

https://www.youtu.be/VY81gR3iktA?t=352

Greg asked me to review an article. I made annotations in a group and sent him this link:

https://hypothes.is/groups/GdwG2z5w/softwarecarpentry

Since then I had left the group, so we began by fumbling around looking for the group link so I could rejoin.

["Show me my groups" requirement captured in User Page doc: (https://trello.com/c/S4DDXOv6/320-epic-user-page -> https://docs.google.com/document/d/1n8X66S49a6Cjqt-hbDXDdNKquCPPOEKJ9_5frBr5MVI]

G: Do you want me to click on that group URL in Firefox?

[Yes]

G: You have been invited. I click to sign in.

https://youtu.be/VY81gR3iktA?t=420

G: OK, here's my document, I click on it, Firefox load page, there's nothing, no toolbar, no hint."

G: I click on View recent group annotations, OK so here I've got a annotation. I thought: OK kind of useful, but divorced from context, it's supposed to show up with the content. At this point I contacted you and said: "What's up?"

[I now explain about via, how as a Firefox user it's necessary, how we plan to offer a universal link on the group landing page that figures out if via is needed and if so routes through it.]

[Captured at https://trello.com/c/XWS1mXpV/128-groups-v2 -> https://docs.google.com/document/d/12k1ie24e97hDqPBHdIJI8yQBn0PRVq04hyUEYXhiwQw]

[Fast-forward to the point at which we activate via for Greg's page. He pastes the URL into the via box]

https://youtu.be/VY81gR3iktA?t=728

G: It says Annotate! not View, but I want to view

[New Requirement: say Annotate or View?]

G: Nothing happens. OK, it's spinning.

[H appears]

G: That took longer than it should have

[He hovers over toolbar]

G: "Hide highlights," well, there aren't any.

[But should be. As he will soon discover, the sidebar isn't focused on his group even though he arrived presumably in that group's context]

[New Requirement: When user follows group link, set scope to the group][a]

G: "New note," I don't want to do that.

[As he will later discover, he /really/ doesn't want to do that. (No concept of page note yet.)]

G: "Toggle sidebar," OK, click that, here's ... I'm not sure what this is.

[Expands scope selector, sees the group Software Carpentry, but doesn't realize it's necessary to click there to focus on the group and see annotations.]

G: All I want to do is view annotations.

[Now explores every other UI element in the sidebar. Eventually returns to the scope dropdown, finds his annotations]

G: Wow. OK, no, sorry, no. I mean, eventually I'd figure out out...

https://youtu.be/VY81gR3iktA?t=817

[Now Greg uncovers an interesting problem. He does have the expectation that clicking on a card will make the doc respond. But it doesn't. Because he happens to click on a collapsed quote, which expands the quote but swallows the event so nothing happens to the doc.][b]

G: It's not jumping me to the place in the doc. Oh wait, now it does.

[Because he clicked elsewhere on the card.]

G: This [gestures at the collapsible quote] isn't an affordance.

[New Requirement: Propagate that click? Provide a dedicated clickable affordance for sync-to-doc?]

https://youtu.be/VY81gR3iktA?t=828

[Now he notices the "bucket bar" indicators]

G: 1 just appeared. Oh look, as I scroll, the 1 is staying put, the second seems to be locked to the location in the doc, but the first one isn't...ok, I now understand how this works. That's supposed to be pointing up? Your developers have young eyes, don't they?

OK, I could get used to that. Odd that it's bumped up with Show Highlights and New Note though, I would put them up top, that's where your tools go.

I think the up-and-down things would be clearer if I weren't distracted by these tools that are welded to the scrollbar.

[Now he notices how the sidebar obscures the content]

(cf

https://youtu.be/VY81gR3iktA?t=1078

G: The other thing that's throwing me, and it's a big thing, you're overlapping my text. Can't do that. We put a lot of work into making this page responsive. I can't see all the text you're commenting on, that's really annoying.

[Now he wonders why the up-and-down arrows weren't present when the page first loaded. Reason: Wasn't focused on the group, and there was nothing in Public. He switches to Public to confirm.]

G: Ah, that's it. So at this point (focus on Public) there's nothing to suggest there are any annotations. I guess you don't want to leak information but...I'm a member of the group, and there's no indication there's anything worth exploring.

[New Requirement: When there's activity for you somewhere, indicate it?]

https://youtu.be/VY81gR3iktA?t=1237

[Now he notices a collision (in Firefox) between the page's scrollbar and the app's scrollbar]

G: When Firefox thinks I'm in the middle of scrolling, your controls are hidden. I think I've figured out I have to move my mouse off, I have to wait 1 second, then I can see your stuff, but it's hard to see your stuff when I'm maneuvering.

https://youtu.be/VY81gR3iktA?t=1312

[Now Greg replies to one of my annotations]

G: OK, post my reply to Software Carpentry. OK, 1 reply. Why aren't you showing it?

[It's immediately collapsed, he has to expand it to see it]

G: On WordPress, for example, when I post a comment it's visible, I can see my addition to the context, The first thing I want to do, I imagine you too, is check to see I haven't made a stupid typo.

[He had replied to the second of 2 annotations, now he also replies to the first. The reply collapses immediately, and focus goes to the second annotation, which has an expanded reply, because that's the state he left it in. Super confusing, there is no indication that annotation 1 is the scene of the most recent interaction.][c]

G: This is confusing. When I clicked submit, the thing I just typed disappeared, most of what I'm seeing is a completely separate comment. I thought my comment was gone.

[New Requirement: Ensure that most recent reply is expanded and focused?]

https://youtu.be/VY81gR3iktA?t=1492

[Now he explores the Link button. He expects direct linking, and we later establish that's what it'll soon be, but meanwhile his comment is pertinent]

G: Can you please add a button that copies the link to the clipboard? I like that in Google Hangout, we've added that to a few things I've been working on.

[New Requirement: Affordance to copy share link to clipboard?][d]

[Now Greg wonders if we remember that Software Carpentry was the focused group if he closes the tab and opens a new one. We do.]

https://youtu.be/VY81gR3iktA?t=1679

[Now Greg wonders about what a densely-annotated and -discussed page looks like. I send him to https://via.hypothes.is/https://www.whitehouse.gov/the-press-office/2016/01/12/remarks-president-barack-obama-%E2%80%93-prepared-delivery-state-union-address]

[We spend lots of time watching the spinner spin, and the Warning: Unresponsive Script message appear and reappear.]

G: Sorry, lost interest, this is too slow.

[https://trello.com/c/UxSaitNN/476-2895-very-poor-performance-anchoring-text-quotes]

https://youtu.be/VY81gR3iktA?t=2023

[Now we switch to an NYT article that's less-densely annotated, That doesn't work because it's paywalled. We switch again to http://www.gardnercampbell.net/blog1/?p=2080]

[Greg mostly has the hang of it now, but still not happy about the bucket-bar indicators]

[I break down and ask a leading question]

https://youtu.be/VY81gR3iktA?t=2238

J: You complained about the sidebar obscuring the page. Are you able to find any way around that problem?

[He isn't. I break down and explain that the chevron is draggable][e][f]

G: Oh, well if I'd know that...

[But soon discovers this is of limited utility, there's only a narrow range of adjustability, then it snaps shut. We rejected the admittedly lame https://github.com/hypothesis/h/pull/2388 but we really need to address the underlying problem.]

[Captured as https://trello.com/c/5gVE2VzL/442-arrange-the-page-so-that-the-sidebar-does-not-obscure-the-text]

https://youtu.be/VY81gR3iktA?t=2485

[Back to the group landing page, Greg ticks off all things that should be there]

G: No indication here of recent activity, number of comments, who's commented recently

[I hope we can pluck this low-hanging fruit and do something ahead of https://trello.com/c/XWS1mXpV/128-groups-v2, as an iteration like https://trello.com/c/3Zv7ZEO6/121-groups-landing-page-iteration]

https://youtu.be/VY81gR3iktA?t=2623

[Now Greg investigates making annotations, vs replying. He makes a selection]

G: Oh, and your toolbar just disappeared, because I selected something.

[https://trello.com/c/5gVE2VzL/442-arrange-the-page-so-that-the-sidebar-does-not-obscure-the-text again]

G: Highlight, new note ... oh, I can't start immediately typing, well that should be an easy fix. I should be able to highlight, click, and immediately start typing. Should not need the extra click.

[New Requirement: Focus on the input box with an active cursor][g]

https://youtu.be/VY81gR3iktA?t=2691

[Now Greg guesses, correctly, that we don't handle the case where an annotation overlaps a hyperlink.

[https://trello.com/c/pQUNvLbw/274-allow-user-to-access-both-link-and-annotation-of-a-link-within-an-article]

(cf https://github.com/hypothesis/h/issues/1218

https://youtu.be/VY81gR3iktA?t=2722

[Now it gets confusing. He makes a highlight, seems to get the distinction between highlight and note, but then wants to add a comment to the highlight. Looking for a way, he finds the New Note button on the toolbar, and so creates a page note. He also is flummoxed by the problem of multiple in-progress annotations. It's worth watching but there's nothing new here. We know that we need to distinguish page notes (https://trello.com/c/59HWSQ9H/225-visually-distinguish-and-or-segment-page-notes) and allow only one in-progress annotation (https://trello.com/c/ytvZxOjT/427-only-allow-one-in-progress-annotation),]

[At this point we turn our attention to the alt-stream but it's too late, Greg has to go. It's been an hour well spent though! Excruciating but useful. I propose that @conor and @jon review this and make the new cards suggested throughout.]

Maha Bali

- just fine with alt-stream, prefers to /stream

- pdf local-annotation issues

- doc-equiv issues when her journal was redirected

- adventurous user of h on android phone, selection "dodgy"

Joel Garza

- unify case-sensitivity of tags

- want to message a student. i've seen courtney gets microscopic in her analysis, not moving to thematic, can i message her privately.

- vote for public group

- vote for controlled tagging

Greg McVerry

- include url in the box

- show count of all annotations, then filtered counts

- clarify that user is most recent annotator

Terry Elliott

- export for him == copy to clipboard

- filter toggling not obvious/expected but ok with that, search is the more expected paradigm, ok to be led gradually to linked filter-toggling