Plugin: Ask me anything or Q&A format (threaded replies)

rfc

(Erlend Sogge Heggen) #1

This is what I’ll try to establish a spec for here. There’s an example of an AMA being carried out with Discourse here:

Here’s why it gets problematic:

Imagine a “Q&A mode” which would do the following:

  • The “X Reply” button is toggled on by default, showing all replies inline
  • All replies should be hidden from the stream. As in, only the inline version of the reply should be visible.
  • Inline replies need the toolbar with Likes etc. now, since they won’t be showing up elsewhere.
  • Even when the reply is directly underneath the preceding question, only the indented version of the reply should be shown, for consistency.
  • Consequently, replies to the topic (i.e. Questions) would be shown chronologically, whereas replies to posts (i.e. Answers or further discussion) will be shown directly underneath their parent posts.

It’d look something like this:

Note: The mockup is missing a Reply button because the topic is closed, and I also didn’t add toolbars to the Answer-replies.


Bizarro Stack Overflow
Threaded comments when using Discourse for website comments?
Possible to enable one level reply and display them automatically?
Bizarro Stack Overflow
Doing an AMA using Discourse
Any existing plugin enabling one level threading?
Microblogging (the inverted Ask Me Anything?)
(Jeff Atwood) #2

I think it is simpler to force full quote on every reply than this; any change to stream chronology is extremely difficult, whereas forcing full quote on every reply is very easy.


(Erlend Sogge Heggen) #3

We’re not really messing with stream chronology here though. This is not very different from how “Summarize Topic” works; we’re just hiding the “primary” version of replies, and opting to show the secondary version instead.


(Jeff Atwood) #4

Not sure you are hearing me – any change to post stream is 10/10 in engineering difficulty due to the massive numbers of assumptions we’ve made about it being in perfect chronological order since 2013.

Another reason I don’t like this proposal, on top of the extreme difficulty, is that there is a very simple workaround – simply force a full quote on every reply.

So

Halo 4 for the gameplay itself.

Becomes

guy asked
What’s your favorite halo game?

Halo 4 for the gameplay itself.

Pretty much automatically.

What you’re seeing there in that Q&A is very bad Q&A topic discipline. But enforcing Q&A topic discipline is easy; every time reply is pressed, do a mandatory full quote and block saving the reply (e.g. reject the reply as an error) if a quote is not present.


Question Answer Plugin
#5

This could get very messy with full quotes past the first few levels; imagine this example with actual paragraphs of content, images, styling, etc. Would you restrict the number of nested levels?

Question

Answer

Reply

Another reply

More replies

All the replies

More?

More

Okay no more.


(Jeff Atwood) #6

Does not happen in practice, so that is a theoretical concern. Focus of Q&A is the primary answerer, who rarely has time to reply 3 times to the same reply. Regardless we would never do more than 1 level of replies no matter what.


(Dave McClure) #7

Perhaps the answerer’s avatar and/or posts could simply be styled specially in Q&A topics?

And if the full quote is enforced, after the Q&A is complete a valuable default summary view would be to filter the posts by that answerer…


#8

Depends on size of the forum; reddit very frequently has AMAs that have deeply-nested replies and conversations. If you prevent others (not the AMA host) from replying to replies, then yeah, it’s theoretical. Just saying that if that’s not a restriction, it’s very possible, and most likely an eventuality.


(Jeff Atwood) #9

Preventing people from replying to anyone but the answerer, and even then only once, is another restriction that would be a million times easier to implement than post stream changes.

Honestly just enforcing required quoting would do wonders here, and that is what I strongly recommend as a starting point, but also

  • give answerer a special style for posts or name badge
  • prevent participants from replying to each other
  • after Q&A complete default to filtered view of answerer only

… would also be advisable and far more realistic to implement.


(ginger man) #10

@codinghorror I think discourse has one of the smartest implementation of threaded discussions but it seems to be not used effectively.

I am sure you would have sufficient reasons behind placing the bottom “Reply button” highlighted in ‘blue’ for every topic (increased engagement in A/B test is one easy answer I can think of). Ability to add response to the top post in a topic is anyway present.

What I actually observe in many meta.discourse topics / other discourse forums is that many of them resort to replying the topic using this “blue reply button” at the bottom while they are really replying to specific user’s post. This actually makes the conversation to lose the context and threads are never created.

This really hurts when you are in support Q & As / AMAs using discourse.

In fact, some of the posts in this very topic illustrates that. I just randomly picked the below post where it is actually a reply to the above poster but it is replied as a response to the topic and therefore threaded view is missing.

I think I would have made this mistake in multiple threads as well. I somehow feel the bottom reply button is the source of confusion.

Update: It’s weird that it has not created a thread below the codinghorror’s last post. I remember hitting the reply button from his post. I like the irony here. May be everyone is doing fine and there is a bug in thread creation.


(Jeff Atwood) #11

In reply to metadata is suppressed when there is only one reply, and the reply is to the post directly above it. Otherwise the conversations are extremely noisy, with an excess of metadata. You can disable this if you prefer in your site settings.


(ginger man) #12

Nice. I didnt know about this feature. Not sure how it creates noise. Good that we have a setting to disable it.


