No internet connection
  1. Home
  2. Ideas

Turn a category into an Idea tracker: Sort the category by likes and display them in the list view.

By Christian Scheuer @chrscheuer
    2021-07-27 18:52:08.526Z

    Ability to sort a category by likes/votes, so that it can be used as a "feature request / ideas" tracker.

    It would be great if we could let users vote on their ideas by liking the specific thread in our Ideas category here.
    On the category list page, it should then show the number of votes (likes) for each thread, and sort by most likes.
    This should be automatically applied for the whole category for all users.

    https://forum.soundflow.org/latest/ideas

    This would be so that we don't have to move our Ideas section out to something like

    • 24 replies

    There are 24 replies. Estimated reading time: 26 minutes

    1. C
      Christian Scheuer @chrscheuer
        2021-07-27 19:08:39.397Z

        Here's an example of how this looks at Canny:

        https://clickup.canny.io/feature-requests

        1. CChristian Scheuer @chrscheuer
            2021-07-27 19:15:29.966Z

            For this to work, I don't think Talkyard would need to change much. Just:

            • Show likes on category page
            • Sort by likes (most likes up top) for those categories that have turned this on

            Additionally, advanced search would need to work so that we can search on specific categories. Ideally there would be a search bar just for the Ideas category something like Canny are doing it.

            When I go here, I can't select any categories:
            https://forum.soundflow.org/-/search?advanced=true&q=

            1. CChristian Scheuer @chrscheuer
                2021-07-27 19:35:58.130Z

                Also, one other thing that would be crucial - maybe the most important actually for now:

                • Via the API: The ability to have a user add a like to an existing page (the main post), and thereby also have the user subscribe to email notifications from that page.

                If we can do this, we could integrate Talkyard for feature requests within Intercom, so that if users ask for a specific feature that we don't have yet, it's just 1 button press to have their forum user add the like and start getting notifications :)

            2. In reply tochrscheuer:
              KajMagnus @KajMagnus2021-07-28 12:00:54.579Z2021-07-28 12:08:05.875Z

              This is a great idea I think.

              I don't think Talkyard would need to change much

              I agree

              Sort by likes (most likes up top)

              That'd be like votes on the Original Post, right   (but ignoring like votes on replies inside the discussion about the feature idea)

              B.t.w. one alternative approach is to have dedicated Up and Down feature vote buttons, like at StackOverflow and Reddit. — in addition to the Like button. They'd be for the Original Post only, and, optionally, one could click such Upvote buttons directly from the feature ideas list (the idea tracking category page).

              The ability to have a user add a like to an existing page (the main post), and thereby also have the user subscribe to email notifications from that page

              That shouldn't be so much work. Writing the e2e tests, probably would take most of the time.

              we could integrate Talkyard for feature requests within Intercom

              That sounds great

              advanced search would need to work so that we can search on specific categories

              Ok

              I'm finishing auto tests for an off-topic feature (namely many embedded comments iframes at the same time on the same page)
              — after that, seems it's time to look into this, and user badges & page tags. (Not sure which order)

              1. CChristian Scheuer @chrscheuer
                  2021-07-28 20:29:09.321Z

                  This is a great idea I think.

                  AWESOME :)

                  That'd be like votes on the Original Post, right (but ignoring like votes on replies inside the discussion about the feature idea)

                  Yea exactly.

                  B.t.w. one alternative approach is to have dedicated Up and Down feature vote buttons, like at StackOverflow and Reddit. — in addition to the Like button. They'd be for the Original Post only, and, optionally, one could click such Upvote buttons directly from the feature ideas list (the idea tracking category page).

                  That also makes sense.. But IMO we wouldn't really need downvote ability for ideas. I like it better that there's a single action that can be done (ie. like on original post = upvote).
                  We're not really interested in people who think an idea is bad. They shouldn't count against people who like the idea. The only thing that matters is how many people like an idea, so I personally like better the simple approach of just using the existing "like" feature.

                  One thing you could do for ideas was to just change the graphic for a normal like to an UPVOTE graphic. I think that would be super helpful. But I would keep it as the same data. Much like you did for allowing more than one type of pages to have solutions, etc.

                  1. CChristian Scheuer @chrscheuer
                      2021-07-28 21:09:26.330Z

                      this, and user badges & page tags. (Not sure which order)

                      For us, if we could get the API to add a user's like + page-subscription (so they'll receive notifications) that would be the 1st priority.
                      The reason is that we expect huge growth this fall+winter and so we'll need to automate how we deal with feedback from customers.
                      If a customer suggests an idea/feature that somebody else already suggested, it would be nice to subscribe them to that post straight from our support system (Intercom).
                      This would help us retain a lot more of those new customers, so would have a direct positive impact on our bottom line :)

                      UI for upvotes, searching and sorting could come later (as we can already take that info into ClickUp).

                      User badges can be worked around by using the SF logo as the avatar image (what we're doing now), and page tags is a massive feature.

                      1. add a user's like + page-subscription

                        What about something like:

                        POST /-/v0/batch-do {
                          batchDo: {
                            actionList: [
                              doAction: {
                                asWho: 'tyid:_' | 'extid:_' | 'ssoid:_' | 'username:_',
                                doWhat: 'Vote',
                                voteWhat: 'Like',
                                whichPost: { postId: _ } | { pageId: _, postNr: 1 },  // 1 = Orig Post
                              },
                              doAction: {
                                asWho: _
                                doWhat: 'SetNotfLevel',
                                whatLevel: 'NewReplies' | 'StatusChange' | 'WhenDone' | ...,
                                whichPage: { pageId: _ },
                              },
                            ],
                          }
                        }
                        
                        

                        In the same spirit as the /-/v0/list and /-/v0/get and /-/v0/search APIs. There'd be a /-/v0/batch-query too, some time later.

                        The tag-along request — then there could be a doAction { doWhat: 'SubmitPost' , asWho: _, sourceText: _ }. — I actually think the current API, /-/v0/upsert-simple, would have been better, if implemented in this way. Then it's clear that it's something new getting done now, and notifications should get generated, rather than contents getting imported.

                        So, I'm thinking, /-/v0/do and /-/v0/batch-do for things getting done now real time, and /-/v0/import for importing things and not doing anything else (e.g. not generating any notifications).

                        I personally like better the simple approach of just using the existing "like" feature.

                        I think so too.

                        1. Christian @chrscheuer now Liking and Subscribing to pages via the new Do API has been implemented, see:
                          How to Like and Subscribe to Pages via the API

                          1. CChristian Scheuer @chrscheuer
                              2021-10-06 09:59:50.329Z

                              Thanks!

                              @KajMagnus I'm testing integration with the upsert-simple API right now, where I have an existing Talkyard page with a talkyard ID,
                              but I can't seem to figure out how to refer to a Talkyard-type ID for the page in the pageRef. What's the prefix I need to use here?

                              This complains it doesn't know the prefix "talkyard:" for the "pageRef" property

                              1. CChristian Scheuer @chrscheuer
                                  2021-10-06 10:05:30.753Z

                                  Never mind, found out it is "tyid:" :)

                                  However, when I try to use the MetaMessage (postType 31) it says I can't create Meta Messages via the API yet. It's cool, I'll just do the integration for now impersonating a user, but it would be great to have this working for our integrations :)

                                  1. CChristian Scheuer @chrscheuer
                                      2021-10-06 10:36:25.592Z

                                      Created a "bot" user, this works well too:

                                      Is there any way to add a tag to a page via the API?

                                      1. Ok, nice with a bot user :- )   Tags via API — not yet, I can add. Can you write a bit about the use case(s)?

                                        Some thoughts:

                                        • I'm thinking each tag type might need an external-id, so the SF – Ty add-tags integration won't break, if one day you decide to rename the tag type (then, the ext-id would stay the same).
                                        • I wonder if you'd like to add mostly the same tag(s) all the time, after you've created the tag types once manually via the tags UI?
                                          (the tags & badges UI is at /-/tags — it's mostly unimplemented)
                                        • I suppose you'd also need to remove tags, via the API, sometimes (if tagging the wrong post).
                                        • You'd like to tag pages that already exist, or new pages when you're creating them? (or both?)
                                        • Maybe instead of adding tags, sometimes you'd like to "specify" tags, I mean, send a list of precisely what tags a page should have, and thereafter it'll have exactly those tags. (Old "incorrect" tags would get removed, new created, as needed.)
                                        1. CChristian Scheuer @chrscheuer
                                            2021-10-08 12:15:42.145Z

                                            nice with a bot user

                                            Yea. It's pretty cool with that new API to create posts. I'm sure we'll get a lot of cool stuff out of it.

                                            I'm thinking each tag type might need an external-id, so the SF – Ty add-tags integration won't break, if one day you decide to rename the tag type (then, the ext-id would stay the same).

                                            That's a good point. I like the way you have external ids for everything and are using refs. It's

                                            I wonder if you'd like to add mostly the same tag(s) all the time, after you've created the tag types once manually via the tags UI?
                                            (the tags & badges UI is at /-/tags — it's mostly unimplemented)

                                            Yea a good question too.
                                            The first thing is we have a "Tracked in Linear" tag that we'd like to apply to pages where we have synced that page up with Linear.
                                            By having a tag on the page it allows us to see in our "Support" and "Bugs" categories which pages have already been synced and which we could take a closer look at.
                                            Side note: For now we actually like that our selection process of what gets created in Linear is semi-manual, as it allows us to keep noise out of Linear. (So this means webhooks are slightly less important)

                                            I do think that over time, adding tags more dynamically (ie. all sorts of dynamically created tags, for example based off of the content / subject / context of a post from a user) could be good. But that's not in our short term goals.

                                            You'd like to tag pages that already exist, or new pages when you're creating them? (or both?)

                                            Both, but as a starting point I'd love to have it in the upsert-simple API for patching pages (ie. tag a page that already exists).
                                            I don't remember if that API also allows us to change the status of a page (ie. close it), that would be equally important.

                                            Maybe instead of adding tags, sometimes you'd like to "specify" tags, I mean, send a list of precisely what tags a page should have, and thereafter it'll have exactly those tags. (Old "incorrect" tags would get removed, new created, as needed.)

                                            Ah yea, great point. Yea I know how things like this can be hard to define in a good way in an API.
                                            Stripe deals with this by making you pass a "deleted" flag on each item it should delete when you run an update towards an entity. So we'd send you a page object with { tags: [ { tagRef: 'extid:tag1' , deleted: true }, { tagRef: 'extid:tag2' } ]
                                            Not sure if there's a good API design that allows to both "reset" like you suggest and to add/remove like the Stripe API does.

                                            Generally though, I'd say if we get an API to fetch a page first, including all posts and tags, then we would know all existing values so it'd be easier to construct the "final set of tags" from that.

                            • In reply toKajMagnus:
                              @Mr.Nobody
                                2021-08-17 17:05:06.185Z2021-08-17 17:55:07.256Z

                                @KajMagnus I am also looking for this feature. However, please don't add multiple types of reactions to the same post. It would be bad if some users use regular likes, while others are using the upvote feature at the same time, since this would spread votes between both reaction systems and not display the true total number of votes anymore.

                                You could have both options, but not both options at the same time.

                                • Either use the normal "likes"
                                • Or use the Upvote/Downvote option

                                And yes, please add a column to the posts list view showing the total number of likes or upvotes a topic has received.

                                Edit: for me it would be fine to have this enabled for the whole forum, not just in one category. I am not sure if this would have to be limited per category, I would not mind if it was a global setting (if that makes it easier to implement/maintain).

                                1. Hi @Mr.Nobody, thanks for the feedback. I've implemented the Likes only approach this far (new server version later this week most likely).

                                  You could have both options, but not both options at the same time.

                                  What do you think about Up- and Downvotes for an idea itself (the "topic" / "page" / "Original Post"), but no Like votes. And Like votes for the replies? (a.k.a. "comments")

                                  When you wrote "Either ... Or ...", did you mean either 1) only Likes for both pages and replies, or 2) only Up/Down for both pages and replies? Or did you have only the Original Post / Page / Topic in mind? (Hmm maybe this sounded confusing. With "Post", do you mean a new page, or also replies?)

                                  And add a column to the posts list view showing the total number of likes

                                  Yes (implemented already :- ))

                                  Edit: and I would have this enabled everywhere, not just in one category

                                  Hmm. You'll be able to choose, I think. Currently, this is per category. At the same time, Talkyard is going to have category settings inheritance (not implemented yet though), and then, if you enable this on the root category (not yet possible though), it'll be for the whole forum. — So you can choose, if it'll be for the whole forum, or only for specific categories (& sub cats).

                                  This feature also changes the default sort order, to Popular First — which might not be suitable for other categories, e.g. Problems, or, say, Announcements or Meeting Notes — then I suppose Recent First is usually better.

                                  1. @Mr.Nobody
                                      2021-08-17 19:01:42.211Z

                                      I think that all sounds pretty good, can't wait to see that :)

                                      What do you think about Up- and Downvotes for an idea itself (the "topic" / "page" / "Original Post"), but no Like votes. And Like votes for the replies? (a.k.a. "comments")

                                      hm... I honestly don't know what is best there. Personally I plan to use the topics/original posts more as questions, and let users reply with their opinions and vote on each opinion:

                                      Should we change the color, and to which? (7 votes)

                                      • I want green (3 votes)
                                      • I want yellow (5 votes)

                                      This leads to less duplicate content than having 2 separate topics:

                                      • I want green (3 votes)
                                      • I want yellow (5 votes)

                                      When you wrote "Either ... Or ...", did you mean either 1) only Likes for both pages and replies, or 2) only Up/Down for both pages and replies? Or did you have only the Original Post / Page / Topic in mind? (Hmm maybe this sounded confusing. With "Post", do you mean a new page, or also replies?)

                                      I was meaning to use the same system everywhere, in both topics/original-posts and comments/replies. To not confuse users in how to use the webpage:

                                      • on the topic itself (the main post/thread) and use it to sort posts by most popular ones;
                                      • and also on the comments, to sort comments by popularity, in sync with the option in the settings.

                                      It could be 2 separate settings: one for the threads and another one for the comments inside threads, but I feel like this could confuse newcomers to the forum.

                                      But your idea could also work be fine, as long as both options aren't enabled at the same time.

                                      • companies want to sort posts by most voted/liked, and by having 2 different reaction types this can break the counter if some people like the post and others upvote it;
                                      • and (not directly related, but interesting) the main reason why Facebook is failing so bad in recent years is that they enabled "reactions" to posts without changing their algorithm: now users can react with "angry" or "cry", and it still counts as an interaction, which still organically moves that post or comment higher up in priority. This makes hate speech and bad content to be spread virally, since it is usually easier to have people collectively disagreeing on something than users agreeing on something. This has to be avoided at all costs IMO.

                                      Last point: did you think about having a way to display results by trust levels and/or user groups? Something like:

                                      • topic has 100 votes
                                      • 5 from trusted users
                                      • 95 from new users

                                      This could help companies prioritize topics that have many votes from paying customers over free users, and could also avoid users creating additional accounts to manipulate votes (it could, for example, display votes from new accounts but not count them to the total when sorting topics).

                                      Sorry for the long reply, hope it helps :)

                                2. In reply tochrscheuer:

                                  This now started

                                  1. CChristian Scheuer @chrscheuer
                                      2021-08-06 08:17:38.061Z

                                      Wohooo!!

                                      1. CChristian Scheuer @chrscheuer
                                          2021-08-06 08:18:51.958Z

                                          I have a tag-along request to this, which will help us when integrating Ty with other systems:

                                          1. CChristian Scheuer @chrscheuer
                                              2021-08-25 19:46:10.361Z

                                              Just noticed this was out already! Amazing news :) It's so cool! Thank you Magnus!!

                                              1. Ok :- )   I'm adding a to-do reply below, to try to remember the 3 remaining things to do ...

                                        • C
                                          In reply tochrscheuer:
                                          Christian Scheuer @chrscheuer
                                            2021-08-06 08:48:36.787Z

                                            Tracked as SF-55

                                            1. In reply tochrscheuer:

                                              3 more things to do:

                                              1. CChristian Scheuer @chrscheuer
                                                  2021-08-27 20:31:39.471Z

                                                  Looks great for remaining things. I forget if searching in a single category is possible already? If not, I would add that to the todolist (this would be useful in many scenarios)

                                                • Progress
                                                  with doing this idea
                                                • @KajMagnus marked this topic as Planned 2021-07-28 12:58:48.621Z.
                                                • @KajMagnus marked this topic as Started 2021-08-05 09:55:54.502Z.