meta icon indicating copy to clipboard operation
meta copied to clipboard

Improve User Feedback/Engagement (feature voting)

Open chrisjsewell opened this issue 5 years ago • 22 comments
trafficstars

Currently, the main source of user feedback is via repository specific issues. As the number of issues grow, e.g. in jupyter-book, this is not always the easiest to navigate. A few thoughts come to mind:

  1. Having an upvoting system for new features, I have some thoughts on this (see below)
  2. Having a clear road map. We have discussed this in e.g. #35, #65, #76 and we have some projects set up, but to my knowledge there is still no user-facing place where this exists
  3. Having somewhere for users to share the projects they have created using myst/jupyter-books
  4. Possibly having an alternative discussion forum like a google group or gitter, although I'm not sure how much benefit these offer

Upvoting System

I think having a system for upvoting features might be helpful. The idea is that people upvote on a feature by adding a thumbs up (👍) to the first comment of an issue. These issues+upvotes are then counted autonomously by a git bot and output into a table somewhere, e.g. in the README or RTD docs Examples of this is https://caniuse.com/issue-list (the github API code for this is here https://github.com/aozq/GitHubIssuesSortedByVotesPage/issues/1) and https://vote.biglybt.com/, all-contributors is also an example of a bot that pushes a table to the README

This could be done with the existing repository issues, whereby only issues tagged as enhancement would be assessed. But perhaps having a central location for this would be better, e.g. creating a community repository where issues should only be feature requests

chrisjsewell avatar Jul 28 '20 18:07 chrisjsewell

I'm +1 on all of these and think it's a good idea. Another note is that you can easily sort issues by the number of certain reactions as a vague approximation of what @chrisjsewell describes: https://github.com/executablebooks/jupyter-book/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc

For the "alternative discussion forum", I think an easy step could be to create a category in the jupyter community forum for this. I've found it to be an easier place for more free-form discussion and conversation than using either github issues (because they are best-suited to "closeable" and actionable topics) or chat rooms like Gitter (because they are harder to use for conversation that spans more than 1-2 hours or time)

I think that a community/ repository is worth exploring though in my experience users just don't use stuff like this - they end up opening and discovering issues in the repo-specific issue trackers. Maybe we can start by just encouraging "thumbs up" on executablebooks/ repositories and then see how that goes?

choldgraf avatar Jul 28 '20 18:07 choldgraf

Maybe we can start by just encouraging "thumbs up" on executablebooks/ repositories and then see how that goes?

Yep, I think we should maybe then have a separate feature tag to denote issues that will be counted by this (future) bot. As opposed to just all enhancement tags

The pain point with EBP is that generally feature issues are currently spread/duplicated across repositories, i.e. to implement a feature in jupyter-book, it requires a feature implementation in markdown-it-py + myst-parser + myst-nb

though in my experience users just don't use stuff like this - they end up opening and discovering issues in the repo-specific issue trackers

The main solution here I guess, and for promoting the discourse site, is to use issue templates to "re-direct" people to the correct location

chrisjsewell avatar Jul 28 '20 19:07 chrisjsewell

Maybe we start out with enhancement since we've already got it added to our issues, and can add a new tag if enhancement feels too noisy?

The main solution here I guess, and for promoting the discourse site, is to use issue templates to "re-direct" people to the correct location

Yep - that's what we do in the jupyterhub issue template

choldgraf avatar Jul 28 '20 23:07 choldgraf

For the "alternative discussion forum", I think an easy step could be to create a category in the jupyter community forum for this.

Cool, do you want to create this category then, and we can add links to it in the issue templates and CONTRIBUTING.md/SUPPORT.md

chrisjsewell avatar Jul 29 '20 10:07 chrisjsewell

Sounds good - do you think we should call it jupyter-book? executable-books? Trying to imagine what kinds of questions people will have when they look for it...

maybe @jstac / @mmcky / @AakashGfude / @najuzilu have thoughts?

choldgraf avatar Jul 29 '20 16:07 choldgraf

do you think we should call it jupyter-book? executable-books?

executable-books IMO

chrisjsewell avatar Jul 29 '20 17:07 chrisjsewell

executable-books sounds good to me.

I also really like @chrisjsewell 's suggestion at the top of creating a way for users to share what they have created using myst/jupyter book. That's one of the things that https://bookdown.org/ does well. I suppose we can get people to share links --- and that would be a good first step --- although links don't provide the same visual feedback as bookdown's entry page.

jstac avatar Jul 29 '20 17:07 jstac

I think it'd be pretty easy to programmatically generate a nice-looking table of demo books. What's the action we'd like a user to take? Add an entry to a YAML file somewhere?