(Joe Buhlig) #13

I’ve got a new project (podcast) I’m looking to start with a friend in the upcoming months. We’ve considered doing the shows live with the recording released a few days later (post editing) and we’re debating using Discourse to run the live commenting structure.

I say that because I’m considering a plugin or a PR to make this happen. But I’ve never run one before so it would be a learning process.

Reading through this thread, the thought that came to mind was having a way to flag users per topic who are the VIP(s). By flagging them, it will apply styling that indicates their responses (background color, avatar flag, or some other method) and force the full-quote method that @codinghorror is talking about but only for the VIP. But I’m not sure if that’s enough to cover what @erlend_sh originally set out to cover.


(Jeff Atwood) #14

Forcing or requiring mandatory quoting is the best way to go here.


(Anton) #15

Another idea

If full quoting is made mandatory in an AMA topic, maybe we should

  1. Add an AMA topic view mode besides Summarize view mode.

  2. In AMA view mode, hide the question-post once it is answered by the topic author
    By “hide” I mean for everyone except mods and the question author (so they still can edit it etc)

  3. Make AMA view mode the default one for the topic once the topic author or admin/mod clicks “AMA finished” in the topic wrench.

This way, there will be only one mention of a question; its answer, if any, will come immediately next to it. Yet it won’t touch anything related to chronology, but rather just hide/show messages in a topic.

An interesting side-effect of such an implementation is that one will easily visually distinguish between answered and unanswered questions.

Once the AMA session is finished, a system message is added to the thread, just like when closing / pinning / splitting topic.

Below that line, even in AMA view mode, no posts are ever hidden, meaning that the conversation may continue just normally with using full features set of Discourse.

We can optionally add “Start AMA session” button as well.

As a result, an AMA session can be started/stopped in any topic, just like a topic can be pinned and then unpinned.

When rendering the topic, messages between “Started AMA session” and “Stopped AMA session” will just be rendered a bit differently.

Finally, if it is an admin / mod who creates a topic and not the AMA person, we need another wrench option: “Select a user for AMA sessions in this topic”, so that the system knows whose’s actually answering questions in the AMA session. If not selected, the topic author is considered the one.

Scenario example:

  • Admin creates a topic and says that MisterX will be running an AMA this Friday in this topic.
  • people get excited and write something in the topic and spread it
  • on the day X, admin chooses the AMA session runner and clicks “Start AMA session”, both in the topic wrench
  • the AMA is going on, just like normal discussion in Discourse, with only two limitations: a) full quote is required, or just forced automatically in all posts of the AMA runner; and b) people can’t reply to the replies
  • once finished, either an admin/mod or the AMA runner can stop the AMA session (system message appears)
  • AMA view mode appears in such a topic and becomes the default view; it only affects topic between AMA started/stopped system messages.

(Jiamin Zhu) #16

I posted the same question before and get suggestions to ask it here again

I would love to have one level threading enabled and organize the reply only in that way.

Can anyone help me achieve that?


(Mittineague) #17

Just to be clear about what you’re wanting, you want the posts to show as though this button had been clicked

<button class="widget-button show-replies" aria-label="1 Reply" title="1 Reply">
1 Reply
<i class="fa fa-chevron-down" aria-hidden="true"></i>
</button>

so that Replies will be expanded.

And you want the DOM rearranged from the current

<div class="regular contents">
 <div class="cooked">
 <section class="post-menu-area clearfix">
 <section class="embedded-posts bottom">
</div>

to

<div class="regular contents">
 <div class="cooked">
 <section class="embedded-posts bottom">
 <section class="post-menu-area clearfix">
</div>

(Jiamin Zhu) #18

yes, thanks!!

I want the posts to show as though the button had been clicked as you suggested. Thanks!

And I also want to hide those corresponding posts down there because they are same as the expanded reply posts. What does DOM mean btw?


(Mittineague) #19

Document Object Model

How do you envision members replying to them?

Hide / Show toggle the posts?
The post-menu-area sections under each expanded reply?
Something else?


(Jiamin Zhu) #20

Let me invent two terms to better describe what I want

Reply to a question --> create an answer
Reply to an answer —> create an comment
not allowed to reply to a comment

The whole discussion will look like the following

Question

---

Answer
      Comment
      Comment

Answer
      Comment
      Comment

Answer
      Comment
      Comment

A good use case would be

Welcome to the forum. Describe yourself.

---

I'm Walker. I'm from China
           Hey. I'm from China too. Which city
           Shanghai. How about you?  
           Shanghai. as well. let's meet

I'm Joseph.  I want to be a developer.
           Welcome. What's your previous experience?
           Android developer for two years. I want do more games. 
           Wow. Cool .  I'm still a newbie. 

I'm Sophie.  I just want to join this cool communities
           Come often.  

In the current case, all answers and comments will be mixed together.


How do you envision members replying to them?

Not allowed. They are only allowed to reply to the question or reply to an answer, but not reply to a comment (aka. reply of the answer)

The post-menu-area sections under each expanded reply?

This would be cool but not necessary. What I really need is to

  • always show those expanded area
  • and always hide those replies of the answer (The cross area in my picture)
  • and when I add an answer or a comment to an answer, it goes to the right place.