Background
For years, we've utilized bots and gadgets to power the annual Community Wishlist Survey, and now the ongoing Community-Wishlist. We have always wanted to have an extension, but went the gadget route in the interest of time. The usual bot/gadget solution is working quite well, albeit with numerous hacks and quirks, and scalability will likely eventually become a problem.
This task is for planning the migration.
Road map
Translations
- T370230: Migrate translations to Community Requests
- This includes any Wikimedia-specific overrides that should go in WikimediaMessages
- T372526: Add CommunityRequests to translatewiki.net
- T372527: Deploy CommunityRequests to Meta
- This would be with nothing other than translations, as agreed to by the Security team at T365525#9998963. This will make on-wiki use of messages easier.
- Any and all other code, if present, should be behind a feature flag that will not be enabled until after the security review
- Update gadget to retrieve messages from the extension and WikimediaMessages (not necessary if gadget is to wholly replaced soon-ish)
- Update templates to use i.e. {{int:communityrequests-message}}
- Remove the "Community Wishlist interface" aggregate message group from the wiki
Extension
Data persistence
The Community Wishlist is to be fully data-driven. We need APIs to build out a proper dashboard, provide pagination, etc. For now we should aim for a mix of both structured data in database, while still having wiki pages be the initial source of the data.
- Redesign schema for MediaWiki, finalized with T387957: Update db schema for wishes to include translations and T388223: New database tables for focus areas
- T393827: Add storage class and value class for wishes
- T387958: Parser tag <wish> to save wish data to db
- T394355: Add Special:WishlistIntake to save and edit wishes
- T387961: New action API endpoint to fetch wish data from database
- T388207: Add <focus-area> parser function to save focus area data
- T388219: Load the voting Vue app on wishes and focus areas
- T388220: Counting votes on voting pages
Presentation
The Vue code doesn't change much between gadget and extension, so this can come last. Ideally most of it will be in place for the security review, but the translations and data persistence are the more important bits because the gadget can be adapted to use APIs.
- Migrate over Vue and other JavaScript. Ideally the intake form would become a Special page.
- Migrate over any on-wiki CSS as needed
- T387962: Add wishes parser function and Vue app to fetch and display wishes on wish index page
- T388216: Add {{#CommunityRequests: focus-area-index}} parser function to populate focus areas index page
Details for QA
As this is a parent task for various other tasks, QA could be done once all it's children of this task are resolved.