We Need To Talk About Feature Upvote

TLDR

We should consider deleting Feature Upvote and transitioning to a Discourse plugin for our feature suggestion and voting needs.

What Am I Talking About?

Simply put, Feature Upvote is a feature suggestion and voting functionality accessible through the status.app website. It allows users to submit ideas and vote on feature requests, providing valuable insight into what our community would like to see developed next. However, the tool has some notable downsides that impact our independence, security, and costs, prompting a need for discussion about its future.

Why Is It a Problem?

There are several reasons why Feature Upvote is no longer suitable for our needs. Let’s break them down.

1. Aligning with Status’ Decentralisation and Open Source Principles

One of Status’ core principles is openness and decentralisation. By removing reliance on an external SaaS product, we are taking an active step toward reducing central points of control and dependency. This shift would serve as a statement that Status prioritises community empowerment and open source solutions, which will resonate a lot better with our user base.

2. Feature Upvote Is a 3rd Party Service

Feature Upvote is a separate service not owned or maintained by Status. While it allows us to quickly set up and manage feature requests, it relies on external hosting and maintenance by https://featureupvote.com/.

By depending on a 3rd party service, we introduce a potential risk factor, as any changes to their policies or availability could impact our ability to use the service. Additionally, it introduces data privacy concerns since we do not fully control the environment where our users’ data is stored and accessed.

3. Feature Upvote Is a Closed Source SaaS Solution

This tool is a closed-source SaaS product, which presents limitations for us as an organisation that values transparency and decentralisation. We cannot self-host it, meaning we have no control over the underlying database or its data handling processes. As part of our website integration, we’re embedding Feature Upvote via an <iframe> from an external domain.

Take a look at the example below:

The <iframe> points to the following url: https://status-desktop.featureupvote.com/

This is a problem because it is inconsistent with our vision of an open, community-driven project. Our reliance on this third-party platform is a step away from transparency and autonomy, which we strive to prioritise.

4. Annual Cost of $1600+ for Feature Upvote

Please see our Application Catalogue for details of our declared costs related to Feature Upvote.

Feature UpVote

The cost of using Feature Upvote is substantial, adding up to over $1600 annually.

While this may be a manageable expense, it’s worth questioning whether we could allocate these funds more effectively, especially when considering alternative open-source or in-house options that would provide us with more control and flexibility.

Here’s a snapshot of their pricing model:

image

Considering that this cost is recurring and does not directly align with our decentralised principles, it is essential to weigh whether we should continue this expenditure or look for a more cost-effective, in-house solution.

5. Data Privacy and Security Concerns

Since Feature Upvote is a closed-source SaaS, there’s limited visibility into how data is handled. By moving to an in-house, open-source solution like Discourse, we can ensure greater privacy controls, giving us full access to log data, analytics, and potential security patches. This is especially relevant in light of data protection regulations and users’ increasing demand for transparency about how their data is used.

6. Integration and Customisation with our Existing Workflows

Feature Upvote, as a separate tool, requires users to adapt to a different interface and set of features that may not fully match the rest of our ecosystem. With a Discourse plugin, we can customise the voting and suggestion process to better align with our community’s workflow, providing a more cohesive and integrated experience. For instance:

  • Voting could tie into Discourse’s existing notification and ranking features.
  • Feature discussions can occur directly within the platform, making it easier for community members to track updates, comments, and related discussions without switching between platforms.

An in-house solution, particularly with open-source tools like Discourse, allows us to adapt and scale the feature suggestion process over time. If new requirements arise (such as tagging features by priority or integrating them into development pipelines), we can make these customisations directly or through plugins

This flexibility would not be available with Feature Upvote, where we are limited to their feature set and update cycle.

7. Enhanced Moderation and Community Standards

Feature voting systems often need strong moderation to ensure the suggestions align with community standards and project goals.

With Discourse, we would have direct control over moderation features and can use existing tools to enforce guidelines, merge duplicate suggestions, and prevent misuse. Moderators would also benefit from centralised tools, rather than having to manage two separate platforms.

