Considerations for adding an AMA feature

My initial question was “What is the best way to add some AMA (ask me anything) feature (like on Tumblr) to one or more of my websites?” I’d thought about it for all of ten seconds before I realised that “best” was entirely subjective.

If you already know what we are talking about, feel free to skip to the ideas section. For the rest of us, let me briefly introduce the concept to you.

What is this AMA thing, then?

On the hybrid of social media and blogging that is Tumblr, users can enable the option to ask questions. When the user replies, the question and the answer appear together as a single post.

Questions can be anonymous, answered privately (if not anon) or answered as a public post.

Why would you want something like that?

An AMA (ask me anything) can be a great way to build a sense of community with your readers. For example, an author with an AMA can interact with fans but in their own time while creating content that the wider community will probably enjoy looking at. While yes, this is far from common, I think more artists of words and of images should do this more often.

Even if community building (or platform building if you want to call it that) can be a goal, AMAs can just be a fun way to stay connected. In that regard, it feels like a most IndieWeb idea (even if it probably isn’t). (I like IndieWeb stuff BTW)

I think an AMA would be fun. I want to add the feature somewhere.

Where would you use this?

I see five use cases for my own use.

  • Author Buzz UK user blogs (like this one)
  • isBrill/isPants as an optional feature
  • My social node
  • My music blog
  • My health blog
  • Where would you use this?

    Authors and other creatives wanting to build a rapport with readers should consider such a feature. The easy answer is to start a tumble blog, but of course, I wouldn’t be your favourite old geek with a cop-out answer like that.

    Chatty folks with IndieWeb personal websites featuring a blog or forum might be a good fit.

    Anyone who likes answering random questions, I guess.

    What about you? Pop into my comments and leave your use case.

    Ideas for AMAs, depending on what exactly you want

    Now we come to the brainstorming part. I’ve divided this up into potential solutions to explore the relative strengths and weaknesses of each approach along with how copyable the idea is. After all, if I’m having fun with AMAs, I bet others would too.

    AMA built on existing IndieWeb stuff like WebMention

    If you are already set up for WebMention, this should be dead simple. Make a page which accepts mentions, call it Ask Me Anything. Let people mention said page when they want to post questions to you.

    The good

    • Easy to set up
    • No new code needed
    • Will probably work just fine
    • Very IndieWeb
    • Super easy to copy
    • Low effort

    The bad

    • Not private
    • Not anonymous
    • Not inclusive for passing average citizens
    • A bit of a faff to maintain
    • No private replies

    Conclusion on WebMention

    If I am honest, I imagine an AMA built on WebMention will end up like the guestbook pages I have done this with – rarely used by humans but regularly attacked by spam bots. WebMention is great, but I do not think it is the tool for this task.

    I would be delighted to be proven wrong if someone wants to implement AMAs this way.

    AMA via ActivityPub (Mastodon inclusion mode)

    The next approach I considered was to lean on ActivityPub. After all, most of my websites implement it (mostly via a WordPress plugin). For me, this would take the same approach – slap up an ActivityPub-enabled page and call it AMA.

    The good

    • Compatible with the WebMention approach
    • A bit more inclusive
    • Easy enough to set up
    • No new code needed
    • Easy to copy
    • Low effort
    • Use the WP Reply block to display the question

    The bad

    • Not (entirely) private
    • Not (entirely) anonymous
    • Only inclusive for Mastodon ActivityPub users
    • Still a bit of a faff to maintain
    • Not really what ActivityPub is for
    • Quickly lost in the timeline’s history
    • No private replies (sorta)

    Conclusion on ActivityPub

    With the plugin for ActivityPub I use on my WordPress blogs, this would probably be the least effort approach that would kind of display the way I would want it to. Mostly. It would be close enough that I could live with it.

    However, a strong AMA launch could start with lots of questions as ActivityPub replies, but I can picture it tapering off in fairly short order. For most users, this will be a single toot in an avalanche of content. Thus, soon lost and forgotten.

    Just use a forum or group for an AMA

    This blog is part of Author Buzz UK (for now). I could just create a group with an AMA forum or add an AMA thread to an appropriate forum or group. That’s how the Reddit AMA works.

    The good

    • Low effort
    • Easy to replicate
    • Can be taken to PMs for privacy
    • Sort of what a forum is for
    • Easy for passing average citizens to understand

    The bad

    • Forces users to create an account
    • A massive faff to turn into blog posts
    • Not private
    • Not anonymous
    • Looks dead until sufficient uptake
    • A lot to set up without an existing forum in place

    Conclusions of using a forum

    This approach could be good for some people. If there is a forum or community that is okay with AMAs, you could set up shop there and just copy and paste back to your blog or personal website. This is mostly in the spirit of IndieWeb, I guess.

    My problem with this is that I’m taking visitors off-site (sort of) and I can’t replicate this on sites like my social node, my music blog, isBrill, etc. as none of them have a forum. Also, this is not really in the spirit of the Tumblr feature I want to implement. It is more of the meme, “we have AMAs at home…”

    Just use an AMA WordPress plugin

    In this section, I’m going to take a look at the plugins and/or themes that implement AMA for WordPress specifically. All other platforms will have to roll their own.

    Let’s see what I can find.

    Spoiler: I found a lot of listicles about plugins to run a full-on Q&A forum/community. Not features to allow people to post a paragraph for you, the author, to reply to.

    The also ran that was ask-me-anything-anonymously

    A lot of blog posts (including WP Beginner) recommend this plugin. Except it was last updated about a year ago and has been closed due to security concerns (or WP Drama, one of the two).

    The source code is on GitHub, though.

    Conclusion: Nope.

    CM Answers

    CM Answers is a QnA plugin. It has a free and a pro version. Like many plugins it seems to take the kitchen sink approach. If you want to run something a bit like Stack Overflow or Quora, I’m sure this is fine. For an AMA feature, this is not the tool for the job.

    Conclusion: A cannon to swat a fly

    OMG WTF?

    Searching WordPress.org was a hot mess of unrelated plugins, forums, and things no sane person should add to the WordPress install. Seriously, WTF?

    Conclusions on “just use a plugin”

    After a bunch of searching, I came up dry for a plugin that just implements “asks”. What I did find that seemed to be what one might want were thinly veiled adverts for AMA sites, code that should never be used in production, and a lot of irrelevant search results.

    I have zero recommendations I am willing to make here.

    Well, I guess we have to roll our own or something

    I’ve reflected on a few ways to code this up. Let’s start with the least effort idea.

    Just a form that creates a draft post

    My first thought was that the least effort would be a form on the front end that anyone can fill out. The back end then does a few basic checks and puts the sanitised text inside a quote block in a draft post.

    The good

    • Not all that much work
    • Would work as intended
    • Easy to copy

    The bad

    • Spam would be a nightmare
    • Infrequency asks could get lost in the drafts section forever
    • Open to abuse
    • So much abuse potential
    • Dear lord, the possible abuse

    Conclusions on just adding a form

    On reflection, this is a terrible idea. There are many other ways to do this and almost all of them are better.

    Okay, let’s spec this thing out properly then

    It was at this stage of the rabbit hole that I thought to actually draft out what exactly it is I am looking for. I even went and found a quote to go with my work.

    Write down this vision and clearly inscribe it on tablets, so that a herald may run with it.

    Bible, Habakkuk 2:2b

    I do like a good quote to go with things.

    The vision: What I want this to be

    Must haves

    • A form people can submit “asks” via
    • Strong anti-spam and abuse mitigation
    • An admin page with all pending asks ready to be turned into “ask posts”
    • Track which asks have answers (posts)
    • Asks are private until published in a post

    Nice to haves

    • Option to private reply
    • Optional anonymous asks
    • Obvious link back to asker
    • Can work with WebMention
    • Can work with ActivityPub
    • Uses microformats

    Running with it: How to make this happen

    The way I see it, there are three possible approaches: (1) A custom post type, (2) a custom database table, (3) a third option that we already passed over.

    A custom post type would store a lot of cruft in the database and come with a whole host of security and privacy problems. Posts are designed to be looked at so a custom type that is entirely hidden, while doable, is not really in the spirit of what these are made for. Also, it would be a lot of work, and I am lazy.

    A custom database table solves a lot of problems. Each ask has a row to itself, and we could run the text through the input validation and sanitisation built into WordPress. Tracking which post contains the ask would be as simple as adding a field for post ID. Not the worst idea. Certainly workable.

    The idea we walked right by is to just use a single page called AMA. Hear me out, now. Think about the spec I have just listed. Does that remind you of anything that already exists? It sounds a heck of a lot like the user comments feature. A plugin that just nominates a page and tracks its comments would benefit from WebMention, ActivityPub, and spam filtration as they are already built in (assuming you also use those plugins like I do).

    Okay, smarty pants, how do we do that?

    The page itself would have to have a custom template to skip showing comments. Plus or minus a few mitigations to stop them from showing up on “recent comments”. Other than that, and the post tracking, this is basically just native comments that don’t get published.

    WordPress comments can have a comment type applied to them. If we set a hook that checks the page ID, we can modify incoming comments for that page to take the “ask” type. Then, I imagine there is a filter we can hook to remove that comment type from anything other things do with comments (like display the most recent ones).

    Comment meta is a thing. In there, we can store any extra data such as which post contains the answer, if the ask has been closed, privately replied to (via email), or whatever.

    Pair all that up with an admin page and a site can take asks. Go a step further, and you could probably make that a per-user ask. That’s only one more comment metadata point – user who is being asked. The list filtering for active users might not be screamingly fast but this is low enough use that this should not be a problem.

    I’d want the admin area page to have a button to turn the ask into a post (a simple enough automated copy and paste into a quote).

    In theory, you can then take AMAs via fediverse, WebMention, or onsite. You can use the existing tools to decide who gets to “comment”.

    Could this work?

    Theory is a great place; everything works there. In theory, this is a great idea. Use comments as asks. An idea that could be copied to most any CMS or software. My question now is, would this work?

    Are there any gotchas waiting around the corner that I’d want to know about?

    Please do criticise me on this as much as you feel is necessary.

    Where does this leave us?

    In this post, I looked at a number of ways to implement the AMA “asks” feature of Tumblr. I skipped over WebMentions and similar ideas as not going to work, but came all the way back to, with a little effort, maybe they could.

    What I do know is that WordPress does not have a plugin that I could find to implement this. A modified page template could be a good solution. I can see this needing a custom template per theme to look really nice, but an out-of-the-box page with some custom CSS would probably look okay.

    By reusing existing structures, there would be less work and more features. I’m not going to try coding this myself just yet. Tiredness is kicking my arse right now. I need to have my head on and brain working to do this myself.

    I’d love it if someone else took my idea and made it a thing, but I’ve been around long enough to know that I’ll probably have to do it myself.

    TL;DR: Anything that takes comments could probably be made to take asks with a little faffing about.

    Thoughts?

    I want to know what you think. I thrive on interactions – comments make me happy. In this case, I have a bunch of questions, but any thoughts in your head – please share with me.

    • Are you familiar with Tumblr’s asks?
    • Would you want an AMA on your personal blog or website?
    • Of the things I have explored, which seems to you like a good fit for adding asks?
    • Should I (or some cool geek) make this?
    • Do you wanna take a crack at it yourself?
    • What have I missed?
    • Is there anything I have overlooked?

    Whatever you have to say – let me know. Please reply, mention, or comment – I want to hear from you. (Also share or boost if you are feeling particularly kind.)

    #AMA #asks #blogging #IndieWeb #makeWhatYouNeed #planning #SocialMedia #thinkingThroughAProblem #TumblR #WordPress

    Considerations for adding an AMA feature - The Fantastic Site of Lord Matt

    My initial question was “What is the best way to add some AMA (ask me anything) feature (like on Tumblr) to one or more of my websites?” I’d thought about it for all of ten seconds before I realised that “best” was entirely subjective. If you already know what we are talking about, feel free […]

    The Fantastic Site of Lord Matt

    Okay, “make what you need” might be good for the IndieWeb’s future after all

    I recently made the case that Make what you need might be all wrong for the IndieWeb’s future and then theAdhocracy and made some strong counterpoints. I’d like to explore those counterpoints.

    Just solve the problem

    Make what you need can be stressed as make what you need. Just solve the problem or requirement you have and nothing more.

    don’t try to make an all-singing, all-dancing tool that aims to do everything for everyone: solve the problem you have.

    https://indieweb.social/@theadhocracy/115000006937409982

    That’s totally fair. A good thing that does the one task is better than an okay thing that does what you need and a bunch of stuff you could live without.

    A little Darwinism in the code space is a good thing

    Survival of the best solutions in a space is almost certainly good for all of us. Indeed, as theAdhocracy points out, even more competition and services would be a good thing.

    The community is, after all, working towards that.

    I honestly had not considered this point at all. Sure, we might get a bunch of square wheels, but we will also get rounder wheels and even some good suspension and tires.

    I still have doubts about WebMention spam

    I’ve never seen it, but have encountered people claiming that WebMention spam was the cause for them giving up on the idea. I still suspect this was due to a weak implementation that might not have taken the “confirm link” step. I can’t know that for sure, but it is still my guess.

    Conclusion

    The comments from theAdhocracy contained a lot of truth and were a kind and gentle correction to my not-fully-informed opinion.

    Perhaps “Make what you need” is not such a bad idea after all.

    What I do know for certain is that I was on the receiving end of a great rebuttal. Something that hurts the ego a little but causes growth, increased understanding, and exposure to new ideas. I have benefited from the new ideas I encountered today.

    #IStandCorrected #IndieWeb #makeWhatYouNeed

    Make what you need might be all wrong for the IndieWeb’s future

    IndieWeb has this idea of “scratch your own itch” or “make what you need“. It’s okay in as far as it goes, but I (and I said this at great length before) feel it is wholly incomplete over simple, and, therefore, wrong.

    I get the idea. If I want a cheese sandwich, I should go into the kitchen and make myself a cheese sandwich. Fine. Cool. But I’m not making what I need – I’m assembling the prefabricated parts.

    I did not first have to make a bread knife, and a butter knife, and a plate, and a chopping board. I did not have to bake the bread. I did not have to spend a year or two maturing milk into cheese. I did not build the kitchen or the worktops. In fact, I did not build what I needed at all. I acquired well-made things I needed so that when the time came, I could put the cheese and the bread together in a pleasing shape.

    In the same way, “make what you need” works well when IndieWeb is a frontier wild west of ideas. Where the only ones making the new tools are the ones using those tools and only because those were the only nerds who could make the things.

    We no longer live in the wild west. We live in towns. We go to supermarkets and order pizza delivered to our door.

    I get that dogfooding is the best way to make sure the tools available are the best they can be. I’m not a novice at this. What I am saying is that it is time we started putting together pre-baked bread, already matured cheese, and a sharp knife that works out of the box.

    Early adopters can and should make their own. That’s the innovation scale and space. But there has to come a time when we start embracing pre-sliced bread, cheese someone else made, and all that, without forcing everyone to fire up the forge because you want a sandwich.

    If we want indieweb ideas to go from niche coders doing niche coder things, we need something the next wave of later-early adopters can get to grips with. In such an environment, “make what you need” is not good enough. It has to give way to “make what those around you need” or “make something you can use, but your mum could use too”.

    One example of “make what you need” screwing the pooch is the number of websites that stopped using WebMention because of spam. WebMention should, by its nature, be nearly spam-proof. I would hazard a guess that the roll-your-own WebMention did not follow the step where it confirms the link that forms the core mention.

    When WebMention runs in WordPress, the mention fails if the link is not there. Then the mention, if from an unrecognised blog, is held in a queue to be manually checked. These steps mean that no spam makes it into my blog via WebMention. Via local comments – yeah, loads of spam; but WebMention – never.

    There is an expression in developer circles which is a warning against reinventing the square wheel. By rolling their own, some devs will make an objectively worse version. There might be better versions too; its a wild world out there. The point is, though, rather than reinventing the wheel for each and every website, some battle-hardened, mature, production-ready, tested and true tools and libraries might offer something of an advantage.

    That’s the power of Open Source development. One person makes a thing; a bunch of people use the thing; someone has an idea for a new feature and adds it. I think IndieWeb needs that too. At the very least, “make what you need” should become “adapt what you need; reuse when possible”.

    Check out my longer form post: Let’s talk about making IndieWeb weirder and easier

    #IndieWeb #makeWhatYouNeed #rollYourOwn