executablebooks / meta

A community dedicated to supporting tools for technical and scientific communication and interactive computing
https://executablebooks.org
128 stars 165 forks source link

Improve User Feedback/Engagement (feature voting) #82

Open chrisjsewell opened 4 years ago

chrisjsewell commented 4 years ago

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

choldgraf commented 4 years ago

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?

chrisjsewell commented 4 years ago

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

choldgraf commented 4 years ago

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

chrisjsewell commented 4 years ago

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

choldgraf commented 4 years ago

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?

chrisjsewell commented 4 years ago

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

executable-books IMO

jstac commented 4 years ago

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.

choldgraf commented 4 years ago

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:

chrisjsewell commented 4 years ago

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

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

choldgraf commented 4 years ago

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/

chrisjsewell commented 4 years ago

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)

choldgraf commented 4 years ago

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?)

chrisjsewell commented 4 years ago

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 executablebooks@gmail.com which may be of use 😄 (obviously let me know if you want the login password)

choldgraf commented 4 years ago

how the heck was executablebooks@gmail.com still available?!

ebp-bot commented 4 years ago

I had to kill a human to get it

chrisjsewell commented 4 years ago

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 commented 4 years ago

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

choldgraf commented 4 years ago

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.

chrisjsewell commented 4 years ago

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.

choldgraf commented 4 years ago

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

chrisjsewell commented 4 years ago

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"?

choldgraf commented 4 years ago

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