8. Encouraging a More Active Community

Since Discourse is already our primary community platform, having a feature suggestion and voting functionality within the same space could boost engagement.

Users may be more likely to participate if they are already familiar with the interface and don’t have to go to a separate tool. It could also increase engagement in other areas of the forum, as users browse, comment, and discuss other threads while voting on features.

See: https://forum.vac.dev/ and https://discuss.status.app/

Proposed Solution: Transition to a Discourse Plugin

Discourse, the forum software we already use for our community discussions, has a number of plugins available that enable feature suggestions and voting capabilities similar to what Feature Upvote offers. By transitioning to a Discourse-based system, we can leverage our existing infrastructure to consolidate feature requests, streamline user interaction, and cut down on costs.

You can see the old feature requests here:

Even without an upvote functionality many open source projects rely on Discourse to provide a discussion space for their community to discuss feature requests:

Other open source projects use Discourse plugins or a custom solution for their self hosted feature management:

Benefits of a Discourse Plugin Solution:

  • Control and Ownership: By hosting everything on our own infrastructure, we would retain full control over the data and the platform’s functionality, ensuring it aligns with Status’ commitment to transparency.
  • Cost Efficiency: Eliminating the recurring $1600+ annual fee would allow us to allocate resources more effectively, potentially funding further development on other important community-driven initiatives.
  • Streamlined User Experience: By keeping feature requests within Discourse, we create a seamless experience for users, eliminating the need to navigate to a separate site or engage with an embedded iframe.
  • Community Moderation and Engagement: Discourse’s moderation tools and community-driven ethos provide a platform where users can engage more deeply in discussions about feature ideas, fostering a richer dialogue.

What Next?

Feature Upvote served us well as a quick solution for collecting community feedback on potential features. However, due to its third-party nature, closed-source model, and associated costs, it does not align with our priorities or principles. Transitioning to a Discourse plugin offers a more transparent, cost-effective, and community-friendly approach that fits well within our mission.

Let’s discuss this proposal further and explore the specific Discourse plugin options that might meet our needs, ensuring a smooth transition for both our community and team.

5 Likes

A little follow up.

We already have a voting mechanism

Now I’m really not sure why we’d use a paid SaaS…

It seems that there is general agreement that we should move back to using our Discourse forum for feature request functionality. In that light, I’ve created this list of tasks:

Migrating to Discuss Feature Request from Feature Upvote

Stage 1: Reactivating Feature Request and Staging

  • Reactivate our Feature Request functionality
    • Move the Feature Request category out of Archive
  • Upgrade our feature voting functionality to allow voting from the list
  • Jo (because only Jo currently has admin power for Feature Upvote… Thankfully he’s still here) to downgrade our Feature Upvote account to a rolling monthly subscription. @JoRain
    • This will give us more time to migrate and phase Feature Upvote out
    • Removed because Jo reports that we can’t do this, also the deadline for resubscription has now passed.
  • Jo to export our Feature Upvote data @JoRain
  • Until we stop using Feature Upvote maintain the admin credentials in BitWarden @siddarthkay @jakubgs
  • Perform a usability test of the new feature voting process
    • Gather feedback from a few community members / CCs to identify pain points
    • Make any minor adjustments based on feedback before launching widely

Provided that the Discourse based feature voting has no unresolved issues, proceed below.

Stage 2: Migration Preparation

  • Recover exported features from Feature Upvote
    • If possible into Discourse
    • If not into GitHub issues
  • Identify all places that Feature Upvote is mentioned:
    • In the website
    • In our Discourse forum
    • In our apps
    • In our designs
  • Develop a process for ongoing feature requests within Discourse
    • Define categories/tags for feature discussions
    • Set up guidelines for community feedback and voting
    • Assign moderators
    • Train moderators on new workflows
  • Prepare comms for updating our community about the correct place to submit feature requests.