A few things for inspiration:

  • here's some instructions for how users can add a theme to a new sphinx-themes page: https://github.com/pradyunsg/sphinx-themes/blob/master/CONTRIBUTING.md
  • jupyter's original gallery of interesting notebooks
  • bookdown gallery: https://bookdown.org/home/archive/

choldgraf avatar Jul 29 '20 17:07 choldgraf

Upvoting: These issues+upvotes are then counted autonomously and output into a table somewhere

Check out https://jsfiddle.net/chrisjsewell/xjw5623y/

chrisjsewell avatar Jul 30 '20 16:07 chrisjsewell

Very cool! I wonder if we could just embed that in a page with some nice-looking CSS and have that be it? Though we'll probably hit the github GraphQL rate limit if a lotta people hit the page. Another thing we could do is to generate an updated list once a day or so, and host it in the website somehow. I do this kinda thing with jupyter-wide activity by generating notebooks and building books w/ them here: https://predictablynoisy.com/jupyter-activity-snapshot/

choldgraf avatar Jul 30 '20 19:07 choldgraf

I wonder if we could just embed that in a page with some nice-looking CSS and have that be it?

Yep that was the thinking

Though we'll probably hit the github GraphQL rate limit if a lotta people hit the page

Good point, the limit is ~1000 (5000/<5 repos>) per hour, so shouldn't be an immediate issue (I just added sessionStorage caching though as a small mitigation)

chrisjsewell avatar Jul 30 '20 23:07 chrisjsewell

yeah fair enough - I'm +1 on optimizing for the rate limit another day after we've actually hit problems w/ it

Note that I believe the rate the limit isn't "number of requests", it's something like "number of edges touched in the GraqhQL query, so it might be less than 1000?)

choldgraf avatar Jul 31 '20 00:07 choldgraf

Nah I've already checked (returning-a-calls-rate-limit-status) its cost=1 per request. FYI the authentication is now set up on @ebp-bot, who also has the email [email protected] which may be of use 😄 (obviously let me know if you want the login password)

chrisjsewell avatar Jul 31 '20 00:07 chrisjsewell

how the heck was [email protected] still available?!

choldgraf avatar Jul 31 '20 00:07 choldgraf

I had to kill a human to get it

ebp-bot avatar Jul 31 '20 00:07 ebp-bot

Just found out about the coming GitHub Discussions, seems like they will be a better alternative to discourse (in terms of integration), although I'm sure @choldgraf will not be happy with the expanding monopoly by Microsoft lol

chrisjsewell avatar Aug 03 '20 17:08 chrisjsewell

I have requested we be added to the GitHub Discussions beta: https://github.community/t/can-one-apply-for-github-discussions-beta/121120/34?u=chrisjsewell

chrisjsewell avatar Aug 03 '20 18:08 chrisjsewell

hah I am definitely not happy with the Microsoft monopoly, I dunno why more people don't worry about this :-P I'm not going to die on this hill, though IME I've found Discourse to be a nice place for community interaction. We don't have to do what the broader jupyter community does.

choldgraf avatar Aug 03 '20 20:08 choldgraf

I've found Discourse to be a nice place for community interaction

Its ok, but you just don't get the integrated links to Github code/issues/PRs/users etc.

chrisjsewell avatar Aug 03 '20 20:08 chrisjsewell

for sure - I think the question is what other kinds of features are missing between the two. In my experience the best parts of Discourse are the community management pieces, they give you a ton of knobs to tweak if you wish, and ways to influence the kinds of conversations that happen in the discourse forums. It's a much more complex thing than just "a place to have non-linear conversations" so I wonder how much GitHub Discussions will be able to replicate the same product

choldgraf avatar Aug 03 '20 21:08 choldgraf

they give you a ton of knobs to tweak if you wish, and ways to influence the kinds of conversations that happen in the discourse forums

Out of interest, what is an example of one such "knob"?

chrisjsewell avatar Aug 03 '20 21:08 chrisjsewell

a couple examples off the top of my head:

  1. It gives you more nuanced controls for moderating the intensity of a conversation. Things like temp-bans, temporarily locking threads, options for direct one-to-one messaging to give warnings, etc
  2. It gives you full control over what channels / sub-channels are available, so you can define the "topics" with high customizability
  3. It collects a lot of useful user interaction data about where conversations are happening across the Discourse site
  4. It has a lot of great features around highlighting and giving mini-rewards to people for engaging in the community, so they get a degree of recognition for their work in the forums
  5. It lets you control how much interaction users are allowed to have as a function of how much they have already engaged in the community (e.g. a "level 1" user cannot post more than 2 links in a post, to control the possibility they are a spammer)
  6. It's much easier to customize and theme a Discourse site if you wish, and you can run it wherever you want rather than depend on the generosity of a monopolistic tech company :-P

choldgraf avatar Aug 03 '20 21:08 choldgraf