Wikimania Scholarships app/Backlog

Unfinished stories/requirements for the Wikimania Scholarship app.

Backlog
Items in the backlog have been prioritized by the product owner and are ready for grooming by the team and selection for inclusion in an increment.

Icebox
The icebox is a holding queue for items that have been suggested for possible inclusion in a future increment but have not yet been prioritized by the product owner.

Unfulfilled Requirements

 * All countries must have an associated region
 * Allow Applicants to select wikis from a dropdown or autocomplete
 * Allow Applicants to list multiple wikis that they contribute to
 * Allow Admins to assign reviewers to regions where they are responsible for reviewing all applications
 * Allow Admins to set the active review phase
 * Allow Admins to set weighting factors for review criteria
 * Allow Admins to set number of spam votes needed to disqualify an application from further review
 * Allow Admins to export applicant information and reviewer scores for external processing
 * Allow Admins to import historic applicant information and grant status
 * Allow Reviewers to search historic applicant information for matches based on a given application

Known bugs

 * The "Previous" link in the review interface always points to the current application under review
 * An exception during the error handler process will cause the user to see an undecorated Apache 500 error page
 * If the template cache directory isn't writable the user sees a blank page

Nice to have

 * Allow Admins to record the final score and decision for an application
 * Allow Admins to archive final status of application to historic applicant table
 * Allow Admins to set application period start/end time
 * Allow Admins to edit country/region information

Technical debt
Technical debt is typically non-requirements related code and infrastructure improvements that the team feels would make the product easier to maintain or extend. The development team should propose any high priority issues here for inclusion in an increment during sprint planning/backlog grooming. The team should also look at this list when selecting work for a given sprint to see if there is tech debt that can/should be included based on the sprint goal.


 * Country/region information updates needed
 * Use ISO country codes instead of a random numeric id to reference countries
 * Include all ISO countries in country list
 * Use ISO standardized naming for countries


 * Error and logging enhancements
 * Expose global logger to form, dao, etc in a reasonable way (DI?)
 * Add logging for errors and warnings


 * Testing enhancements
 * We should have at least a happy path round trip test for filling out an application


 * Production hardening
 * Find out if it is the app's responsibility to ensure that php.ini is setting up sessions securely (good hash, http-only, etc)


 * UI/UX enhancements
 * Css and markup could be cleaned up (bootstrap?)
 * Navigation for reviewers is confusing
 * Create a basic "grid display" controller that handles the plumbing for paging and displaying results (and sorting?)


 * Additional SQL query cleanup is needed.
 * There is a lot of cut-n-paste subquery code
 * Hardcoded constants in scoring formulas seem problematic for tweaking models
 * A few string concatenations remain in the query builder


 * Auth layer is barely implemented. Authentication is handled reasonably well but authorization is ad hoc and fragile.
 * This may be better with most recent changes, but likely is not complete. Need to better understand the required privilege classes.
 * Should be more clear after establishing the reviewed workflow


 * Configuration improvements
 * Don't use apache conf to set env vars. Jeremyb says nothing does that on prod cluster and he's not a fan.
 * Eliminate Wikimania\Scholarship\Config and use dependency injection via the Slim container to configure everything


 * Replacement/requirements for bulk mail functionality
 * Note: This epic may not be needed if WMF/Scholarship Committee have access to external bulk mailers and can export lists of names/emails
 * Legacy code for this was ... less than ideal (eg manual editing of php source to put the template message in, no send rate limit).
 * It also looks like every year they invented a new way to decide which applications should get which message.


 * Localization issues
 * Note: This epic may not be needed as Jessie has said that L10n is not needed by the app at all.
 * Make sure l10n files and workflow is compatible with translatewiki
 * Make language choice sticky via session storage of selected language
 * Add l10n of country names for application form
 * Create Twig filter/function to handle string localization
 * Localize user facing error pages (fatal, 404)