Stage 3: Migrate

  • Repoint all instances of Feature Upvote to Discourse:
    • In the website
    • In our Discourse forum
    • In our apps
    • In our designs
  • Review existing feature requests for relevance
    • Filter or merge any duplicate requests
    • Update and/or close the status of older requests, if still relevant
  • Update documentation and FAQ
    • Add a new section on how to use the upgraded feature voting functionality
    • Provide a brief overview of the decision to move from Feature Upvote to Discourse
  • Release prepared comms to community

Stage 4: Clean up

  • Remove Feature Upvote entirely
  • Schedule post-migration review meeting
    • Assess overall satisfaction and any final adjustments needed
    • Create a roadmap for any planned improvements based on feedback

Stage 5: Post-Clean up

  • Investigate integrating Discourse with other relevant platforms
    • Evaluate plugins or APIs to connect Discourse with internal systems
    • Set up notifications or summaries to keep teams informed of popular requests


Feature Request category is now reactivated

See Discourse Central Theme — Meta Pre-Release Out Now! - Theme - Discourse Meta for example of alternative themes.

Additionally made an enquiry with the AnyType forum team for what they use for inline voting. What theme are you using in this forum? - Any Talk - Anytype Community

Filip from AnyType has got in touch and shared what theme component they use

do you think its feasible to somehow bridge these discourse votes into a status community channel? it seems many status users have a hard time finding things like feature upvote, the directory curation dapp or even help articles because theyre all far removed from the place where youd expect to find them: in the app. if they cant find it there they basically assume it doesnt exist and give up then and there.

1 Like

i guess a discord bot could be used to make use of the existing discord bridge in the status community. then it should be pretty straightforward to use discourse rss feeds to advertise all kinds of forum activity into dedicated channels of the status community, perhaps even with @ everyone tags (that users could mute by only muting those channels): Display a Discourse RSS feed in Discord - Integrations - Discourse Meta

1 Like

Hey, I like the idea of engaging the community more in feature discussion and encouraging everyone involved with Status to feel involved in the direction of the project. We really need to make this crucial links visible to the users within the app (desktop and mobile), also we probably should have some kind of helpful links page / article, something that search engines can index and make available.

Maybe this itself should be a feature request.

1 Like

Added inline voting and vote count

I’ve fixed some weird quirks with the plugin and now it seems to be working like you’d expect:

Also see:

I’ve managed to download the data from Feature Upvote. I won’t share the raw files here because they contain IP addresses. I’ll clean them up and I’ll be able to share the data after. Just an update on this.

Migration Source Schema

suggestions.csv

Field Name Type
Suggestion ID Int Key
Title string
Description string
Private Note string
Name string
Email string
Votes Int
Comments Int
Date created Timestamp
Date last upvoted Timestamp
Status string
Status code string
Date last status changed Timestamp
Tags string

votes.csv

Field Name Type
Upvote ID int key
Suggestion ID int foreign key
Name string
Email string
Date created timestamp

comments.csv

Field Name Type
Comment ID Int Key
Suggestion ID Int Foreign Key
Text string
Name string
Email string
Date created Timestamp
Status string

Sample Data For Migration

suggestions.csv

Suggestion ID,Title,Description,Private Note,Name,Email,Votes,Comments,Date created,Date last upvoted,Status,Status code,Date last status changed,Tags
1,"Improve search function","Enhance the forum search to support partial matches and filters.","Mention relevance ranking.","Alice Johnson","[email protected]",5,1,"2024-12-01 14:23:45","2025-01-15 09:12:30","Under Review","UR-001","2025-01-10 08:45:00","search,filtering"
2,"Dark mode option","Add a dark mode toggle for better accessibility at night.","User feedback from accessibility study.","Bob Smith","[email protected]",5,2,"2024-11-20 18:10:22","2025-01-20 15:34:12","Planned","PL-002","2025-01-18 12:00:00","UI,accessibility"
3,"Two-factor authentication","Implement 2FA to improve account security.","Security concerns raised by users.","Charlie Lee","[email protected]",4,1,"2024-10-15 09:30:00","2025-01-25 11:45:55","Completed","CM-003","2025-01-01 14:20:10","security,authentication"
4,"Emoji reactions in comments","Allow users to react to comments using emojis.","Popular request from social media integrations.","Dana White","[email protected]",6,3,"2024-09-28 20:15:38","2025-01-22 10:10:30","In Progress","IP-004","2025-01-19 09:30:00","comments,emoji"
5,"Pinned posts per category","Enable moderators to pin posts within specific categories.","Community moderators requested this feature.","Elliot Carter","[email protected]",5,3,"2024-08-05 14:05:50","2025-01-10 13:22:10","Under Review","UR-005","2025-01-05 07:50:00","moderation,pinned-posts"
6,"Custom user avatars","Allow users to upload their own profile pictures instead of default ones.","Check storage requirements.","Fiona Green","[email protected]",6,1,"2024-07-22 11:05:33","2025-01-14 16:20:45","Planned","PL-006","2025-01-12 10:00:00","profile,avatars,customization"
7,"Threaded replies in comments","Enable nested replies in discussion threads for better conversation flow.","Consider performance impact.","George Baker","[email protected]",5,2,"2024-06-30 08:45:12","2025-01-26 14:50:00","In Progress","IP-007","2025-01-23 18:30:00","comments,threads,UX"
8,"Auto-save drafts","Automatically save drafts while composing posts to prevent loss of content.","Look into browser storage options.","Hannah Wilson","[email protected]",4,2,"2024-09-10 19:55:44","2025-01-18 11:05:29","Planned","PL-008","2025-01-15 09:45:00","drafts,autosave,writing"
9,"Moderator dashboard","Create an admin dashboard with better moderation tools and analytics.","Gather feedback from current moderators.","Isaac Rivera","[email protected]",5,1,"2024-10-05 13:25:09","2025-01-21 10:55:22","Under Review","UR-009","2025-01-17 08:15:00","moderation,admin,analytics"
10,"User badges for engagement","Introduce gamification with badges for user contributions.","Define badge levels and criteria.","Jasmine Patel","[email protected]",5,2,"2024-08-18 15:40:55","2025-01-19 12:34:10","In Progress","IP-010","2025-01-16 14:00:00","badges,gamification,engagement"

votes.csv

Upvote ID,Suggestion ID,Name,Email,Date created
1,3,Alice Johnson,[email protected],2025-01-04 14:23:45
2,1,Bob Smith,[email protected],2025-01-06 09:45:30
3,6,Charlie Lee,[email protected],2025-01-08 11:10:20
4,2,Dana White,[email protected],2025-01-10 16:35:55
5,4,Elliot Carter,[email protected],2025-01-12 13:05:42
6,8,Fiona Green,[email protected],2025-01-14 07:22:18
7,7,George Baker,[email protected],2025-01-16 18:40:25
8,9,Hannah Wilson,[email protected],2025-01-18 10:55:44
9,10,Isaac Rivera,[email protected],2025-01-20 14:15:33
10,5,Jasmine Patel,[email protected],2025-01-22 09:30:00
11,2,Bob Smith,[email protected],2025-01-05 11:12:10
12,6,Alice Johnson,[email protected],2025-01-07 14:45:00
13,9,Charlie Lee,[email protected],2025-01-09 19:22:30
14,1,Fiona Green,[email protected],2025-01-11 06:30:15
15,5,Hannah Wilson,[email protected],2025-01-13 08:10:40
16,4,Bob Smith,[email protected],2025-01-05 12:34:10
17,7,Alice Johnson,[email protected],2025-01-07 14:45:50
18,2,Charlie Lee,[email protected],2025-01-09 19:10:25
19,10,Dana White,[email protected],2025-01-11 08:30:15
20,5,Fiona Green,[email protected],2025-01-13 10:40:30
21,8,Hannah Wilson,[email protected],2025-01-15 16:05:45
22,1,George Baker,[email protected],2025-01-17 18:22:30
23,3,Isaac Rivera,[email protected],2025-01-19 09:55:44
24,6,Jasmine Patel,[email protected],2025-01-20 14:20:33
25,9,Elliot Carter,[email protected],2025-01-22 07:30:00
26,4,Bob Smith,[email protected],2025-01-05 12:34:10
27,7,Alice Johnson,[email protected],2025-01-07 14:45:50
28,2,Charlie Lee,[email protected],2025-01-09 19:10:25
29,10,Dana White,[email protected],2025-01-11 08:30:15
30,5,Fiona Green,[email protected],2025-01-13 10:40:30
31,8,Hannah Wilson,[email protected],2025-01-15 16:05:45
32,1,George Baker,[email protected],2025-01-17 18:22:30
33,3,Isaac Rivera,[email protected],2025-01-19 09:55:44
34,6,Jasmine Patel,[email protected],2025-01-20 14:20:33
35,9,Elliot Carter,[email protected],2025-01-22 07:30:00
36,7,Bob Smith,[email protected],2025-01-05 14:12:10
37,4,Alice Johnson,[email protected],2025-01-06 15:45:00
38,8,Charlie Lee,[email protected],2025-01-08 17:22:30
39,2,Fiona Green,[email protected],2025-01-10 06:30:15
40,5,Hannah Wilson,[email protected],2025-01-12 08:10:40
41,9,Dana White,[email protected],2025-01-14 12:25:10
42,1,Isaac Rivera,[email protected],2025-01-16 13:50:45
43,10,Jasmine Patel,[email protected],2025-01-18 19:30:00
44,3,George Baker,[email protected],2025-01-20 07:22:18
45,6,Elliot Carter,[email protected],2025-01-21 15:40:25
46,2,Bob Smith,[email protected],2025-01-04 09:15:55
47,4,Alice Johnson,[email protected],2025-01-06 14:25:30
48,7,Charlie Lee,[email protected],2025-01-08 18:50:20
49,10,Dana White,[email protected],2025-01-10 11:35:10
50,5,Fiona Green,[email protected],2025-01-12 16:05:40

comments.csv

Comment ID,Suggestion ID,Text,Name,Email,Date created,Status
1,4,"This is a sample comment 1 about suggestion 4.",Alice Johnson,[email protected],2025-01-05 12:34:10,Approved
2,7,"This is a sample comment 2 about suggestion 7.",Bob Smith,[email protected],2025-01-07 14:45:50,Pending
3,2,"This is a sample comment 3 about suggestion 2.",Charlie Lee,[email protected],2025-01-09 19:10:25,Rejected
4,10,"This is a sample comment 4 about suggestion 10.",Dana White,[email protected],2025-01-11 08:30:15,Approved
5,5,"This is a sample comment 5 about suggestion 5.",Fiona Green,[email protected],2025-01-13 10:40:30,Pending
6,8,"This is a sample comment 6 about suggestion 8.",Hannah Wilson,[email protected],2025-01-15 16:05:45,Approved
7,1,"This is a sample comment 7 about suggestion 1.",George Baker,[email protected],2025-01-17 18:22:30,Rejected
8,3,"This is a sample comment 8 about suggestion 3.",Isaac Rivera,[email protected],2025-01-19 09:55:44,Approved
9,6,"This is a sample comment 9 about suggestion 6.",Jasmine Patel,[email protected],2025-01-20 14:20:33,Pending
10,9,"This is a sample comment 10 about suggestion 9.",Elliot Carter,[email protected],2025-01-22 07:30:00,Approved
11,4,"This is a sample comment 11 about suggestion 4.",Bob Smith,[email protected],2025-01-05 14:12:10,Approved
12,7,"This is a sample comment 12 about suggestion 7.",Alice Johnson,[email protected],2025-01-06 15:45:00,Pending
13,8,"This is a sample comment 13 about suggestion 8.",Charlie Lee,[email protected],2025-01-08 17:22:30,Approved
14,2,"This is a sample comment 14 about suggestion 2.",Fiona Green,[email protected],2025-01-10 06:30:15,Rejected
15,5,"This is a sample comment 15 about suggestion 5.",Hannah Wilson,[email protected],2025-01-12 08:10:40,Approved

Current model structure discourse/app/models at main · discourse/discourse · GitHub